package transformer import ( "time" "apskel-pos-be/internal/contract" "apskel-pos-be/internal/models" ) func CreateCashAdvanceRequestToModel(req *contract.CreateCashAdvanceRequest) (*models.CreateCashAdvanceRequest, error) { issuedDate, err := time.Parse("2006-01-02", req.IssuedDate) if err != nil { return nil, err } var dueDate *time.Time if req.DueDate != nil && *req.DueDate != "" { parsed, err := time.Parse("2006-01-02", *req.DueDate) if err != nil { return nil, err } dueDate = &parsed } return &models.CreateCashAdvanceRequest{ OutletID: req.OutletID, CodeNumber: req.CodeNumber, TeamScope: req.TeamScope, TeamCategoryID: req.TeamCategoryID, Amount: req.Amount, IssuedDate: issuedDate, DueDate: dueDate, Status: req.Status, Description: req.Description, }, nil } func UpdateCashAdvanceRequestToModel(req *contract.UpdateCashAdvanceRequest) (*models.UpdateCashAdvanceRequest, error) { var issuedDate *time.Time if req.IssuedDate != nil && *req.IssuedDate != "" { parsed, err := time.Parse("2006-01-02", *req.IssuedDate) if err != nil { return nil, err } issuedDate = &parsed } var dueDate *time.Time if req.DueDate != nil && *req.DueDate != "" { parsed, err := time.Parse("2006-01-02", *req.DueDate) if err != nil { return nil, err } dueDate = &parsed } return &models.UpdateCashAdvanceRequest{ CodeNumber: req.CodeNumber, TeamScope: req.TeamScope, TeamCategoryID: req.TeamCategoryID, Amount: req.Amount, ReturnedAmount: req.ReturnedAmount, IssuedDate: issuedDate, DueDate: dueDate, Status: req.Status, Description: req.Description, }, nil } func ListCashAdvancesRequestToModel(req *contract.ListCashAdvancesRequest) *models.ListCashAdvancesRequest { return &models.ListCashAdvancesRequest{ Page: req.Page, Limit: req.Limit, Search: req.Search, Status: req.Status, SettlementStatus: req.SettlementStatus, Team: req.Team, TeamScope: req.TeamScope, TeamCategoryID: req.TeamCategoryID, StartDate: req.StartDate, EndDate: req.EndDate, } } func CashAdvanceModelResponseToResponse(cashAdvance *models.CashAdvanceResponse) *contract.CashAdvanceResponse { if cashAdvance == nil { return nil } response := &contract.CashAdvanceResponse{ ID: cashAdvance.ID, OrganizationID: cashAdvance.OrganizationID, OutletID: cashAdvance.OutletID, CodeNumber: cashAdvance.CodeNumber, TeamScope: cashAdvance.TeamScope, TeamCategoryID: cashAdvance.TeamCategoryID, Amount: cashAdvance.Amount, SettledAmount: cashAdvance.SettledAmount, ReturnedAmount: cashAdvance.ReturnedAmount, RemainingAmount: cashAdvance.RemainingAmount, SettlementStatus: cashAdvance.SettlementStatus, IssuedDate: cashAdvance.IssuedDate, DueDate: cashAdvance.DueDate, Status: cashAdvance.Status, Description: cashAdvance.Description, CreatedAt: cashAdvance.CreatedAt, UpdatedAt: cashAdvance.UpdatedAt, Team: PurchaseTeamModelToResponse(cashAdvance.Team), } if cashAdvance.Settlements != nil { response.Settlements = make([]contract.CashAdvanceSettlementResponse, len(cashAdvance.Settlements)) for i, settlement := range cashAdvance.Settlements { response.Settlements[i] = contract.CashAdvanceSettlementResponse{ Type: settlement.Type, ID: settlement.ID, Number: settlement.Number, Date: settlement.Date, Amount: settlement.Amount, Status: settlement.Status, } } } return response }