diff --git a/app/database/entity/master_approval_statuses.entity.go b/app/database/entity/master_approval_statuses.entity.go new file mode 100644 index 0000000..7a24565 --- /dev/null +++ b/app/database/entity/master_approval_statuses.entity.go @@ -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"` +} diff --git a/app/database/entity/ppid_data_approval_histories.entity.go b/app/database/entity/ppid_data_approval_histories.entity.go new file mode 100644 index 0000000..f56edcd --- /dev/null +++ b/app/database/entity/ppid_data_approval_histories.entity.go @@ -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()"` +} diff --git a/app/database/entity/ppid_datas.entity.go b/app/database/entity/ppid_datas.entity.go index ba56bf4..ea77cd8 100644 --- a/app/database/entity/ppid_datas.entity.go +++ b/app/database/entity/ppid_datas.entity.go @@ -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()"` } diff --git a/app/database/seeds/master_approval_statuses.seeds.go b/app/database/seeds/master_approval_statuses.seeds.go new file mode 100644 index 0000000..180e6c8 --- /dev/null +++ b/app/database/seeds/master_approval_statuses.seeds.go @@ -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 +} diff --git a/app/module/ppid_data_approval_histories/controller/controller.go b/app/module/ppid_data_approval_histories/controller/controller.go new file mode 100644 index 0000000..5ddf185 --- /dev/null +++ b/app/module/ppid_data_approval_histories/controller/controller.go @@ -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), + } +} diff --git a/app/module/ppid_data_approval_histories/controller/ppid_data_approval_histories.controller.go b/app/module/ppid_data_approval_histories/controller/ppid_data_approval_histories.controller.go new file mode 100644 index 0000000..3488405 --- /dev/null +++ b/app/module/ppid_data_approval_histories/controller/ppid_data_approval_histories.controller.go @@ -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"}, + }) +} diff --git a/app/module/ppid_data_approval_histories/mapper/ppid_data_approval_histories.mapper.go b/app/module/ppid_data_approval_histories/mapper/ppid_data_approval_histories.mapper.go new file mode 100644 index 0000000..8f5b8df --- /dev/null +++ b/app/module/ppid_data_approval_histories/mapper/ppid_data_approval_histories.mapper.go @@ -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 +} diff --git a/app/module/ppid_data_approval_histories/ppid_data_approval_histories.module.go b/app/module/ppid_data_approval_histories/ppid_data_approval_histories.module.go new file mode 100644 index 0000000..a015f84 --- /dev/null +++ b/app/module/ppid_data_approval_histories/ppid_data_approval_histories.module.go @@ -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) + }) +} diff --git a/app/module/ppid_data_approval_histories/repository/ppid_data_approval_histories.repository.go b/app/module/ppid_data_approval_histories/repository/ppid_data_approval_histories.repository.go new file mode 100644 index 0000000..b31b885 --- /dev/null +++ b/app/module/ppid_data_approval_histories/repository/ppid_data_approval_histories.repository.go @@ -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 +} diff --git a/app/module/ppid_data_approval_histories/request/ppid_data_approval_histories.request.go b/app/module/ppid_data_approval_histories/request/ppid_data_approval_histories.request.go new file mode 100644 index 0000000..78f96e6 --- /dev/null +++ b/app/module/ppid_data_approval_histories/request/ppid_data_approval_histories.request.go @@ -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, + } +} diff --git a/app/module/ppid_data_approval_histories/response/ppid_data_approval_histories.response.go b/app/module/ppid_data_approval_histories/response/ppid_data_approval_histories.response.go new file mode 100644 index 0000000..b7bbb58 --- /dev/null +++ b/app/module/ppid_data_approval_histories/response/ppid_data_approval_histories.response.go @@ -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"` +} diff --git a/app/module/ppid_data_approval_histories/service/ppid_data_approval_histories.service.go b/app/module/ppid_data_approval_histories/service/ppid_data_approval_histories.service.go new file mode 100644 index 0000000..343308c --- /dev/null +++ b/app/module/ppid_data_approval_histories/service/ppid_data_approval_histories.service.go @@ -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) +} diff --git a/config/webserver/webserver.config.go b/config/webserver/webserver.config.go index ff22faf..dc5b7f5 100644 --- a/config/webserver/webserver.config.go +++ b/config/webserver/webserver.config.go @@ -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) }