kontenhumas-be/app/module/approval_workflows/mapper/approval_workflows.mapper.go

126 lines
4.0 KiB
Go

package mapper
import (
"github.com/google/uuid"
"github.com/rs/zerolog"
"web-medols-be/app/database/entity"
approvalWorkflowStepsMapper "web-medols-be/app/module/approval_workflow_steps/mapper"
approvalWorkflowStepsRepository "web-medols-be/app/module/approval_workflow_steps/repository"
approvalWorkflowStepsResponse "web-medols-be/app/module/approval_workflow_steps/response"
res "web-medols-be/app/module/approval_workflows/response"
usersRepository "web-medols-be/app/module/users/repository"
)
func ApprovalWorkflowsResponseMapper(
log zerolog.Logger,
clientId *uuid.UUID,
approvalWorkflowsReq *entity.ApprovalWorkflows,
approvalWorkflowStepsRepo approvalWorkflowStepsRepository.ApprovalWorkflowStepsRepository,
usersRepo usersRepository.UsersRepository,
) (approvalWorkflowsRes *res.ApprovalWorkflowsResponse) {
// Get workflow steps using GetAll with filter
var workflowStepsArr []*approvalWorkflowStepsResponse.ApprovalWorkflowStepsResponse
if len(approvalWorkflowsReq.Steps) > 0 {
for _, step := range approvalWorkflowsReq.Steps {
workflowStepsArr = append(workflowStepsArr, approvalWorkflowStepsMapper.ApprovalWorkflowStepsResponseMapper(
log,
clientId,
&step,
usersRepo,
))
}
}
if approvalWorkflowsReq != nil {
// Convert boolean pointer to boolean value
isActive := false
if approvalWorkflowsReq.IsActive != nil {
isActive = *approvalWorkflowsReq.IsActive
}
approvalWorkflowsRes = &res.ApprovalWorkflowsResponse{
ID: approvalWorkflowsReq.ID,
Name: approvalWorkflowsReq.Name,
Description: approvalWorkflowsReq.Description,
IsActive: isActive,
CreatedBy: 0, // Default value since entity doesn't have CreatedBy field
CreatedAt: approvalWorkflowsReq.CreatedAt,
UpdatedAt: approvalWorkflowsReq.UpdatedAt,
Steps: workflowStepsArr,
}
}
return approvalWorkflowsRes
}
func ApprovalWorkflowsWithStepsResponseMapper(
log zerolog.Logger,
clientId *uuid.UUID,
approvalWorkflowsReq *entity.ApprovalWorkflows,
approvalWorkflowStepsRepo approvalWorkflowStepsRepository.ApprovalWorkflowStepsRepository,
usersRepo usersRepository.UsersRepository,
) (approvalWorkflowsRes *res.ApprovalWorkflowsWithStepsResponse) {
// Get workflow steps with detailed information
var workflowStepsArr []*approvalWorkflowStepsResponse.ApprovalWorkflowStepsResponse
if len(approvalWorkflowsReq.Steps) > 0 {
for _, step := range approvalWorkflowsReq.Steps {
workflowStepsArr = append(workflowStepsArr, approvalWorkflowStepsMapper.ApprovalWorkflowStepsResponseMapper(
log,
clientId,
&step,
usersRepo,
))
}
}
if approvalWorkflowsReq != nil {
// Convert boolean pointer to boolean value
isActive := false
if approvalWorkflowsReq.IsActive != nil {
isActive = *approvalWorkflowsReq.IsActive
}
approvalWorkflowsRes = &res.ApprovalWorkflowsWithStepsResponse{
ID: approvalWorkflowsReq.ID,
Name: approvalWorkflowsReq.Name,
Description: approvalWorkflowsReq.Description,
IsActive: isActive,
CreatedBy: 0, // Default value since entity doesn't have CreatedBy field
CreatedAt: approvalWorkflowsReq.CreatedAt,
UpdatedAt: approvalWorkflowsReq.UpdatedAt,
Steps: workflowStepsArr,
}
}
return approvalWorkflowsRes
}
func ApprovalWorkflowsSummaryResponseMapper(
log zerolog.Logger,
clientId *uuid.UUID,
approvalWorkflowsReq *entity.ApprovalWorkflows,
usersRepo usersRepository.UsersRepository,
) (approvalWorkflowsRes *res.ApprovalWorkflowsSummaryResponse) {
if approvalWorkflowsReq != nil {
// Convert boolean pointer to boolean value
isActive := false
if approvalWorkflowsReq.IsActive != nil {
isActive = *approvalWorkflowsReq.IsActive
}
approvalWorkflowsRes = &res.ApprovalWorkflowsSummaryResponse{
ID: approvalWorkflowsReq.ID,
Name: approvalWorkflowsReq.Name,
Description: approvalWorkflowsReq.Description,
IsActive: isActive,
StepCount: 0, // Default value, should be calculated if needed
}
}
return approvalWorkflowsRes
}