Files
lti-api/internal/modules/production/chickins/dto/chickin.dto.go
T

259 lines
5.9 KiB
Go

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),
}
}