package dto import ( "time" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" kandangDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/kandangs/dto" ) // === DTO Structs === type EmployeesRelationDTO struct { Id uint `json:"id"` Name string `json:"name"` } type EmployeesListDTO struct { Id uint `json:"id"` Name string `json:"name"` IsActive bool `json:"is_active"` Kandangs []kandangDTO.KandangRelationDTO `json:"kandangs"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type EmployeesDetailDTO struct { EmployeesListDTO } // === Mapper Functions === func ToEmployeesRelationDTO(e entity.Employees) EmployeesRelationDTO { return EmployeesRelationDTO{ Id: e.Id, Name: e.Name, } } func ToEmployeesListDTO(e entity.Employees) EmployeesListDTO { kandangs := make([]kandangDTO.KandangRelationDTO, 0, len(e.EmployeeKandangs)) for _, rel := range e.EmployeeKandangs { if rel.Kandang.Id == 0 { continue } kandangs = append(kandangs, kandangDTO.ToKandangRelationDTO(rel.Kandang)) } return EmployeesListDTO{ Id: e.Id, Name: e.Name, IsActive: e.IsActive, Kandangs: kandangs, CreatedAt: e.CreatedAt, UpdatedAt: e.UpdatedAt, } } func ToEmployeesListDTOs(e []entity.Employees) []EmployeesListDTO { result := make([]EmployeesListDTO, len(e)) for i, r := range e { result[i] = ToEmployeesListDTO(r) } return result } func ToEmployeesDetailDTO(e entity.Employees) EmployeesDetailDTO { return EmployeesDetailDTO{ EmployeesListDTO: ToEmployeesListDTO(e), } }