This commit is contained in:
Aditya Siregar
2025-09-13 02:17:51 +07:00
parent 75ec5274d2
commit 4f6208e479
17 changed files with 398 additions and 207 deletions
@@ -3,10 +3,11 @@ package transformer
import (
"apskel-pos-be/internal/contract"
"apskel-pos-be/internal/models"
"time"
)
// Contract to Model conversions
func CreatePurchaseOrderRequestToModel(req *contract.CreatePurchaseOrderRequest) *models.CreatePurchaseOrderRequest {
func CreatePurchaseOrderRequestToModel(req *contract.CreatePurchaseOrderRequest) (*models.CreatePurchaseOrderRequest, error) {
items := make([]models.CreatePurchaseOrderItemRequest, len(req.Items))
for i, item := range req.Items {
items[i] = models.CreatePurchaseOrderItemRequest{
@@ -18,20 +19,32 @@ func CreatePurchaseOrderRequestToModel(req *contract.CreatePurchaseOrderRequest)
}
}
// Parse transaction date
transactionDate, err := time.Parse("2006-01-02", req.TransactionDate)
if err != nil {
return nil, err
}
// Parse due date
dueDate, err := time.Parse("2006-01-02", req.DueDate)
if err != nil {
return nil, err
}
return &models.CreatePurchaseOrderRequest{
VendorID: req.VendorID,
PONumber: req.PONumber,
TransactionDate: req.TransactionDate,
DueDate: req.DueDate,
TransactionDate: transactionDate,
DueDate: dueDate,
Reference: req.Reference,
Status: req.Status,
Message: req.Message,
Items: items,
AttachmentFileIDs: req.AttachmentFileIDs,
}
}, nil
}
func UpdatePurchaseOrderRequestToModel(req *contract.UpdatePurchaseOrderRequest) *models.UpdatePurchaseOrderRequest {
func UpdatePurchaseOrderRequestToModel(req *contract.UpdatePurchaseOrderRequest) (*models.UpdatePurchaseOrderRequest, error) {
var items []models.UpdatePurchaseOrderItemRequest
if req.Items != nil {
items = make([]models.UpdatePurchaseOrderItemRequest, len(req.Items))
@@ -47,17 +60,37 @@ func UpdatePurchaseOrderRequestToModel(req *contract.UpdatePurchaseOrderRequest)
}
}
// Parse transaction date if provided
var transactionDate *time.Time
if req.TransactionDate != nil && *req.TransactionDate != "" {
parsedDate, err := time.Parse("2006-01-02", *req.TransactionDate)
if err != nil {
return nil, err
}
transactionDate = &parsedDate
}
// Parse due date if provided
var dueDate *time.Time
if req.DueDate != nil && *req.DueDate != "" {
parsedDate, err := time.Parse("2006-01-02", *req.DueDate)
if err != nil {
return nil, err
}
dueDate = &parsedDate
}
return &models.UpdatePurchaseOrderRequest{
VendorID: req.VendorID,
PONumber: req.PONumber,
TransactionDate: req.TransactionDate,
DueDate: req.DueDate,
TransactionDate: transactionDate,
DueDate: dueDate,
Reference: req.Reference,
Status: req.Status,
Message: req.Message,
Items: items,
AttachmentFileIDs: req.AttachmentFileIDs,
}
}, nil
}
func ListPurchaseOrdersRequestToModel(req *contract.ListPurchaseOrdersRequest) *models.ListPurchaseOrdersRequest {