127 lines
3.6 KiB
Go
127 lines
3.6 KiB
Go
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
|
|
}
|