mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-26 00:05:44 +00:00
Feat[BE-222,223,224]: creating So create delete patch update get getall approval API
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
||||
approvalDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/approvals/dto"
|
||||
userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto"
|
||||
)
|
||||
|
||||
// === DTO Structs ===
|
||||
|
||||
type MarketingDeliveryProductDTO struct {
|
||||
Id uint `json:"id"`
|
||||
MarketingProductId uint `json:"marketing_product_id"`
|
||||
Qty float64 `json:"qty"`
|
||||
UnitPrice float64 `json:"unit_price"`
|
||||
TotalWeight float64 `json:"total_weight"`
|
||||
AvgWeight float64 `json:"avg_weight"`
|
||||
TotalPrice float64 `json:"total_price"`
|
||||
DeliveryDate *time.Time `json:"delivery_date"`
|
||||
VehicleNumber string `json:"vehicle_number"`
|
||||
}
|
||||
|
||||
type DeliveryOrdersBaseDTO struct {
|
||||
Id uint `json:"id,omitempty"`
|
||||
DeliveryNumber *string `json:"delivery_number,omitempty"`
|
||||
DeliveryDate *time.Time `json:"delivery_date,omitempty"`
|
||||
MarketingId uint `json:"marketing_id"`
|
||||
Notes string `json:"notes,omitempty"`
|
||||
}
|
||||
|
||||
type MarketingBaseDTO struct {
|
||||
Id uint `json:"id"`
|
||||
SoNumber string `json:"so_number"`
|
||||
SoDate time.Time `json:"so_date"`
|
||||
}
|
||||
|
||||
type DeliveryOrdersListDTO struct {
|
||||
DeliveryOrdersBaseDTO
|
||||
Marketing *MarketingBaseDTO `json:"marketing,omitempty"`
|
||||
DeliveryProducts []MarketingDeliveryProductDTO `json:"delivery_products,omitempty"`
|
||||
CreatedUser *userDTO.UserBaseDTO `json:"created_user"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
Approval *approvalDTO.ApprovalBaseDTO `json:"approval,omitempty"`
|
||||
}
|
||||
|
||||
type DeliveryOrdersDetailDTO struct {
|
||||
DeliveryOrdersListDTO
|
||||
}
|
||||
|
||||
// === Mapper Functions ===
|
||||
|
||||
func ToMarketingDeliveryProductDTO(e entity.MarketingDeliveryProduct) MarketingDeliveryProductDTO {
|
||||
return MarketingDeliveryProductDTO{
|
||||
Id: e.Id,
|
||||
MarketingProductId: e.MarketingProductId,
|
||||
Qty: e.Qty,
|
||||
UnitPrice: e.UnitPrice,
|
||||
TotalWeight: e.TotalWeight,
|
||||
AvgWeight: e.AvgWeight,
|
||||
TotalPrice: e.TotalPrice,
|
||||
DeliveryDate: e.DeliveryDate,
|
||||
VehicleNumber: e.VehicleNumber,
|
||||
}
|
||||
}
|
||||
|
||||
func ToDeliveryOrdersBaseDTO(e entity.DeliveryOrders) DeliveryOrdersBaseDTO {
|
||||
var deliveryNumber *string
|
||||
if e.DeliveryNumber != "" {
|
||||
deliveryNumber = &e.DeliveryNumber
|
||||
}
|
||||
|
||||
return DeliveryOrdersBaseDTO{
|
||||
Id: e.Id,
|
||||
DeliveryNumber: deliveryNumber,
|
||||
DeliveryDate: &e.DeliveryDate,
|
||||
MarketingId: e.MarketingId,
|
||||
Notes: e.Notes,
|
||||
}
|
||||
}
|
||||
|
||||
func ToDeliveryOrdersListDTO(e entity.DeliveryOrders) DeliveryOrdersListDTO {
|
||||
var createdUser *userDTO.UserBaseDTO
|
||||
if e.CreatedUser != nil && e.CreatedUser.Id != 0 {
|
||||
mapped := userDTO.ToUserBaseDTO(*e.CreatedUser)
|
||||
createdUser = &mapped
|
||||
}
|
||||
|
||||
var marketing *MarketingBaseDTO
|
||||
if e.Marketing != nil && e.Marketing.Id != 0 {
|
||||
marketing = &MarketingBaseDTO{
|
||||
Id: e.Marketing.Id,
|
||||
SoNumber: e.Marketing.SoNumber,
|
||||
SoDate: e.Marketing.SoDate,
|
||||
}
|
||||
}
|
||||
|
||||
var deliveryProductsDTOs []MarketingDeliveryProductDTO
|
||||
if len(e.DeliveryProducts) > 0 {
|
||||
deliveryProductsDTOs = make([]MarketingDeliveryProductDTO, len(e.DeliveryProducts))
|
||||
for i, dp := range e.DeliveryProducts {
|
||||
deliveryProductsDTOs[i] = ToMarketingDeliveryProductDTO(dp)
|
||||
}
|
||||
}
|
||||
|
||||
return DeliveryOrdersListDTO{
|
||||
DeliveryOrdersBaseDTO: ToDeliveryOrdersBaseDTO(e),
|
||||
Marketing: marketing,
|
||||
DeliveryProducts: deliveryProductsDTOs,
|
||||
CreatedAt: e.CreatedAt,
|
||||
UpdatedAt: e.UpdatedAt,
|
||||
CreatedUser: createdUser,
|
||||
}
|
||||
}
|
||||
|
||||
func ToDeliveryOrdersListDTOWithProducts(e entity.DeliveryOrders, deliveryProducts []entity.MarketingDeliveryProduct) DeliveryOrdersListDTO {
|
||||
var createdUser *userDTO.UserBaseDTO
|
||||
if e.CreatedUser != nil && e.CreatedUser.Id != 0 {
|
||||
mapped := userDTO.ToUserBaseDTO(*e.CreatedUser)
|
||||
createdUser = &mapped
|
||||
}
|
||||
|
||||
var marketing *MarketingBaseDTO
|
||||
if e.Marketing != nil && e.Marketing.Id != 0 {
|
||||
marketing = &MarketingBaseDTO{
|
||||
Id: e.Marketing.Id,
|
||||
SoNumber: e.Marketing.SoNumber,
|
||||
SoDate: e.Marketing.SoDate,
|
||||
}
|
||||
}
|
||||
|
||||
var deliveryProductsDTOs []MarketingDeliveryProductDTO
|
||||
if len(deliveryProducts) > 0 {
|
||||
deliveryProductsDTOs = make([]MarketingDeliveryProductDTO, len(deliveryProducts))
|
||||
for i, dp := range deliveryProducts {
|
||||
deliveryProductsDTOs[i] = ToMarketingDeliveryProductDTO(dp)
|
||||
}
|
||||
}
|
||||
|
||||
return DeliveryOrdersListDTO{
|
||||
DeliveryOrdersBaseDTO: ToDeliveryOrdersBaseDTO(e),
|
||||
Marketing: marketing,
|
||||
DeliveryProducts: deliveryProductsDTOs,
|
||||
CreatedAt: e.CreatedAt,
|
||||
UpdatedAt: e.UpdatedAt,
|
||||
CreatedUser: createdUser,
|
||||
}
|
||||
}
|
||||
|
||||
func ToDeliveryOrdersListDTOs(e []entity.DeliveryOrders) []DeliveryOrdersListDTO {
|
||||
result := make([]DeliveryOrdersListDTO, len(e))
|
||||
for i, r := range e {
|
||||
result[i] = ToDeliveryOrdersListDTO(r)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func ToDeliveryOrdersDetailDTO(e entity.DeliveryOrders) DeliveryOrdersDetailDTO {
|
||||
return DeliveryOrdersDetailDTO{
|
||||
DeliveryOrdersListDTO: ToDeliveryOrdersListDTO(e),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user