2025-08-09 15:08:26 +07:00
|
|
|
package transformer
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"eslogad-be/internal/contract"
|
|
|
|
|
"eslogad-be/internal/entities"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func CreateUserRequestToEntity(req *contract.CreateUserRequest, passwordHash string) *entities.User {
|
|
|
|
|
if req == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
return &entities.User{
|
|
|
|
|
Name: req.Name,
|
|
|
|
|
Email: req.Email,
|
|
|
|
|
PasswordHash: passwordHash,
|
|
|
|
|
IsActive: true,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func UpdateUserEntity(existing *entities.User, req *contract.UpdateUserRequest) *entities.User {
|
|
|
|
|
if existing == nil || req == nil {
|
|
|
|
|
return existing
|
|
|
|
|
}
|
|
|
|
|
if req.Name != nil {
|
|
|
|
|
existing.Name = *req.Name
|
|
|
|
|
}
|
|
|
|
|
if req.Email != nil {
|
|
|
|
|
existing.Email = *req.Email
|
|
|
|
|
}
|
|
|
|
|
if req.IsActive != nil {
|
|
|
|
|
existing.IsActive = *req.IsActive
|
|
|
|
|
}
|
|
|
|
|
return existing
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func EntityToContract(user *entities.User) *contract.UserResponse {
|
|
|
|
|
if user == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2025-08-15 21:17:19 +07:00
|
|
|
|
2025-08-09 23:44:03 +07:00
|
|
|
resp := &contract.UserResponse{
|
2025-08-09 15:08:26 +07:00
|
|
|
ID: user.ID,
|
2025-08-15 22:17:01 +07:00
|
|
|
Name: user.Name,
|
2025-08-09 15:08:26 +07:00
|
|
|
Email: user.Email,
|
|
|
|
|
IsActive: user.IsActive,
|
|
|
|
|
CreatedAt: user.CreatedAt,
|
|
|
|
|
UpdatedAt: user.UpdatedAt,
|
|
|
|
|
}
|
2025-08-09 23:44:03 +07:00
|
|
|
if user.Profile != nil {
|
|
|
|
|
resp.Profile = ProfileEntityToContract(user.Profile)
|
|
|
|
|
}
|
2025-08-15 21:17:19 +07:00
|
|
|
if user.Departments != nil && len(user.Departments) > 0 {
|
|
|
|
|
resp.DepartmentResponse = DepartmentsToContract(user.Departments)
|
|
|
|
|
}
|
2025-08-09 23:44:03 +07:00
|
|
|
return resp
|
2025-08-09 15:08:26 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func EntitiesToContracts(users []*entities.User) []contract.UserResponse {
|
|
|
|
|
if users == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
responses := make([]contract.UserResponse, len(users))
|
|
|
|
|
for i, u := range users {
|
|
|
|
|
resp := EntityToContract(u)
|
|
|
|
|
if resp != nil {
|
|
|
|
|
responses[i] = *resp
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return responses
|
|
|
|
|
}
|