feat: add ppid data approval
This commit is contained in:
parent
eb9d614226
commit
4013617092
|
|
@ -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()"`
|
||||||
|
}
|
||||||
|
|
@ -12,7 +12,10 @@ type PpidDatas struct {
|
||||||
LevelGroupId *int `json:"level_group_id" gorm:"type:int4"`
|
LevelGroupId *int `json:"level_group_id" gorm:"type:int4"`
|
||||||
Group *string `json:"group" gorm:"type:varchar"`
|
Group *string `json:"group" gorm:"type:varchar"`
|
||||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
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"`
|
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"`
|
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
CreatedAt time.Time `json:"created_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
|
// init seed models
|
||||||
masterStatusSeeder := seeds.MasterStatusesSeeder{}
|
masterStatusSeeder := seeds.MasterStatusesSeeder{}
|
||||||
allSeeders := []database.Seeder{masterStatusSeeder}
|
masterApprovalStatusSeeder := seeds.MasterApprovalStatusesSeeder{}
|
||||||
|
allSeeders := []database.Seeder{masterStatusSeeder, masterApprovalStatusSeeder}
|
||||||
|
|
||||||
db.SeedModels(allSeeders)
|
db.SeedModels(allSeeders)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue