qudoco-be/app/module/client_approval_settings/mapper/client_approval_settings.ma...

105 lines
3.3 KiB
Go
Raw Normal View History

2026-02-24 09:37:19 +00:00
package mapper
import (
"web-qudo-be/app/database/entity"
res "web-qudo-be/app/module/client_approval_settings/response"
"github.com/google/uuid"
"github.com/rs/zerolog"
)
func ClientApprovalSettingsResponseMapper(
log zerolog.Logger,
clientId *uuid.UUID,
settings *entity.ClientApprovalSettings,
) *res.ClientApprovalSettingsResponse {
if settings == nil {
return nil
}
return &res.ClientApprovalSettingsResponse{
ID: settings.ID,
ClientId: settings.ClientId.String(),
RequiresApproval: *settings.RequiresApproval,
DefaultWorkflowId: settings.DefaultWorkflowId,
AutoPublishArticles: *settings.AutoPublishArticles,
ApprovalExemptUsers: settings.ApprovalExemptUsers,
ApprovalExemptRoles: settings.ApprovalExemptRoles,
ApprovalExemptCategories: settings.ApprovalExemptCategories,
RequireApprovalFor: settings.RequireApprovalFor,
SkipApprovalFor: settings.SkipApprovalFor,
IsActive: *settings.IsActive,
CreatedAt: settings.CreatedAt,
UpdatedAt: settings.UpdatedAt,
}
}
func ClientApprovalSettingsDetailResponseMapper(
log zerolog.Logger,
clientId *uuid.UUID,
settings *entity.ClientApprovalSettings,
) *res.ClientApprovalSettingsDetailResponse {
if settings == nil {
return nil
}
response := &res.ClientApprovalSettingsDetailResponse{
ID: settings.ID,
ClientId: settings.ClientId.String(),
RequiresApproval: *settings.RequiresApproval,
DefaultWorkflowId: settings.DefaultWorkflowId,
AutoPublishArticles: *settings.AutoPublishArticles,
ApprovalExemptUsers: settings.ApprovalExemptUsers,
ApprovalExemptRoles: settings.ApprovalExemptRoles,
ApprovalExemptCategories: settings.ApprovalExemptCategories,
RequireApprovalFor: settings.RequireApprovalFor,
SkipApprovalFor: settings.SkipApprovalFor,
IsActive: *settings.IsActive,
CreatedAt: settings.CreatedAt,
UpdatedAt: settings.UpdatedAt,
}
// Add client relation if available
if settings.Client.ID != uuid.Nil {
response.Client = &res.ClientResponse{
ID: 1, // Placeholder - would need proper ID mapping
Name: settings.Client.Name,
IsActive: *settings.Client.IsActive,
}
}
// Add workflow relation if available
if settings.Workflow != nil && settings.Workflow.ID != 0 {
response.Workflow = &res.WorkflowResponse{
ID: settings.Workflow.ID,
Name: settings.Workflow.Name,
Description: settings.Workflow.Description,
IsActive: *settings.Workflow.IsActive,
}
}
return response
}
func ApprovalStatusResponseMapper(
log zerolog.Logger,
clientId *uuid.UUID,
settings *entity.ClientApprovalSettings,
) *res.ApprovalStatusResponse {
if settings == nil {
return &res.ApprovalStatusResponse{
RequiresApproval: true, // Default to requiring approval
AutoPublishArticles: false,
IsActive: false,
Message: "No approval settings found",
}
}
return &res.ApprovalStatusResponse{
RequiresApproval: *settings.RequiresApproval,
AutoPublishArticles: *settings.AutoPublishArticles,
IsActive: *settings.IsActive,
Message: "Approval settings loaded successfully",
}
}