133 lines
3.8 KiB
Go
133 lines
3.8 KiB
Go
package transformer
|
|
|
|
import (
|
|
"apskel-pos-be/internal/contract"
|
|
"apskel-pos-be/internal/models"
|
|
)
|
|
|
|
func CreateExpenseRequestToModel(req *contract.CreateExpenseRequest) *models.CreateExpenseRequest {
|
|
items := make([]models.CreateExpenseItemRequest, len(req.Items))
|
|
for i, item := range req.Items {
|
|
items[i] = CreateExpenseItemRequestToModel(&item)
|
|
}
|
|
|
|
return &models.CreateExpenseRequest{
|
|
ExpenseName: req.ExpenseName,
|
|
Receiver: req.Receiver,
|
|
TransactionDate: req.TransactionDate,
|
|
CodeNumber: req.CodeNumber,
|
|
OutletID: req.OutletID,
|
|
Description: req.Description,
|
|
Tax: req.Tax,
|
|
Total: req.Total,
|
|
Items: items,
|
|
}
|
|
}
|
|
|
|
func CreateExpenseItemRequestToModel(req *contract.CreateExpenseItemRequest) models.CreateExpenseItemRequest {
|
|
return models.CreateExpenseItemRequest{
|
|
ChartOfAccountID: req.ChartOfAccountID,
|
|
Description: req.Description,
|
|
Amount: req.Amount,
|
|
}
|
|
}
|
|
|
|
func UpdateExpenseRequestToModel(req *contract.UpdateExpenseRequest) *models.UpdateExpenseRequest {
|
|
modelReq := &models.UpdateExpenseRequest{
|
|
ExpenseName: req.ExpenseName,
|
|
Receiver: req.Receiver,
|
|
TransactionDate: req.TransactionDate,
|
|
CodeNumber: req.CodeNumber,
|
|
OutletID: req.OutletID,
|
|
Description: req.Description,
|
|
Tax: req.Tax,
|
|
Total: req.Total,
|
|
Reserved1: req.Reserved1,
|
|
}
|
|
|
|
if req.Items != nil {
|
|
items := make([]models.UpdateExpenseItemRequest, len(req.Items))
|
|
for i, item := range req.Items {
|
|
items[i] = UpdateExpenseItemRequestToModel(&item)
|
|
}
|
|
modelReq.Items = items
|
|
}
|
|
|
|
return modelReq
|
|
}
|
|
|
|
func UpdateExpenseItemRequestToModel(req *contract.UpdateExpenseItemRequest) models.UpdateExpenseItemRequest {
|
|
return models.UpdateExpenseItemRequest{
|
|
ChartOfAccountID: req.ChartOfAccountID,
|
|
Description: req.Description,
|
|
Amount: req.Amount,
|
|
}
|
|
}
|
|
|
|
func ListExpenseRequestToModel(req *contract.ListExpenseRequest) *models.ListExpenseRequest {
|
|
return &models.ListExpenseRequest{
|
|
Page: req.Page,
|
|
Limit: req.Limit,
|
|
Search: req.Search,
|
|
OutletID: req.OutletID,
|
|
StartDate: req.StartDate,
|
|
EndDate: req.EndDate,
|
|
}
|
|
}
|
|
|
|
func ExpenseModelResponseToResponse(expense *models.ExpenseResponse) *contract.ExpenseResponse {
|
|
if expense == nil {
|
|
return nil
|
|
}
|
|
|
|
items := make([]contract.ExpenseItemResponse, len(expense.Items))
|
|
for i, item := range expense.Items {
|
|
items[i] = ExpenseItemModelResponseToResponse(&item)
|
|
}
|
|
|
|
return &contract.ExpenseResponse{
|
|
ID: expense.ID,
|
|
OrganizationID: expense.OrganizationID,
|
|
OutletID: expense.OutletID,
|
|
ExpenseName: expense.ExpenseName,
|
|
Receiver: expense.Receiver,
|
|
TransactionDate: expense.TransactionDate,
|
|
CodeNumber: expense.CodeNumber,
|
|
Description: expense.Description,
|
|
Tax: expense.Tax,
|
|
Total: expense.Total,
|
|
Reserved1: expense.Reserved1,
|
|
CreatedAt: expense.CreatedAt,
|
|
UpdatedAt: expense.UpdatedAt,
|
|
Items: items,
|
|
}
|
|
}
|
|
|
|
func ExpenseItemModelResponseToResponse(item *models.ExpenseItemResponse) contract.ExpenseItemResponse {
|
|
return contract.ExpenseItemResponse{
|
|
ID: item.ID,
|
|
ExpenseID: item.ExpenseID,
|
|
ChartOfAccountID: item.ChartOfAccountID,
|
|
ChartOfAccountName: item.ChartOfAccountName,
|
|
Description: item.Description,
|
|
Amount: item.Amount,
|
|
CreatedAt: item.CreatedAt,
|
|
UpdatedAt: item.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
|
|
}
|