package dto import ( "time" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" ) // === 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 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"` } type ProjectFlockKandangDTO struct { Id uint `json:"id"` ProjectFlock *ProjectFlockDTO `json:"project_flock"` Kandang *KandangDTO `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"` } type ChickinSimpleDTO struct { Id uint `json:"id"` ProjectFlockKandangId uint `json:"project_flock_kandang_id"` ChickInDate time.Time `json:"chick_in_date"` Quantity float64 `json:"quantity"` Note string `json:"note"` CreatedBy uint `json:"created_by"` } 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"` } type ChickinDetailDTO struct { ChickinListDTO } // === Mapper Functions (ordered) === func ToFlockDTO(e entity.Flock) FlockDTO { return FlockDTO{ Id: e.Id, Name: e.Name, } } func ToKandangDTO(e entity.Kandang) KandangDTO { return KandangDTO{ Id: e.Id, Name: e.Name, } } func ToProductCategoryDTO(e entity.ProductCategory) ProductCategoryDTO { return ProductCategoryDTO{ Id: e.Id, Name: e.Name, } } func ToAreaDTO(e entity.Area) AreaDTO { return AreaDTO{ Id: e.Id, Name: e.Name, } } func ToFcrDTO(e entity.Fcr) FcrDTO { return FcrDTO{ Id: e.Id, Name: e.Name, } } func ToLocationDTO(e entity.Location) LocationDTO { return LocationDTO{ Id: e.Id, Name: e.Name, } } func ToProjectFlockDTO(e entity.ProjectFlock) ProjectFlockDTO { var flock *FlockDTO if e.Flock.Id != 0 { mapped := ToFlockDTO(e.Flock) flock = &mapped } var productCategory *ProductCategoryDTO if e.ProductCategory.Id != 0 { mapped := ToProductCategoryDTO(e.ProductCategory) productCategory = &mapped } var area *AreaDTO if e.Area.Id != 0 { mapped := ToAreaDTO(e.Area) area = &mapped } var fcr *FcrDTO if e.Fcr.Id != 0 { mapped := ToFcrDTO(e.Fcr) fcr = &mapped } var location *LocationDTO if e.Location.Id != 0 { mapped := ToLocationDTO(e.Location) location = &mapped } return ProjectFlockDTO{ Id: e.Id, Period: e.Period, Flock: flock, ProductCategory: productCategory, Area: area, Fcr: fcr, Location: location, } } func ToProjectFlockKandangDTO(e entity.ProjectFlockKandang) ProjectFlockKandangDTO { var pf *ProjectFlockDTO if e.ProjectFlock.Id != 0 { mapped := ToProjectFlockDTO(e.ProjectFlock) pf = &mapped } var kandang *KandangDTO if e.Kandang.Id != 0 { mapped := ToKandangDTO(e.Kandang) kandang = &mapped } return ProjectFlockKandangDTO{ Id: e.Id, ProjectFlock: pf, Kandang: kandang, } } func ToUserBaseDTO(e entity.User) UserBaseDTO { return UserBaseDTO{ Id: e.Id, Name: e.Name, } } func ToChickinBaseDTO(e entity.ProjectChickin) ChickinBaseDTO { return ChickinBaseDTO{ Id: e.Id, ProjectFlocKandangId: e.ProjectFlockKandangId, ChickInDate: e.ChickInDate, Quantity: e.Quantity, Note: e.Note, } } func ToChickinSimpleDTO(e entity.ProjectChickin) ChickinSimpleDTO { return ChickinSimpleDTO{ Id: e.Id, ProjectFlockKandangId: e.ProjectFlockKandangId, ChickInDate: e.ChickInDate, Quantity: e.Quantity, Note: e.Note, CreatedBy: e.CreatedBy, } } func ToChickinListDTO(e entity.ProjectChickin) ChickinListDTO { var createdUser *UserBaseDTO if e.CreatedUser.Id != 0 { mapped := ToUserBaseDTO(e.CreatedUser) createdUser = &mapped } var pfk *ProjectFlockKandangDTO if e.ProjectFlockKandang.Id != 0 { mapped := ToProjectFlockKandangDTO(e.ProjectFlockKandang) pfk = &mapped } return ChickinListDTO{ ChickinBaseDTO: ToChickinBaseDTO(e), ProjectFlockKandang: pfk, CreatedUser: createdUser, CreatedAt: e.CreatedAt, UpdatedAt: e.UpdatedAt, } } func ToChickinListDTOs(e []entity.ProjectChickin) []ChickinListDTO { result := make([]ChickinListDTO, len(e)) for i, r := range e { result[i] = ToChickinListDTO(r) } return result } func ToChickinSimpleDTOs(e []entity.ProjectChickin) []ChickinSimpleDTO { result := make([]ChickinSimpleDTO, len(e)) for i, r := range e { result[i] = ToChickinSimpleDTO(r) } return result } func ToChickinDetailDTO(e entity.ProjectChickin) ChickinDetailDTO { return ChickinDetailDTO{ ChickinListDTO: ToChickinListDTO(e), } }