72 lines
2.0 KiB
Go
72 lines
2.0 KiB
Go
|
|
package mappers
|
||
|
|
|
||
|
|
import (
|
||
|
|
"apskel-pos-be/internal/entities"
|
||
|
|
"apskel-pos-be/internal/models"
|
||
|
|
|
||
|
|
"github.com/google/uuid"
|
||
|
|
)
|
||
|
|
|
||
|
|
// ToCustomerResponse converts a customer entity to a customer response
|
||
|
|
func ToCustomerResponse(customer *entities.Customer) *models.CustomerResponse {
|
||
|
|
if customer == nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
return &models.CustomerResponse{
|
||
|
|
ID: customer.ID,
|
||
|
|
OrganizationID: customer.OrganizationID,
|
||
|
|
Name: customer.Name,
|
||
|
|
Email: customer.Email,
|
||
|
|
Phone: customer.Phone,
|
||
|
|
Address: customer.Address,
|
||
|
|
IsDefault: customer.IsDefault,
|
||
|
|
IsActive: customer.IsActive,
|
||
|
|
Metadata: customer.Metadata,
|
||
|
|
CreatedAt: customer.CreatedAt,
|
||
|
|
UpdatedAt: customer.UpdatedAt,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ToCustomerResponses converts a slice of customer entities to customer responses
|
||
|
|
func ToCustomerResponses(customers []entities.Customer) []models.CustomerResponse {
|
||
|
|
responses := make([]models.CustomerResponse, len(customers))
|
||
|
|
for i, customer := range customers {
|
||
|
|
responses[i] = *ToCustomerResponse(&customer)
|
||
|
|
}
|
||
|
|
return responses
|
||
|
|
}
|
||
|
|
|
||
|
|
// ToCustomerEntity converts a create customer request to a customer entity
|
||
|
|
func ToCustomerEntity(req *models.CreateCustomerRequest, organizationID uuid.UUID) *entities.Customer {
|
||
|
|
return &entities.Customer{
|
||
|
|
OrganizationID: organizationID,
|
||
|
|
Name: req.Name,
|
||
|
|
Email: req.Email,
|
||
|
|
Phone: req.Phone,
|
||
|
|
Address: req.Address,
|
||
|
|
IsDefault: false, // New customers are not default by default
|
||
|
|
IsActive: true,
|
||
|
|
Metadata: entities.Metadata{},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// UpdateCustomerEntity updates a customer entity with update request data
|
||
|
|
func UpdateCustomerEntity(customer *entities.Customer, req *models.UpdateCustomerRequest) {
|
||
|
|
if req.Name != nil {
|
||
|
|
customer.Name = *req.Name
|
||
|
|
}
|
||
|
|
if req.Email != nil {
|
||
|
|
customer.Email = req.Email
|
||
|
|
}
|
||
|
|
if req.Phone != nil {
|
||
|
|
customer.Phone = req.Phone
|
||
|
|
}
|
||
|
|
if req.Address != nil {
|
||
|
|
customer.Address = req.Address
|
||
|
|
}
|
||
|
|
if req.IsActive != nil {
|
||
|
|
customer.IsActive = *req.IsActive
|
||
|
|
}
|
||
|
|
}
|