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

136 lines
3.1 KiB
Go

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