package dto import ( "time" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" ) // === DTO Structs === type ChickinBaseDTO struct { Id uint `json:"id"` ProjectFlocId uint `json:"project_floc_id"` ChickInDate time.Time `json:"chick_in_date"` Quantity float64 `json:"quantity"` Note string `json:"note"` } type ChickinSimpleDTO struct { Id uint `json:"id"` ProjectFlocId uint `json:"project_floc_id"` ChickInDate time.Time `json:"chick_in_date"` Quantity float64 `json:"quantity"` Note string `json:"note"` CreatedBy uint `json:"created_by"` } type UserBaseDTO struct { Id uint `json:"id"` Name string `json:"name"` } type ChickinListDTO struct { ChickinBaseDTO ProjectFlock *ProjectFlockDTO `json:"project_flock"` CreatedUser *UserBaseDTO `json:"created_user"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ProjectFlockDTO struct { Id uint `json:"id"` Period int `json:"period"` FlockId uint `json:"flock_id"` FlockName string `json:"flock_name"` } // === Mapper Functions === func ToProjectFlockDTO(e entity.ProjectFlock) ProjectFlockDTO { return ProjectFlockDTO{ Id: e.Id, Period: e.Period, FlockId: e.FlockId, FlockName: e.Flock.Name, } } type ChickinDetailDTO struct { ChickinListDTO } // === Mapper Functions === func ToChickinBaseDTO(e entity.ProjectChickin) ChickinBaseDTO { return ChickinBaseDTO{ Id: e.Id, ProjectFlocId: e.ProjectFlocId, ChickInDate: e.ChickInDate, Quantity: e.Quantity, Note: e.Note, } } func ToChickinSimpleDTO(e entity.ProjectChickin) ChickinSimpleDTO { return ChickinSimpleDTO{ Id: e.Id, ProjectFlocId: e.ProjectFlocId, 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 projectFlock *ProjectFlockDTO if e.ProjectFlock.Id != 0 { mapped := ToProjectFlockDTO(e.ProjectFlock) projectFlock = &mapped } return ChickinListDTO{ ChickinBaseDTO: ToChickinBaseDTO(e), ProjectFlock: projectFlock, CreatedAt: e.CreatedAt, UpdatedAt: e.UpdatedAt, CreatedUser: createdUser, } } 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), } } func ToUserBaseDTO(e entity.User) UserBaseDTO { return UserBaseDTO{ Id: e.Id, Name: e.Name, } }