init
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
package transformer
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/constants"
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/models"
|
||||
)
|
||||
|
||||
// Contract to Model conversions
|
||||
func CreateOrganizationRequestToModel(req *contract.CreateOrganizationRequest) *models.CreateOrganizationRequest {
|
||||
return &models.CreateOrganizationRequest{
|
||||
OrganizationName: req.OrganizationName,
|
||||
OrganizationEmail: req.OrganizationEmail,
|
||||
OrganizationPhoneNumber: req.OrganizationPhoneNumber,
|
||||
PlanType: constants.PlanType(req.PlanType),
|
||||
AdminName: req.AdminName,
|
||||
AdminEmail: req.AdminEmail,
|
||||
AdminPassword: req.AdminPassword,
|
||||
OutletName: req.OutletName,
|
||||
OutletAddress: req.OutletAddress,
|
||||
OutletTimezone: req.OutletTimezone,
|
||||
OutletCurrency: req.OutletCurrency,
|
||||
}
|
||||
}
|
||||
|
||||
func UpdateOrganizationRequestToModel(req *contract.UpdateOrganizationRequest) *models.UpdateOrganizationRequest {
|
||||
modelReq := &models.UpdateOrganizationRequest{
|
||||
Name: req.Name,
|
||||
Email: req.Email,
|
||||
PhoneNumber: req.PhoneNumber,
|
||||
}
|
||||
|
||||
if req.PlanType != nil {
|
||||
planType := constants.PlanType(*req.PlanType)
|
||||
modelReq.PlanType = &planType
|
||||
}
|
||||
|
||||
return modelReq
|
||||
}
|
||||
|
||||
// Model to Contract conversions
|
||||
func OrganizationModelResponseToResponse(org *models.OrganizationResponse) *contract.OrganizationResponse {
|
||||
return &contract.OrganizationResponse{
|
||||
ID: org.ID,
|
||||
Name: org.Name,
|
||||
Email: org.Email,
|
||||
PhoneNumber: org.PhoneNumber,
|
||||
PlanType: string(org.PlanType),
|
||||
CreatedAt: org.CreatedAt,
|
||||
UpdatedAt: org.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateOrganizationResponseToContract(resp *models.CreateOrganizationResponse) *contract.CreateOrganizationResponse {
|
||||
return &contract.CreateOrganizationResponse{
|
||||
Organization: *OrganizationModelResponseToResponse(resp.Organization),
|
||||
AdminUser: *UserModelResponseToResponse(resp.AdminUser),
|
||||
DefaultOutlet: *OutletModelResponseToContract(resp.DefaultOutlet),
|
||||
}
|
||||
}
|
||||
|
||||
func OutletModelResponseToContract(outlet *models.OutletResponse) *contract.OutletResponse {
|
||||
address := ""
|
||||
if outlet.Address != nil {
|
||||
address = *outlet.Address
|
||||
}
|
||||
|
||||
return &contract.OutletResponse{
|
||||
ID: outlet.ID,
|
||||
OrganizationID: outlet.OrganizationID,
|
||||
Name: outlet.Name,
|
||||
Address: address,
|
||||
Currency: outlet.Currency,
|
||||
TaxRate: outlet.TaxRate,
|
||||
IsActive: outlet.IsActive,
|
||||
CreatedAt: outlet.CreatedAt,
|
||||
UpdatedAt: outlet.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
// Slice conversions
|
||||
func OrganizationsToResponses(organizations []models.OrganizationResponse) []contract.OrganizationResponse {
|
||||
responses := make([]contract.OrganizationResponse, len(organizations))
|
||||
for i, org := range organizations {
|
||||
response := OrganizationModelResponseToResponse(&org)
|
||||
if response != nil {
|
||||
responses[i] = *response
|
||||
}
|
||||
}
|
||||
return responses
|
||||
}
|
||||
Reference in New Issue
Block a user