fix[BE]: fix naming on project_flock_kandang dto to standarized project

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