package dto import ( "time" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" areaDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/areas/dto" fcrDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/fcrs/dto" flockDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/flocks/dto" kandangDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/kandangs/dto" locationDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/locations/dto" userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto" ) type ProjectFlockBaseDTO struct { Id uint `json:"id"` Period int `json:"period"` Category string `json:"category"` Flock *flockDTO.FlockBaseDTO `json:"flock"` Area *areaDTO.AreaBaseDTO `json:"area"` Fcr *fcrDTO.FcrBaseDTO `json:"fcr"` Location *locationDTO.LocationBaseDTO `json:"location"` } func ToProjectFlockBaseDTO(e entity.ProjectFlock) ProjectFlockBaseDTO { var flock *flockDTO.FlockBaseDTO if e.Flock.Id != 0 { mapped := flockDTO.ToFlockBaseDTO(e.Flock) flock = &mapped } var area *areaDTO.AreaBaseDTO if e.Area.Id != 0 { mapped := areaDTO.ToAreaBaseDTO(e.Area) area = &mapped } var fcr *fcrDTO.FcrBaseDTO if e.Fcr.Id != 0 { mapped := fcrDTO.ToFcrBaseDTO(e.Fcr) fcr = &mapped } var location *locationDTO.LocationBaseDTO if e.Location.Id != 0 { mapped := locationDTO.ToLocationBaseDTO(e.Location) location = &mapped } return ProjectFlockBaseDTO{ Id: e.Id, Period: e.Period, Category: e.Category, Flock: flock, Area: area, Fcr: fcr, Location: location, } } type ProjectFlockListDTO struct { ProjectFlockBaseDTO Kandangs []kandangDTO.KandangBaseDTO `json:"kandangs,omitempty"` CreatedUser *userDTO.UserBaseDTO `json:"created_user"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ProjectFlockDetailDTO struct { ProjectFlockListDTO } type FlockPeriodSummaryDTO struct { Flock flockDTO.FlockBaseDTO `json:"flock"` NextPeriod int `json:"next_period"` } func ToProjectFlockListDTO(e entity.ProjectFlock) ProjectFlockListDTO { var createdUser *userDTO.UserBaseDTO if e.CreatedUser.Id != 0 { mapped := userDTO.ToUserBaseDTO(e.CreatedUser) createdUser = &mapped } var kandangSummaries []kandangDTO.KandangBaseDTO if len(e.Kandangs) > 0 { kandangSummaries = make([]kandangDTO.KandangBaseDTO, len(e.Kandangs)) for i, kandang := range e.Kandangs { kandangSummaries[i] = kandangDTO.ToKandangBaseDTO(kandang) } } return ProjectFlockListDTO{ ProjectFlockBaseDTO: ToProjectFlockBaseDTO(e), Kandangs: kandangSummaries, CreatedAt: e.CreatedAt, UpdatedAt: e.UpdatedAt, CreatedUser: createdUser, } } func ToProjectFlockListDTOs(items []entity.ProjectFlock) []ProjectFlockListDTO { result := make([]ProjectFlockListDTO, len(items)) for i, item := range items { result[i] = ToProjectFlockListDTO(item) } return result } func ToProjectFlockDetailDTO(e entity.ProjectFlock) ProjectFlockDetailDTO { return ProjectFlockDetailDTO{ ProjectFlockListDTO: ToProjectFlockListDTO(e), } } func ToFlockPeriodSummaryDTO(flock entity.Flock, next int) FlockPeriodSummaryDTO { return FlockPeriodSummaryDTO{ Flock: flockDTO.ToFlockBaseDTO(flock), NextPeriod: next, } }