diff --git a/internal/modules/production/project-flock-kandangs/dto/project_flock_kandang.dto.go b/internal/modules/production/project-flock-kandangs/dto/project_flock_kandang.dto.go index b7dcdbef..10572c78 100644 --- a/internal/modules/production/project-flock-kandangs/dto/project_flock_kandang.dto.go +++ b/internal/modules/production/project-flock-kandangs/dto/project_flock_kandang.dto.go @@ -16,11 +16,13 @@ import ( userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto" ) +// === DTO Structs (ordered) === + type ProjectFlockKandangBaseDTO struct { Id uint `json:"id"` } -type ProjectFlockCustomDTO struct { +type ProjectFlockDTO struct { Id uint `json:"id"` Period int `json:"period"` Flock *flockDTO.FlockBaseDTO `json:"flock,omitempty"` @@ -33,7 +35,7 @@ type ProjectFlockCustomDTO struct { UpdatedAt time.Time `json:"updated_at"` } -type KandangCustomDTO struct { +type KandangDTO struct { Id uint `json:"id"` Name string `json:"name"` Status string `json:"status"` @@ -52,8 +54,8 @@ type AvailableQtyDTO struct { type ProjectFlockKandangListDTO struct { ProjectFlockKandangBaseDTO - ProjectFlock *ProjectFlockCustomDTO `json:"project_flock,omitempty"` - Kandang *KandangCustomDTO `json:"kandang,omitempty"` + ProjectFlock *ProjectFlockDTO `json:"project_flock,omitempty"` + Kandang *KandangDTO `json:"kandang,omitempty"` Chickins []chickinDTO.ChickinBaseDTO `json:"chickins,omitempty"` AvailableQtys []AvailableQtyDTO `json:"available_qtys,omitempty"` CreatedUser *userDTO.UserBaseDTO `json:"created_user,omitempty"` @@ -65,18 +67,20 @@ type ProjectFlockKandangDetailDTO struct { ProjectFlockKandangListDTO } +// === Mapper Functions (ordered) === + func ToProjectFlockKandangBaseDTO(e entity.ProjectFlockKandang) ProjectFlockKandangBaseDTO { return ProjectFlockKandangBaseDTO{ Id: e.Id, } } -func toProjectFlockCustomDTO(pf *projectFlockDTO.ProjectFlockListDTO) *ProjectFlockCustomDTO { +func toProjectFlockDTO(pf *projectFlockDTO.ProjectFlockListDTO) *ProjectFlockDTO { if pf == nil { return nil } - return &ProjectFlockCustomDTO{ + return &ProjectFlockDTO{ Id: pf.Id, Period: pf.Period, Flock: pf.Flock, @@ -99,28 +103,32 @@ func ToProjectFlockKandangListDTOWithAvailableQty(e entity.ProjectFlockKandang, return ProjectFlockKandangListDTO{ ProjectFlockKandangBaseDTO: ToProjectFlockKandangBaseDTO(e), - ProjectFlock: toProjectFlockCustomDTO(projectFlockSummary), - Kandang: buildKandangFromEntity(e.Kandang), - Chickins: buildChickins(e.Chickins), - AvailableQtys: buildAvailableQtysFromRaw(availableQtysRaw), + ProjectFlock: toProjectFlockDTO(projectFlockSummary), + Kandang: toKandangDTO(e.Kandang), + Chickins: toChickinDTOs(e.Chickins), + AvailableQtys: toAvailableQtyDTOsFromRaw(availableQtysRaw), CreatedAt: e.CreatedAt, - CreatedUser: buildCreatedUser(e.ProjectFlock), - Approval: defaultProjectFlockKandangLatestApproval(e), + CreatedUser: toCreatedUserDTO(e.ProjectFlock), + Approval: toApprovalDTO(e), } } -func toKandangCustomDTO(k projectFlockDTO.KandangWithProjectFlockIdDTO) KandangCustomDTO { - return KandangCustomDTO{ - Id: k.Id, - Name: k.Name, - Status: k.Status, +func toKandangDTO(kandang entity.Kandang) *KandangDTO { + if kandang.Id == 0 { + return nil + } + + return &KandangDTO{ + Id: kandang.Id, + Name: kandang.Name, + Status: kandang.Status, } } -func defaultProjectFlockKandangLatestApproval(e entity.ProjectFlockKandang) *approvalDTO.ApprovalBaseDTO { +func toApprovalDTO(e entity.ProjectFlockKandang) *approvalDTO.ApprovalBaseDTO { if e.LatestApproval != nil { - result := approvalDTO.ToApprovalDTO(*e.LatestApproval) - return &result + mapped := approvalDTO.ToApprovalDTO(*e.LatestApproval) + return &mapped } return nil } @@ -134,13 +142,13 @@ func ToProjectFlockKandangListDTO(e entity.ProjectFlockKandang) ProjectFlockKand return ProjectFlockKandangListDTO{ ProjectFlockKandangBaseDTO: ToProjectFlockKandangBaseDTO(e), - ProjectFlock: toProjectFlockCustomDTO(projectFlockSummary), - Kandang: buildKandangFromEntity(e.Kandang), - Chickins: buildChickins(e.Chickins), - AvailableQtys: buildAvailableQtys(e.Chickins), + ProjectFlock: toProjectFlockDTO(projectFlockSummary), + Kandang: toKandangDTO(e.Kandang), + Chickins: toChickinDTOs(e.Chickins), + AvailableQtys: toAvailableQtyDTOs(e.Chickins), CreatedAt: e.CreatedAt, - CreatedUser: buildCreatedUser(e.ProjectFlock), - Approval: defaultProjectFlockKandangLatestApproval(e), + CreatedUser: toCreatedUserDTO(e.ProjectFlock), + Approval: toApprovalDTO(e), } } @@ -158,7 +166,9 @@ func ToProjectFlockKandangDetailDTO(e entity.ProjectFlockKandang) ProjectFlockKa } } -func buildProductWarehouseFromMap(pwData map[string]interface{}) *ProductWarehouseDTO { +// === Helper Functions (ordered) === + +func toProductWarehouseDTO(pwData map[string]interface{}) *ProductWarehouseDTO { if pwData == nil { return nil } @@ -172,17 +182,17 @@ func buildProductWarehouseFromMap(pwData map[string]interface{}) *ProductWarehou } if pData, ok := pwData["product"].(map[string]interface{}); ok { - dto.Product = buildProductFromMap(pData) + dto.Product = toProductDTO(pData) } if wData, ok := pwData["warehouse"].(map[string]interface{}); ok { - dto.Warehouse = buildWarehouseFromMap(wData) + dto.Warehouse = toWarehouseDTO(wData) } return dto } -func buildProductFromMap(pData map[string]interface{}) *productDTO.ProductBaseDTO { +func toProductDTO(pData map[string]interface{}) *productDTO.ProductBaseDTO { if pData == nil { return nil } @@ -199,7 +209,7 @@ func buildProductFromMap(pData map[string]interface{}) *productDTO.ProductBaseDT return product } -func buildWarehouseFromMap(wData map[string]interface{}) *warehouseDTO.WarehouseBaseDTO { +func toWarehouseDTO(wData map[string]interface{}) *warehouseDTO.WarehouseBaseDTO { if wData == nil { return nil } @@ -219,7 +229,7 @@ func buildWarehouseFromMap(wData map[string]interface{}) *warehouseDTO.Warehouse return warehouse } -func buildCreatedUser(pf entity.ProjectFlock) *userDTO.UserBaseDTO { +func toCreatedUserDTO(pf entity.ProjectFlock) *userDTO.UserBaseDTO { if pf.CreatedUser.Id != 0 { mapped := userDTO.ToUserBaseDTO(pf.CreatedUser) return &mapped @@ -232,19 +242,7 @@ func buildCreatedUser(pf entity.ProjectFlock) *userDTO.UserBaseDTO { return nil } -func buildKandangFromEntity(kandang entity.Kandang) *KandangCustomDTO { - if kandang.Id == 0 { - return nil - } - - return &KandangCustomDTO{ - Id: kandang.Id, - Name: kandang.Name, - Status: kandang.Status, - } -} - -func buildChickins(chickins []entity.ProjectChickin) []chickinDTO.ChickinBaseDTO { +func toChickinDTOs(chickins []entity.ProjectChickin) []chickinDTO.ChickinBaseDTO { if len(chickins) == 0 { return nil } @@ -256,7 +254,7 @@ func buildChickins(chickins []entity.ProjectChickin) []chickinDTO.ChickinBaseDTO return result } -func buildAvailableQtys(chickins []entity.ProjectChickin) []AvailableQtyDTO { +func toAvailableQtyDTOs(chickins []entity.ProjectChickin) []AvailableQtyDTO { if len(chickins) == 0 { return nil } @@ -306,7 +304,7 @@ func buildAvailableQtys(chickins []entity.ProjectChickin) []AvailableQtyDTO { return result } -func buildAvailableQtysFromRaw(availableQtysRaw []map[string]interface{}) []AvailableQtyDTO { +func toAvailableQtyDTOsFromRaw(availableQtysRaw []map[string]interface{}) []AvailableQtyDTO { if len(availableQtysRaw) == 0 { return nil } @@ -318,7 +316,7 @@ func buildAvailableQtysFromRaw(availableQtysRaw []map[string]interface{}) []Avai continue } - pwDTO := buildProductWarehouseFromMap(pwData) + pwDTO := toProductWarehouseDTO(pwData) availableQty := 0.0 if qty, ok := v["available_qty"].(float64); ok { availableQty = qty