131 lines
4.1 KiB
Go
131 lines
4.1 KiB
Go
|
|
package controller
|
||
|
|
|
||
|
|
import (
|
||
|
|
"jaecoo-be/app/module/approval_histories/request"
|
||
|
|
"jaecoo-be/app/module/approval_histories/service"
|
||
|
|
"jaecoo-be/utils/paginator"
|
||
|
|
"strconv"
|
||
|
|
|
||
|
|
"github.com/gofiber/fiber/v2"
|
||
|
|
"github.com/rs/zerolog"
|
||
|
|
|
||
|
|
utilRes "jaecoo-be/utils/response"
|
||
|
|
)
|
||
|
|
|
||
|
|
type approvalHistoriesController struct {
|
||
|
|
approvalHistoriesService service.ApprovalHistoriesService
|
||
|
|
Log zerolog.Logger
|
||
|
|
}
|
||
|
|
|
||
|
|
type ApprovalHistoriesController interface {
|
||
|
|
GetByModule(c *fiber.Ctx) error
|
||
|
|
All(c *fiber.Ctx) error
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewApprovalHistoriesController(approvalHistoriesService service.ApprovalHistoriesService, log zerolog.Logger) ApprovalHistoriesController {
|
||
|
|
return &approvalHistoriesController{
|
||
|
|
approvalHistoriesService: approvalHistoriesService,
|
||
|
|
Log: log,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetByModule get approval history by module type and module id
|
||
|
|
// @Summary Get approval history by module
|
||
|
|
// @Description API for getting approval history by module type and module id
|
||
|
|
// @Tags ApprovalHistories
|
||
|
|
// @Security Bearer
|
||
|
|
// @Param X-Client-Key header string true "Insert the X-Client-Key"
|
||
|
|
// @Param module_type path string true "Module Type (banners, galleries, products, sales_agents, promotions)"
|
||
|
|
// @Param module_id path int true "Module ID"
|
||
|
|
// @Success 200 {object} response.Response
|
||
|
|
// @Failure 400 {object} response.BadRequestError
|
||
|
|
// @Failure 401 {object} response.UnauthorizedError
|
||
|
|
// @Failure 500 {object} response.InternalServerError
|
||
|
|
// @Router /approval-histories/{module_type}/{module_id} [get]
|
||
|
|
func (_i *approvalHistoriesController) GetByModule(c *fiber.Ctx) error {
|
||
|
|
moduleType := c.Params("module_type")
|
||
|
|
moduleIdStr := c.Params("module_id")
|
||
|
|
|
||
|
|
moduleId, err := strconv.ParseUint(moduleIdStr, 10, 0)
|
||
|
|
if err != nil {
|
||
|
|
return utilRes.Resp(c, utilRes.Response{
|
||
|
|
Success: false,
|
||
|
|
Messages: utilRes.Messages{"Invalid module_id"},
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
histories, err := _i.approvalHistoriesService.GetByModule(moduleType, uint(moduleId))
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return utilRes.Resp(c, utilRes.Response{
|
||
|
|
Success: true,
|
||
|
|
Messages: utilRes.Messages{"Approval histories successfully retrieved"},
|
||
|
|
Data: histories,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// All get all ApprovalHistories
|
||
|
|
// @Summary Get all ApprovalHistories
|
||
|
|
// @Description API for getting all ApprovalHistories
|
||
|
|
// @Tags ApprovalHistories
|
||
|
|
// @Security Bearer
|
||
|
|
// @Param X-Client-Key header string true "Insert the X-Client-Key"
|
||
|
|
// @Param req query request.ApprovalHistoriesQueryRequest false "query parameters"
|
||
|
|
// @Param req query paginator.Pagination false "pagination parameters"
|
||
|
|
// @Success 200 {object} response.Response
|
||
|
|
// @Failure 400 {object} response.BadRequestError
|
||
|
|
// @Failure 401 {object} response.UnauthorizedError
|
||
|
|
// @Failure 500 {object} response.InternalServerError
|
||
|
|
// @Router /approval-histories [get]
|
||
|
|
func (_i *approvalHistoriesController) All(c *fiber.Ctx) error {
|
||
|
|
paginate, err := paginator.Paginate(c)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
req := request.ApprovalHistoriesQueryRequest{
|
||
|
|
Pagination: *paginate,
|
||
|
|
}
|
||
|
|
|
||
|
|
if moduleType := c.Query("module_type"); moduleType != "" {
|
||
|
|
req.ModuleType = &moduleType
|
||
|
|
}
|
||
|
|
if moduleIdStr := c.Query("module_id"); moduleIdStr != "" {
|
||
|
|
moduleId, err := strconv.ParseUint(moduleIdStr, 10, 0)
|
||
|
|
if err == nil {
|
||
|
|
moduleIdUint := uint(moduleId)
|
||
|
|
req.ModuleId = &moduleIdUint
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if statusIdStr := c.Query("status_id"); statusIdStr != "" {
|
||
|
|
statusId, err := strconv.Atoi(statusIdStr)
|
||
|
|
if err == nil {
|
||
|
|
req.StatusId = &statusId
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if action := c.Query("action"); action != "" {
|
||
|
|
req.Action = &action
|
||
|
|
}
|
||
|
|
if approvedByStr := c.Query("approved_by"); approvedByStr != "" {
|
||
|
|
approvedBy, err := strconv.ParseUint(approvedByStr, 10, 0)
|
||
|
|
if err == nil {
|
||
|
|
approvedByUint := uint(approvedBy)
|
||
|
|
req.ApprovedBy = &approvedByUint
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
histories, paging, err := _i.approvalHistoriesService.GetAll(req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return utilRes.Resp(c, utilRes.Response{
|
||
|
|
Success: true,
|
||
|
|
Messages: utilRes.Messages{"Approval histories successfully retrieved"},
|
||
|
|
Data: histories,
|
||
|
|
Meta: paging,
|
||
|
|
})
|
||
|
|
}
|