jaecoo-be/app/module/approval_histories/service/approval_histories.service.go

71 lines
2.2 KiB
Go
Raw Normal View History

package service
import (
"jaecoo-be/app/database/entity"
"jaecoo-be/app/module/approval_histories/mapper"
"jaecoo-be/app/module/approval_histories/repository"
"jaecoo-be/app/module/approval_histories/request"
"jaecoo-be/app/module/approval_histories/response"
"jaecoo-be/utils/paginator"
"github.com/rs/zerolog"
)
type approvalHistoriesService struct {
Repo repository.ApprovalHistoriesRepository
Log zerolog.Logger
}
type ApprovalHistoriesService interface {
GetAll(req request.ApprovalHistoriesQueryRequest) (histories []*response.ApprovalHistoriesResponse, paging paginator.Pagination, err error)
GetByModule(moduleType string, moduleId uint) (histories []*response.ApprovalHistoriesResponse, err error)
CreateHistory(moduleType string, moduleId uint, statusId int, action string, approvedBy *uint, message *string) (err error)
}
func NewApprovalHistoriesService(repo repository.ApprovalHistoriesRepository, log zerolog.Logger) ApprovalHistoriesService {
return &approvalHistoriesService{
Repo: repo,
Log: log,
}
}
func (_i *approvalHistoriesService) GetAll(req request.ApprovalHistoriesQueryRequest) (histories []*response.ApprovalHistoriesResponse, paging paginator.Pagination, err error) {
historiesEntity, paging, err := _i.Repo.GetAll(req)
if err != nil {
return
}
for _, history := range historiesEntity {
histories = append(histories, mapper.ApprovalHistoriesResponseMapper(history))
}
return
}
func (_i *approvalHistoriesService) GetByModule(moduleType string, moduleId uint) (histories []*response.ApprovalHistoriesResponse, err error) {
historiesEntity, err := _i.Repo.GetByModule(moduleType, moduleId)
if err != nil {
return
}
for _, history := range historiesEntity {
histories = append(histories, mapper.ApprovalHistoriesResponseMapper(history))
}
return
}
func (_i *approvalHistoriesService) CreateHistory(moduleType string, moduleId uint, statusId int, action string, approvedBy *uint, message *string) (err error) {
history := &entity.ApprovalHistories{
ModuleType: moduleType,
ModuleId: moduleId,
StatusId: statusId,
Action: action,
ApprovedBy: approvedBy,
Message: message,
}
_, err = _i.Repo.Create(history)
return
}