aditya.siregar 4f5950543e init
2025-07-18 20:10:29 +07:00

111 lines
2.7 KiB
Go

package mappers
import (
"apskel-pos-be/internal/constants"
"apskel-pos-be/internal/entities"
"apskel-pos-be/internal/models"
)
func UserEntityToModel(entity *entities.User) *models.User {
if entity == nil {
return nil
}
return &models.User{
ID: entity.ID,
OrganizationID: entity.OrganizationID,
OutletID: entity.OutletID,
Name: entity.Name,
Email: entity.Email,
Role: constants.UserRole(entity.Role),
Permissions: map[string]interface{}(entity.Permissions),
IsActive: entity.IsActive,
CreatedAt: entity.CreatedAt,
UpdatedAt: entity.UpdatedAt,
}
}
func UserModelToEntity(model *models.User) *entities.User {
if model == nil {
return nil
}
return &entities.User{
ID: model.ID,
OrganizationID: model.OrganizationID,
OutletID: model.OutletID,
Name: model.Name,
Email: model.Email,
Role: entities.UserRole(model.Role),
Permissions: entities.Permissions(model.Permissions),
IsActive: model.IsActive,
CreatedAt: model.CreatedAt,
UpdatedAt: model.UpdatedAt,
}
}
func UserCreateRequestToEntity(req *models.CreateUserRequest, passwordHash string) *entities.User {
if req == nil {
return nil
}
permissions := entities.Permissions{}
if req.Permissions != nil {
permissions = entities.Permissions(req.Permissions)
}
return &entities.User{
OrganizationID: req.OrganizationID,
OutletID: req.OutletID,
Name: req.Name,
Email: req.Email,
PasswordHash: passwordHash,
Role: entities.UserRole(req.Role),
Permissions: permissions,
IsActive: true,
}
}
func UserEntityToResponse(entity *entities.User) *models.UserResponse {
if entity == nil {
return nil
}
return &models.UserResponse{
ID: entity.ID,
OrganizationID: entity.OrganizationID,
OutletID: entity.OutletID,
Name: entity.Name,
Email: entity.Email,
Role: constants.UserRole(entity.Role),
Permissions: map[string]interface{}(entity.Permissions),
IsActive: entity.IsActive,
CreatedAt: entity.CreatedAt,
UpdatedAt: entity.UpdatedAt,
}
}
func UserEntitiesToModels(entities []*entities.User) []*models.User {
if entities == nil {
return nil
}
models := make([]*models.User, len(entities))
for i, entity := range entities {
models[i] = UserEntityToModel(entity)
}
return models
}
func UserEntitiesToResponses(entities []*entities.User) []*models.UserResponse {
if entities == nil {
return nil
}
responses := make([]*models.UserResponse, len(entities))
for i, entity := range entities {
responses[i] = UserEntityToResponse(entity)
}
return responses
}