feat: add ppid data approval
This commit is contained in:
parent
7a152d330e
commit
1163fd1329
|
|
@ -0,0 +1,7 @@
|
|||
package entity
|
||||
|
||||
type MasterApprovalStatuses struct {
|
||||
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
|
||||
Name string `json:"name" gorm:"type:varchar"`
|
||||
IsActive bool `json:"is_active" gorm:"type:bool"`
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package entity
|
||||
|
||||
import "time"
|
||||
|
||||
type PpidDataApprovalHistories struct {
|
||||
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
|
||||
Message string `json:"message" gorm:"type:varchar"`
|
||||
ApprovalStatusId int `json:"approval_status_id" gorm:"type:int4"`
|
||||
PpidDataId int `json:"ppid_data_id" gorm:"type:int4"`
|
||||
ApprovalBy int `json:"approval_by" gorm:"type:int4"`
|
||||
ApprovalAtLevel int `json:"approval_at_level" gorm:"type:int4"`
|
||||
IsActive bool `json:"is_active" gorm:"type:bool"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
@ -3,18 +3,21 @@ package entity
|
|||
import "time"
|
||||
|
||||
type PpidDatas struct {
|
||||
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
|
||||
Title string `json:"title" gorm:"type:varchar"`
|
||||
Description string `json:"description" gorm:"type:varchar"`
|
||||
Slug string `json:"slug" gorm:"type:varchar"`
|
||||
CategoryId uint `json:"category_id" gorm:"type:int4"`
|
||||
CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
|
||||
LevelGroupId *int `json:"level_group_id" gorm:"type:int4"`
|
||||
Group *string `json:"group" gorm:"type:varchar"`
|
||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
||||
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
|
||||
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
|
||||
Title string `json:"title" gorm:"type:varchar"`
|
||||
Description string `json:"description" gorm:"type:varchar"`
|
||||
Slug string `json:"slug" gorm:"type:varchar"`
|
||||
CategoryId uint `json:"category_id" gorm:"type:int4"`
|
||||
CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
|
||||
LevelGroupId *int `json:"level_group_id" gorm:"type:int4"`
|
||||
Group *string `json:"group" gorm:"type:varchar"`
|
||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
||||
NeedApprovalFrom *int `json:"need_approval_from" gorm:"type:int4"`
|
||||
BackApprovalTo *int `json:"back_approval_to" gorm:"type:int4"`
|
||||
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
|
||||
PublishLevel *int `json:"publish_level" gorm:"type:int4"`
|
||||
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
package seeds
|
||||
|
||||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type MasterApprovalStatusesSeeder struct{}
|
||||
|
||||
var masterApprovalStatuses = []entity.MasterApprovalStatuses{
|
||||
{
|
||||
ID: 1,
|
||||
Name: "Accepted",
|
||||
IsActive: true,
|
||||
},
|
||||
{
|
||||
ID: 2,
|
||||
Name: "Need Update",
|
||||
IsActive: true,
|
||||
},
|
||||
{
|
||||
ID: 3,
|
||||
Name: "Rejected",
|
||||
IsActive: true,
|
||||
},
|
||||
}
|
||||
|
||||
func (MasterApprovalStatusesSeeder) Seed(conn *gorm.DB) error {
|
||||
for _, row := range masterApprovalStatuses {
|
||||
if err := conn.Create(&row).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (MasterApprovalStatusesSeeder) Count(conn *gorm.DB) (int, error) {
|
||||
var count int64
|
||||
if err := conn.Model(&entity.MasterApprovalStatuses{}).Count(&count).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return int(count), nil
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package controller
|
||||
|
||||
import "go-humas-be/app/module/ppid_data_approval_histories/service"
|
||||
|
||||
type Controller struct {
|
||||
PpidDataApprovalHistories PpidDataApprovalHistoriesController
|
||||
}
|
||||
|
||||
func NewController(PpidDataApprovalHistoriesService service.PpidDataApprovalHistoriesService) *Controller {
|
||||
return &Controller{
|
||||
PpidDataApprovalHistories: NewPpidDataApprovalHistoriesController(PpidDataApprovalHistoriesService),
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,181 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/request"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/service"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strconv"
|
||||
|
||||
utilRes "go-humas-be/utils/response"
|
||||
utilVal "go-humas-be/utils/validator"
|
||||
)
|
||||
|
||||
type ppidDataApprovalHistoriesController struct {
|
||||
ppidDataApprovalHistoriesService service.PpidDataApprovalHistoriesService
|
||||
}
|
||||
|
||||
type PpidDataApprovalHistoriesController interface {
|
||||
All(c *fiber.Ctx) error
|
||||
Show(c *fiber.Ctx) error
|
||||
Save(c *fiber.Ctx) error
|
||||
Update(c *fiber.Ctx) error
|
||||
Delete(c *fiber.Ctx) error
|
||||
}
|
||||
|
||||
func NewPpidDataApprovalHistoriesController(ppidDataApprovalHistoriesService service.PpidDataApprovalHistoriesService) PpidDataApprovalHistoriesController {
|
||||
return &ppidDataApprovalHistoriesController{
|
||||
ppidDataApprovalHistoriesService: ppidDataApprovalHistoriesService,
|
||||
}
|
||||
}
|
||||
|
||||
// All get all PpidDataApprovalHistories
|
||||
// @Summary Get all PpidDataApprovalHistories
|
||||
// @Description API for getting all PpidDataApprovalHistories
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /ppid-data-approval-histories [get]
|
||||
func (_i *ppidDataApprovalHistoriesController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var req request.PpidDataApprovalHistoriesQueryRequest
|
||||
req.Pagination = paginate
|
||||
|
||||
ppidDataApprovalHistoriesData, paging, err := _i.ppidDataApprovalHistoriesService.All(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Messages: utilRes.Messages{"PpidDataApprovalHistories list successfully retrieved"},
|
||||
Data: ppidDataApprovalHistoriesData,
|
||||
Meta: paging,
|
||||
})
|
||||
}
|
||||
|
||||
// Show get one PpidDataApprovalHistories
|
||||
// @Summary Get one PpidDataApprovalHistories
|
||||
// @Description API for getting one PpidDataApprovalHistories
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Param id path int true "PpidDataApprovalHistories ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /ppid-data-approval-histories/:id [get]
|
||||
func (_i *ppidDataApprovalHistoriesController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ppidDataApprovalHistoriesData, err := _i.ppidDataApprovalHistoriesService.Show(uint(id))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Messages: utilRes.Messages{"PpidDataApprovalHistories successfully retrieved"},
|
||||
Data: ppidDataApprovalHistoriesData,
|
||||
})
|
||||
}
|
||||
|
||||
// Save create PpidDataApprovalHistories
|
||||
// @Summary Create PpidDataApprovalHistories
|
||||
// @Description API for create PpidDataApprovalHistories
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Body request.PpidDataApprovalHistoriesCreateRequest
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /ppid-data-approval-histories [post]
|
||||
func (_i *ppidDataApprovalHistoriesController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.PpidDataApprovalHistoriesCreateRequest)
|
||||
if err := utilVal.ParseAndValidate(c, req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err := _i.ppidDataApprovalHistoriesService.Save(*req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Messages: utilRes.Messages{"PpidDataApprovalHistories successfully created"},
|
||||
})
|
||||
}
|
||||
|
||||
// Update update PpidDataApprovalHistories
|
||||
// @Summary update PpidDataApprovalHistories
|
||||
// @Description API for update PpidDataApprovalHistories
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Body request.PpidDataApprovalHistoriesUpdateRequest
|
||||
// @Param id path int true "PpidDataApprovalHistories ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /ppid-data-approval-histories/:id [put]
|
||||
func (_i *ppidDataApprovalHistoriesController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
req := new(request.PpidDataApprovalHistoriesUpdateRequest)
|
||||
if err := utilVal.ParseAndValidate(c, req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = _i.ppidDataApprovalHistoriesService.Update(uint(id), *req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Messages: utilRes.Messages{"PpidDataApprovalHistories successfully updated"},
|
||||
})
|
||||
}
|
||||
|
||||
// Delete delete PpidDataApprovalHistories
|
||||
// @Summary delete PpidDataApprovalHistories
|
||||
// @Description API for delete PpidDataApprovalHistories
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Param id path int true "PpidDataApprovalHistories ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /ppid-data-approval-histories/:id [delete]
|
||||
func (_i *ppidDataApprovalHistoriesController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = _i.ppidDataApprovalHistoriesService.Delete(uint(id))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Messages: utilRes.Messages{"PpidDataApprovalHistories successfully deleted"},
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package mapper
|
||||
|
||||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
res "go-humas-be/app/module/ppid_data_approval_histories/response"
|
||||
)
|
||||
|
||||
func PpidDataApprovalHistoriesResponseMapper(ppidDataApprovalHistoriesReq *entity.PpidDataApprovalHistories) (ppidDataApprovalHistoriesRes *res.PpidDataApprovalHistoriesResponse) {
|
||||
if ppidDataApprovalHistoriesReq != nil {
|
||||
ppidDataApprovalHistoriesRes = &res.PpidDataApprovalHistoriesResponse{
|
||||
ID: ppidDataApprovalHistoriesReq.ID,
|
||||
Message: ppidDataApprovalHistoriesReq.Message,
|
||||
ApprovalStatusId: ppidDataApprovalHistoriesReq.ApprovalStatusId,
|
||||
PpidDataId: ppidDataApprovalHistoriesReq.PpidDataId,
|
||||
ApprovalBy: ppidDataApprovalHistoriesReq.ApprovalBy,
|
||||
ApprovalAtLevel: ppidDataApprovalHistoriesReq.ApprovalAtLevel,
|
||||
IsActive: ppidDataApprovalHistoriesReq.IsActive,
|
||||
CreatedAt: ppidDataApprovalHistoriesReq.CreatedAt,
|
||||
UpdatedAt: ppidDataApprovalHistoriesReq.UpdatedAt,
|
||||
}
|
||||
}
|
||||
return ppidDataApprovalHistoriesRes
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package ppid_data_approval_histories
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/controller"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/repository"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/service"
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
|
||||
// struct of PpidDataApprovalHistoriesRouter
|
||||
type PpidDataApprovalHistoriesRouter struct {
|
||||
App fiber.Router
|
||||
Controller *controller.Controller
|
||||
}
|
||||
|
||||
// register bulky of PpidDataApprovalHistories module
|
||||
var NewPpidDataApprovalHistoriesModule = fx.Options(
|
||||
// register repository of PpidDataApprovalHistories module
|
||||
fx.Provide(repository.NewPpidDataApprovalHistoriesRepository),
|
||||
|
||||
// register service of PpidDataApprovalHistories module
|
||||
fx.Provide(service.NewPpidDataApprovalHistoriesService),
|
||||
|
||||
// register controller of PpidDataApprovalHistories module
|
||||
fx.Provide(controller.NewController),
|
||||
|
||||
// register router of PpidDataApprovalHistories module
|
||||
fx.Provide(NewPpidDataApprovalHistoriesRouter),
|
||||
)
|
||||
|
||||
// init PpidDataApprovalHistoriesRouter
|
||||
func NewPpidDataApprovalHistoriesRouter(fiber *fiber.App, controller *controller.Controller) *PpidDataApprovalHistoriesRouter {
|
||||
return &PpidDataApprovalHistoriesRouter{
|
||||
App: fiber,
|
||||
Controller: controller,
|
||||
}
|
||||
}
|
||||
|
||||
// register routes of PpidDataApprovalHistories module
|
||||
func (_i *PpidDataApprovalHistoriesRouter) RegisterPpidDataApprovalHistoriesRoutes() {
|
||||
// define controllers
|
||||
ppidDataApprovalHistoriesController := _i.Controller.PpidDataApprovalHistories
|
||||
|
||||
// define routes
|
||||
_i.App.Route("/ppid-data-approval-histories", func(router fiber.Router) {
|
||||
router.Get("/", ppidDataApprovalHistoriesController.All)
|
||||
router.Get("/:id", ppidDataApprovalHistoriesController.Show)
|
||||
router.Post("/", ppidDataApprovalHistoriesController.Save)
|
||||
router.Put("/:id", ppidDataApprovalHistoriesController.Update)
|
||||
router.Delete("/:id", ppidDataApprovalHistoriesController.Delete)
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"go-humas-be/app/database"
|
||||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/request"
|
||||
"go-humas-be/utils/paginator"
|
||||
)
|
||||
|
||||
type ppidDataApprovalHistoriesRepository struct {
|
||||
DB *database.Database
|
||||
}
|
||||
|
||||
// PpidDataApprovalHistoriesRepository define interface of IPpidDataApprovalHistoriesRepository
|
||||
type PpidDataApprovalHistoriesRepository interface {
|
||||
GetAll(req request.PpidDataApprovalHistoriesQueryRequest) (ppidDataApprovalHistoriess []*entity.PpidDataApprovalHistories, paging paginator.Pagination, err error)
|
||||
FindOne(id uint) (ppidDataApprovalHistories *entity.PpidDataApprovalHistories, err error)
|
||||
Create(ppidDataApprovalHistories *entity.PpidDataApprovalHistories) (err error)
|
||||
Update(id uint, ppidDataApprovalHistories *entity.PpidDataApprovalHistories) (err error)
|
||||
Delete(id uint) (err error)
|
||||
}
|
||||
|
||||
func NewPpidDataApprovalHistoriesRepository(db *database.Database) PpidDataApprovalHistoriesRepository {
|
||||
return &ppidDataApprovalHistoriesRepository{
|
||||
DB: db,
|
||||
}
|
||||
}
|
||||
|
||||
// implement interface of IPpidDataApprovalHistoriesRepository
|
||||
func (_i *ppidDataApprovalHistoriesRepository) GetAll(req request.PpidDataApprovalHistoriesQueryRequest) (ppidDataApprovalHistoriess []*entity.PpidDataApprovalHistories, paging paginator.Pagination, err error) {
|
||||
var count int64
|
||||
|
||||
query := _i.DB.DB.Model(&entity.PpidDataApprovalHistories{})
|
||||
query.Count(&count)
|
||||
|
||||
req.Pagination.Count = count
|
||||
req.Pagination = paginator.Paging(req.Pagination)
|
||||
|
||||
err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&ppidDataApprovalHistoriess).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
paging = *req.Pagination
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesRepository) FindOne(id uint) (ppidDataApprovalHistories *entity.PpidDataApprovalHistories, err error) {
|
||||
if err := _i.DB.DB.First(&ppidDataApprovalHistories, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return ppidDataApprovalHistories, nil
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesRepository) Create(ppidDataApprovalHistories *entity.PpidDataApprovalHistories) (err error) {
|
||||
return _i.DB.DB.Create(ppidDataApprovalHistories).Error
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesRepository) Update(id uint, ppidDataApprovalHistories *entity.PpidDataApprovalHistories) (err error) {
|
||||
return _i.DB.DB.Model(&entity.PpidDataApprovalHistories{}).
|
||||
Where(&entity.PpidDataApprovalHistories{ID: id}).
|
||||
Updates(ppidDataApprovalHistories).Error
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesRepository) Delete(id uint) error {
|
||||
return _i.DB.DB.Delete(&entity.PpidDataApprovalHistories{}, id).Error
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
package request
|
||||
|
||||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/utils/paginator"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PpidDataApprovalHistoriesGeneric interface {
|
||||
ToEntity()
|
||||
}
|
||||
|
||||
type PpidDataApprovalHistoriesQueryRequest struct {
|
||||
Message string `json:"message" validate:"required"`
|
||||
ApprovalStatusId int `json:"approval_status_id" validate:"required"`
|
||||
PpidDataId int `json:"ppid_data_id" validate:"required"`
|
||||
ApprovalBy int `json:"approval_by" validate:"required"`
|
||||
ApprovalAtLevel int `json:"approval_at_level" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
}
|
||||
|
||||
type PpidDataApprovalHistoriesCreateRequest struct {
|
||||
Message string `json:"message" validate:"required"`
|
||||
ApprovalStatusId int `json:"approval_status_id" validate:"required"`
|
||||
PpidDataId int `json:"ppid_data_id" validate:"required"`
|
||||
ApprovalBy int `json:"approval_by" validate:"required"`
|
||||
ApprovalAtLevel int `json:"approval_at_level" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
}
|
||||
|
||||
func (req PpidDataApprovalHistoriesCreateRequest) ToEntity() *entity.PpidDataApprovalHistories {
|
||||
return &entity.PpidDataApprovalHistories{
|
||||
Message: req.Message,
|
||||
ApprovalStatusId: req.ApprovalStatusId,
|
||||
PpidDataId: req.PpidDataId,
|
||||
ApprovalBy: req.ApprovalBy,
|
||||
ApprovalAtLevel: req.ApprovalAtLevel,
|
||||
IsActive: req.IsActive,
|
||||
}
|
||||
}
|
||||
|
||||
type PpidDataApprovalHistoriesUpdateRequest struct {
|
||||
ID uint `json:"id" validate:"required"`
|
||||
Message string `json:"message" validate:"required"`
|
||||
ApprovalStatusId int `json:"approval_status_id" validate:"required"`
|
||||
PpidDataId int `json:"ppid_data_id" validate:"required"`
|
||||
ApprovalBy int `json:"approval_by" validate:"required"`
|
||||
ApprovalAtLevel int `json:"approval_at_level" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (req PpidDataApprovalHistoriesUpdateRequest) ToEntity() *entity.PpidDataApprovalHistories {
|
||||
return &entity.PpidDataApprovalHistories{
|
||||
ID: req.ID,
|
||||
Message: req.Message,
|
||||
ApprovalStatusId: req.ApprovalStatusId,
|
||||
PpidDataId: req.PpidDataId,
|
||||
ApprovalBy: req.ApprovalBy,
|
||||
ApprovalAtLevel: req.ApprovalAtLevel,
|
||||
IsActive: req.IsActive,
|
||||
CreatedAt: req.CreatedAt,
|
||||
UpdatedAt: req.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package response
|
||||
|
||||
import "time"
|
||||
|
||||
type PpidDataApprovalHistoriesResponse struct {
|
||||
ID uint `json:"id"`
|
||||
Message string `json:"message"`
|
||||
ApprovalStatusId int `json:"approval_status_id"`
|
||||
PpidDataId int `json:"ppid_data_id"`
|
||||
ApprovalBy int `json:"approval_by"`
|
||||
ApprovalAtLevel int `json:"approval_at_level"`
|
||||
IsActive bool `json:"is_active"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"github.com/rs/zerolog"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/mapper"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/repository"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/request"
|
||||
"go-humas-be/app/module/ppid_data_approval_histories/response"
|
||||
"go-humas-be/utils/paginator"
|
||||
)
|
||||
|
||||
// PpidDataApprovalHistoriesService
|
||||
type ppidDataApprovalHistoriesService struct {
|
||||
Repo repository.PpidDataApprovalHistoriesRepository
|
||||
Log zerolog.Logger
|
||||
}
|
||||
|
||||
// PpidDataApprovalHistoriesService define interface of IPpidDataApprovalHistoriesService
|
||||
type PpidDataApprovalHistoriesService interface {
|
||||
All(req request.PpidDataApprovalHistoriesQueryRequest) (ppidDataApprovalHistories []*response.PpidDataApprovalHistoriesResponse, paging paginator.Pagination, err error)
|
||||
Show(id uint) (ppidDataApprovalHistories *response.PpidDataApprovalHistoriesResponse, err error)
|
||||
Save(req request.PpidDataApprovalHistoriesCreateRequest) (err error)
|
||||
Update(id uint, req request.PpidDataApprovalHistoriesUpdateRequest) (err error)
|
||||
Delete(id uint) error
|
||||
}
|
||||
|
||||
// NewPpidDataApprovalHistoriesService init PpidDataApprovalHistoriesService
|
||||
func NewPpidDataApprovalHistoriesService(repo repository.PpidDataApprovalHistoriesRepository, log zerolog.Logger) PpidDataApprovalHistoriesService {
|
||||
|
||||
return &ppidDataApprovalHistoriesService{
|
||||
Repo: repo,
|
||||
Log: log,
|
||||
}
|
||||
}
|
||||
|
||||
// All implement interface of PpidDataApprovalHistoriesService
|
||||
func (_i *ppidDataApprovalHistoriesService) All(req request.PpidDataApprovalHistoriesQueryRequest) (ppidDataApprovalHistoriess []*response.PpidDataApprovalHistoriesResponse, paging paginator.Pagination, err error) {
|
||||
results, paging, err := _i.Repo.GetAll(req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, result := range results {
|
||||
ppidDataApprovalHistoriess = append(ppidDataApprovalHistoriess, mapper.PpidDataApprovalHistoriesResponseMapper(result))
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesService) Show(id uint) (ppidDataApprovalHistories *response.PpidDataApprovalHistoriesResponse, err error) {
|
||||
result, err := _i.Repo.FindOne(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return mapper.PpidDataApprovalHistoriesResponseMapper(result), nil
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesService) Save(req request.PpidDataApprovalHistoriesCreateRequest) (err error) {
|
||||
_i.Log.Info().Interface("data", req).Msg("")
|
||||
|
||||
return _i.Repo.Create(req.ToEntity())
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesService) Update(id uint, req request.PpidDataApprovalHistoriesUpdateRequest) (err error) {
|
||||
_i.Log.Info().Interface("data", req).Msg("")
|
||||
return _i.Repo.Update(id, req.ToEntity())
|
||||
}
|
||||
|
||||
func (_i *ppidDataApprovalHistoriesService) Delete(id uint) error {
|
||||
return _i.Repo.Delete(id)
|
||||
}
|
||||
|
|
@ -119,7 +119,8 @@ func Start(lifecycle fx.Lifecycle, cfg *config.Config, fiber *fiber.App, router
|
|||
|
||||
// init seed models
|
||||
masterStatusSeeder := seeds.MasterStatusesSeeder{}
|
||||
allSeeders := []database.Seeder{masterStatusSeeder}
|
||||
masterApprovalStatusSeeder := seeds.MasterApprovalStatusesSeeder{}
|
||||
allSeeders := []database.Seeder{masterStatusSeeder, masterApprovalStatusSeeder}
|
||||
|
||||
db.SeedModels(allSeeders)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue