112 lines
3.0 KiB
Go
Raw Permalink Normal View History

2025-07-18 20:10:29 +07:00
package transformer
import (
"apskel-pos-be/internal/constants"
"apskel-pos-be/internal/contract"
"apskel-pos-be/internal/models"
)
func CreateUserRequestToModel(req *contract.CreateUserRequest) *models.CreateUserRequest {
return &models.CreateUserRequest{
OrganizationID: req.OrganizationID,
OutletID: req.OutletID,
Name: req.Name,
Email: req.Email,
Password: req.Password,
Role: constants.UserRole(req.Role),
Permissions: req.Permissions,
}
}
func UpdateUserRequestToModel(req *contract.UpdateUserRequest) *models.UpdateUserRequest {
modelReq := &models.UpdateUserRequest{
OutletID: req.OutletID,
IsActive: req.IsActive,
}
if req.Name != nil {
modelReq.Name = req.Name
}
if req.Email != nil {
modelReq.Email = req.Email
}
if req.Role != nil {
role := constants.UserRole(*req.Role)
modelReq.Role = &role
}
if req.Permissions != nil {
modelReq.Permissions = req.Permissions
}
return modelReq
}
func ChangePasswordRequestToModel(req *contract.ChangePasswordRequest) *models.ChangePasswordRequest {
return &models.ChangePasswordRequest{
CurrentPassword: req.CurrentPassword,
NewPassword: req.NewPassword,
}
}
2025-07-30 23:18:20 +07:00
func UpdateUserOutletRequestToModel(req *contract.UpdateUserOutletRequest) *models.UpdateUserOutletRequest {
return &models.UpdateUserOutletRequest{
OutletID: req.OutletID,
}
}
2025-07-18 20:10:29 +07:00
// Model to Contract conversions
func UserModelToResponse(user *models.User) *contract.UserResponse {
return &contract.UserResponse{
ID: user.ID,
OrganizationID: user.OrganizationID,
OutletID: user.OutletID,
Name: user.Name,
Email: user.Email,
Role: string(user.Role),
Permissions: user.Permissions,
IsActive: user.IsActive,
CreatedAt: user.CreatedAt,
UpdatedAt: user.UpdatedAt,
}
}
func UserModelResponseToResponse(userResponse *models.UserResponse) *contract.UserResponse {
return &contract.UserResponse{
ID: userResponse.ID,
OrganizationID: userResponse.OrganizationID,
OutletID: userResponse.OutletID,
Name: userResponse.Name,
Email: userResponse.Email,
Role: string(userResponse.Role),
Permissions: userResponse.Permissions,
IsActive: userResponse.IsActive,
CreatedAt: userResponse.CreatedAt,
UpdatedAt: userResponse.UpdatedAt,
}
}
func UsersToResponses(users []models.User) []contract.UserResponse {
responses := make([]contract.UserResponse, len(users))
for i, user := range users {
response := UserModelToResponse(&user)
if response != nil {
responses[i] = *response
}
}
return responses
}
func UserResponsesToResponses(userResponses []models.UserResponse) []contract.UserResponse {
responses := make([]contract.UserResponse, len(userResponses))
for i, userResponse := range userResponses {
response := UserModelResponseToResponse(&userResponse)
if response != nil {
responses[i] = *response
}
}
return responses
}