From b1b63d266a343aeb16094eef6020e7a228c1b480 Mon Sep 17 00:00:00 2001 From: aguhh18 Date: Tue, 21 Oct 2025 11:48:54 +0700 Subject: [PATCH] fix[BE]: menggunakan base dto dari dto utama entity ketimbang buat simple dto baru --- .../production/chickins/dto/chickin.dto.go | 178 +++++++----------- .../chickins/services/chickin.service.go | 6 +- 2 files changed, 73 insertions(+), 111 deletions(-) diff --git a/internal/modules/production/chickins/dto/chickin.dto.go b/internal/modules/production/chickins/dto/chickin.dto.go index 9fd29f3c..96115b58 100644 --- a/internal/modules/production/chickins/dto/chickin.dto.go +++ b/internal/modules/production/chickins/dto/chickin.dto.go @@ -4,68 +4,42 @@ import ( "time" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" + areaBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/areas/dto" + fcrBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/fcrs/dto" + flockBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/flocks/dto" + kandangBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/kandangs/dto" + locationBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/locations/dto" + productCategoryBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/product-categories/dto" + userBaseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto" ) // === DTO Structs (ordered) === -type FlockDTO struct { - Id uint `json:"id"` - Name string `json:"name"` -} - -type KandangDTO struct { - Id uint `json:"id"` - Name string `json:"name"` -} - -type ProductCategoryDTO struct { - Id uint `json:"id"` - Name string `json:"name"` -} - -type AreaDTO struct { - Id uint `json:"id"` - Name string `json:"name"` -} - -type FcrDTO struct { - Id uint `json:"id"` - Name string `json:"name"` -} - -type LocationDTO struct { - Id uint `json:"id"` - Name string `json:"name"` +type ChickinBaseDTO struct { + Id uint `json:"id"` + ProjectFlockKandang *ProjectFlockKandangDTO `json:"project_flock_kandang"` + ChickInDate time.Time `json:"chick_in_date"` + Quantity float64 `json:"quantity"` + Note string `json:"note"` } type ProjectFlockDTO struct { - Id uint `json:"id"` - Period int `json:"period"` - Flock *FlockDTO `json:"flock"` - ProductCategory *ProductCategoryDTO `json:"product_category"` - Area *AreaDTO `json:"area"` - Fcr *FcrDTO `json:"fcr"` - Location *LocationDTO `json:"location"` + Id uint `json:"id"` + Period int `json:"period"` + Flock *flockBaseDTO.FlockBaseDTO `json:"flock"` + ProductCategory *productCategoryBaseDTO.ProductCategoryBaseDTO `json:"product_category"` + Area *areaBaseDTO.AreaBaseDTO `json:"area"` + Fcr *fcrBaseDTO.FcrBaseDTO `json:"fcr"` + Location *locationBaseDTO.LocationBaseDTO `json:"location"` } type ProjectFlockKandangDTO struct { - Id uint `json:"id"` - ProjectFlock *ProjectFlockDTO `json:"project_flock"` - Kandang *KandangDTO `json:"kandang"` + Id uint `json:"id"` + ProjectFlock *ProjectFlockDTO `json:"project_flock"` + Kandang *kandangBaseDTO.KandangBaseDTO `json:"kandang"` } -type UserBaseDTO struct { - Id uint `json:"id"` - Name string `json:"name"` -} - -type ChickinBaseDTO struct { - Id uint `json:"id"` - ProjectFlocKandangId uint `json:"project_floc_kandang_id"` - ChickInDate time.Time `json:"chick_in_date"` - Quantity float64 `json:"quantity"` - Note string `json:"note"` -} +// gunakan base DTO dari package users type ChickinSimpleDTO struct { Id uint `json:"id"` @@ -78,10 +52,10 @@ type ChickinSimpleDTO struct { type ChickinListDTO struct { ChickinBaseDTO - ProjectFlockKandang *ProjectFlockKandangDTO `json:"project_flock_kandang"` - CreatedUser *UserBaseDTO `json:"created_user"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` + ProjectFlockKandang *ProjectFlockKandangDTO `json:"project_flock_kandang"` + CreatedUser *userBaseDTO.UserBaseDTO `json:"created_user"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` } type ChickinDetailDTO struct { @@ -90,72 +64,58 @@ type ChickinDetailDTO struct { // === Mapper Functions (ordered) === -func ToFlockDTO(e entity.Flock) FlockDTO { - return FlockDTO{ - Id: e.Id, - Name: e.Name, - } +func ToFlockDTO(e entity.Flock) flockBaseDTO.FlockBaseDTO { + return flockBaseDTO.ToFlockBaseDTO(e) } -func ToKandangDTO(e entity.Kandang) KandangDTO { - return KandangDTO{ - Id: e.Id, - Name: e.Name, - } +func ToKandangDTO(e entity.Kandang) kandangBaseDTO.KandangBaseDTO { + return kandangBaseDTO.ToKandangBaseDTO(e) } -func ToProductCategoryDTO(e entity.ProductCategory) ProductCategoryDTO { - return ProductCategoryDTO{ - Id: e.Id, - Name: e.Name, - } +func ToProductCategoryDTO(e entity.ProductCategory) productCategoryBaseDTO.ProductCategoryBaseDTO { + return productCategoryBaseDTO.ToProductCategoryBaseDTO(e) } -func ToAreaDTO(e entity.Area) AreaDTO { - return AreaDTO{ - Id: e.Id, - Name: e.Name, - } +func ToAreaDTO(e entity.Area) areaBaseDTO.AreaBaseDTO { + return areaBaseDTO.ToAreaBaseDTO(e) } -func ToFcrDTO(e entity.Fcr) FcrDTO { - return FcrDTO{ - Id: e.Id, - Name: e.Name, - } +func ToFcrDTO(e entity.Fcr) fcrBaseDTO.FcrBaseDTO { + return fcrBaseDTO.ToFcrBaseDTO(e) } -func ToLocationDTO(e entity.Location) LocationDTO { - return LocationDTO{ - Id: e.Id, - Name: e.Name, - } +func ToLocationDTO(e entity.Location) locationBaseDTO.LocationBaseDTO { + return locationBaseDTO.ToLocationBaseDTO(e) +} + +func ToUserBaseDTO(e entity.User) userBaseDTO.UserBaseDTO { + return userBaseDTO.ToUserBaseDTO(e) } func ToProjectFlockDTO(e entity.ProjectFlock) ProjectFlockDTO { - var flock *FlockDTO + var flock *flockBaseDTO.FlockBaseDTO if e.Flock.Id != 0 { - mapped := ToFlockDTO(e.Flock) + mapped := flockBaseDTO.ToFlockBaseDTO(e.Flock) flock = &mapped } - var productCategory *ProductCategoryDTO + var productCategory *productCategoryBaseDTO.ProductCategoryBaseDTO if e.ProductCategory.Id != 0 { - mapped := ToProductCategoryDTO(e.ProductCategory) + mapped := productCategoryBaseDTO.ToProductCategoryBaseDTO(e.ProductCategory) productCategory = &mapped } - var area *AreaDTO + var area *areaBaseDTO.AreaBaseDTO if e.Area.Id != 0 { - mapped := ToAreaDTO(e.Area) + mapped := areaBaseDTO.ToAreaBaseDTO(e.Area) area = &mapped } - var fcr *FcrDTO + var fcr *fcrBaseDTO.FcrBaseDTO if e.Fcr.Id != 0 { - mapped := ToFcrDTO(e.Fcr) + mapped := fcrBaseDTO.ToFcrBaseDTO(e.Fcr) fcr = &mapped } - var location *LocationDTO + var location *locationBaseDTO.LocationBaseDTO if e.Location.Id != 0 { - mapped := ToLocationDTO(e.Location) + mapped := locationBaseDTO.ToLocationBaseDTO(e.Location) location = &mapped } return ProjectFlockDTO{ @@ -175,9 +135,9 @@ func ToProjectFlockKandangDTO(e entity.ProjectFlockKandang) ProjectFlockKandangD mapped := ToProjectFlockDTO(e.ProjectFlock) pf = &mapped } - var kandang *KandangDTO + var kandang *kandangBaseDTO.KandangBaseDTO if e.Kandang.Id != 0 { - mapped := ToKandangDTO(e.Kandang) + mapped := kandangBaseDTO.ToKandangBaseDTO(e.Kandang) kandang = &mapped } return ProjectFlockKandangDTO{ @@ -187,20 +147,18 @@ func ToProjectFlockKandangDTO(e entity.ProjectFlockKandang) ProjectFlockKandangD } } -func ToUserBaseDTO(e entity.User) UserBaseDTO { - return UserBaseDTO{ - Id: e.Id, - Name: e.Name, - } -} - func ToChickinBaseDTO(e entity.ProjectChickin) ChickinBaseDTO { + var pfk *ProjectFlockKandangDTO + if e.ProjectFlockKandang.Id != 0 { + mapped := ToProjectFlockKandangDTO(e.ProjectFlockKandang) + pfk = &mapped + } return ChickinBaseDTO{ - Id: e.Id, - ProjectFlocKandangId: e.ProjectFlockKandangId, - ChickInDate: e.ChickInDate, - Quantity: e.Quantity, - Note: e.Note, + Id: e.Id, + ProjectFlockKandang: pfk, + ChickInDate: e.ChickInDate, + Quantity: e.Quantity, + Note: e.Note, } } @@ -216,9 +174,9 @@ func ToChickinSimpleDTO(e entity.ProjectChickin) ChickinSimpleDTO { } func ToChickinListDTO(e entity.ProjectChickin) ChickinListDTO { - var createdUser *UserBaseDTO + var createdUser *userBaseDTO.UserBaseDTO if e.CreatedUser.Id != 0 { - mapped := ToUserBaseDTO(e.CreatedUser) + mapped := userBaseDTO.ToUserBaseDTO(e.CreatedUser) createdUser = &mapped } var pfk *ProjectFlockKandangDTO diff --git a/internal/modules/production/chickins/services/chickin.service.go b/internal/modules/production/chickins/services/chickin.service.go index 64fe1e97..46bc8069 100644 --- a/internal/modules/production/chickins/services/chickin.service.go +++ b/internal/modules/production/chickins/services/chickin.service.go @@ -62,12 +62,16 @@ func (s chickinService) withRelations(db *gorm.DB) *gorm.DB { return db. Preload("CreatedUser"). Preload("ProjectFlockKandang.Kandang"). + Preload("ProjectFlockKandang.Kandang.Location"). + Preload("ProjectFlockKandang.Kandang.Location.Area"). + Preload("ProjectFlockKandang.Kandang.Pic"). Preload("ProjectFlockKandang.ProjectFlock"). Preload("ProjectFlockKandang.ProjectFlock.Flock"). Preload("ProjectFlockKandang.ProjectFlock.ProductCategory"). Preload("ProjectFlockKandang.ProjectFlock.Area"). Preload("ProjectFlockKandang.ProjectFlock.Fcr"). - Preload("ProjectFlockKandang.ProjectFlock.Location") + Preload("ProjectFlockKandang.ProjectFlock.Location"). + Preload("ProjectFlockKandang.ProjectFlock.Location.Area") }