From 60757237c0f03b00d2f668309c97da937086c2da Mon Sep 17 00:00:00 2001 From: aguhh18 Date: Mon, 17 Nov 2025 09:28:30 +0700 Subject: [PATCH] Feat[BE-222]: add marketing product to get all marketing for Frontend needs --- .../delivery-orderss/dto/delivery-orders.dto.go | 10 ++++++++++ .../services/delivery-orders.service.go | 9 +++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/internal/modules/marketing/delivery-orderss/dto/delivery-orders.dto.go b/internal/modules/marketing/delivery-orderss/dto/delivery-orders.dto.go index be662412..13a46580 100644 --- a/internal/modules/marketing/delivery-orderss/dto/delivery-orders.dto.go +++ b/internal/modules/marketing/delivery-orderss/dto/delivery-orders.dto.go @@ -24,6 +24,7 @@ type MarketingListDTO struct { Customer *customerDTO.CustomerBaseDTO `json:"customer,omitempty"` SalesPerson *userDTO.UserBaseDTO `json:"sales_person,omitempty"` SoDocs string `json:"so_docs,omitempty"` + SalesOrder []MarketingProductDTO `json:"sales_order,omitempty"` CreatedUser *userDTO.UserBaseDTO `json:"created_user"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` @@ -154,11 +155,20 @@ func ToMarketingListDTO(marketing *entity.Marketing, deliveryProducts []entity.M latestApproval = &mapped } + var salesOrderProducts []MarketingProductDTO + if len(marketing.Products) > 0 { + salesOrderProducts = make([]MarketingProductDTO, len(marketing.Products)) + for i, product := range marketing.Products { + salesOrderProducts[i] = ToMarketingProductDTO(product) + } + } + return MarketingListDTO{ MarketingBaseDTO: ToMarketingBaseDTO(marketing), Customer: customer, SalesPerson: salesPerson, SoDocs: marketing.SoDocs, + SalesOrder: salesOrderProducts, CreatedUser: createdUser, CreatedAt: marketing.CreatedAt, UpdatedAt: marketing.UpdatedAt, diff --git a/internal/modules/marketing/delivery-orderss/services/delivery-orders.service.go b/internal/modules/marketing/delivery-orderss/services/delivery-orders.service.go index 45b11d6d..712c6ace 100644 --- a/internal/modules/marketing/delivery-orderss/services/delivery-orders.service.go +++ b/internal/modules/marketing/delivery-orderss/services/delivery-orders.service.go @@ -97,7 +97,10 @@ func (s deliveryOrdersService) GetAll(c *fiber.Ctx, params *validation.Query) ([ Preload("CreatedUser"). Preload("Customer"). Preload("SalesPerson"). - Preload("Products.ProductWarehouse") + Preload("Products.ProductWarehouse.Product"). + Preload("Products.ProductWarehouse.Warehouse"). + Preload("Products.DeliveryProduct") + if params.MarketingId != 0 { return db.Where("id = ?", params.MarketingId) } @@ -109,7 +112,9 @@ func (s deliveryOrdersService) GetAll(c *fiber.Ctx, params *validation.Query) ([ return nil, 0, err } for i := range marketings { - latestApproval, err := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowMarketing, marketings[i].Id, nil) + latestApproval, err := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowMarketing, marketings[i].Id, func(db *gorm.DB) *gorm.DB { + return db.Preload("ActionUser") + }) if err != nil { s.Log.Warnf("Failed to load approval for marketing %d: %+v", marketings[i].Id, err) }