apskel-pos-backend/internal/transformer/expense_transformer.go
2026-05-25 14:59:40 +07:00

76 lines
2.2 KiB
Go

package transformer
import (
"apskel-pos-be/internal/contract"
"apskel-pos-be/internal/models"
)
func CreateExpenseRequestToModel(req *contract.CreateExpenseRequest) *models.CreateExpenseRequest {
return &models.CreateExpenseRequest{
Receiver: req.Receiver,
TransactionDate: req.TransactionDate,
CodeNumber: req.CodeNumber,
ChartOfAccountID: req.ChartOfAccountID,
OutletID: req.OutletID,
Description: req.Description,
Tax: req.Tax,
Total: req.Total,
}
}
func UpdateExpenseRequestToModel(req *contract.UpdateExpenseRequest) *models.UpdateExpenseRequest {
return &models.UpdateExpenseRequest{
Receiver: req.Receiver,
TransactionDate: req.TransactionDate,
CodeNumber: req.CodeNumber,
ChartOfAccountID: req.ChartOfAccountID,
OutletID: req.OutletID,
Description: req.Description,
Tax: req.Tax,
Total: req.Total,
Reserved1: req.Reserved1,
}
}
func ListExpenseRequestToModel(req *contract.ListExpenseRequest) *models.ListExpenseRequest {
return &models.ListExpenseRequest{
Page: req.Page,
Limit: req.Limit,
Search: req.Search,
}
}
func ExpenseModelResponseToResponse(expense *models.ExpenseResponse) *contract.ExpenseResponse {
return &contract.ExpenseResponse{
ID: expense.ID,
OrganizationID: expense.OrganizationID,
OutletID: expense.OutletID,
Receiver: expense.Receiver,
TransactionDate: expense.TransactionDate,
CodeNumber: expense.CodeNumber,
ChartOfAccountID: expense.ChartOfAccountID,
ChartOfAccountName: expense.ChartOfAccountName,
Description: expense.Description,
Tax: expense.Tax,
Total: expense.Total,
Reserved1: expense.Reserved1,
CreatedAt: expense.CreatedAt,
UpdatedAt: expense.UpdatedAt,
}
}
func ExpenseModelResponsesToResponses(expenses []*models.ExpenseResponse) []contract.ExpenseResponse {
if expenses == nil {
return nil
}
responses := make([]contract.ExpenseResponse, len(expenses))
for i, expense := range expenses {
response := ExpenseModelResponseToResponse(expense)
if response != nil {
responses[i] = *response
}
}
return responses
}