From f123de72330fb76edf24471be352da092fd41e8e Mon Sep 17 00:00:00 2001 From: Efril Date: Sun, 10 May 2026 21:31:17 +0700 Subject: [PATCH] Revert "change order response at self order" This reverts commit 7ba776555edbcb8cc723913ded4300e3ddac67b7. --- internal/contract/self_order_contract.go | 34 +++++- internal/handler/self_order_handler.go | 39 ++++++- internal/transformer/order_transformer.go | 120 ---------------------- 3 files changed, 68 insertions(+), 125 deletions(-) diff --git a/internal/contract/self_order_contract.go b/internal/contract/self_order_contract.go index 0d31ba5..85e0c31 100644 --- a/internal/contract/self_order_contract.go +++ b/internal/contract/self_order_contract.go @@ -1,6 +1,8 @@ package contract import ( + "time" + "github.com/google/uuid" ) @@ -78,7 +80,35 @@ type SelfOrderListCategoriesResponse struct { } type SelfOrderListOrdersResponse struct { - Orders []OrderResponse `json:"orders"` + Orders []SelfOrderOrderItem `json:"orders"` } -type SelfOrderOrderLineItem = OrderItemResponse +type SelfOrderOrderItem struct { + ID uuid.UUID `json:"id"` + OrderNumber string `json:"order_number"` + TableNumber *string `json:"table_number,omitempty"` + OrderType string `json:"order_type"` + Status string `json:"status"` + Subtotal float64 `json:"subtotal"` + TaxAmount float64 `json:"tax_amount"` + DiscountAmount float64 `json:"discount_amount"` + TotalAmount float64 `json:"total_amount"` + RemainingAmount float64 `json:"remaining_amount"` + PaymentStatus string `json:"payment_status"` + IsVoid bool `json:"is_void"` + IsRefund bool `json:"is_refund"` + Items []SelfOrderOrderLineItem `json:"items,omitempty"` + CreatedAt time.Time `json:"created_at"` +} + +type SelfOrderOrderLineItem struct { + ProductID uuid.UUID `json:"product_id"` + ProductName string `json:"product_name"` + ProductVariantID *uuid.UUID `json:"product_variant_id,omitempty"` + ProductVariantNam *string `json:"product_variant_name,omitempty"` + Quantity int `json:"quantity"` + UnitPrice float64 `json:"unit_price"` + TotalPrice float64 `json:"total_price"` + Notes *string `json:"notes,omitempty"` + Status string `json:"status"` +} diff --git a/internal/handler/self_order_handler.go b/internal/handler/self_order_handler.go index 19299d0..715e9fa 100644 --- a/internal/handler/self_order_handler.go +++ b/internal/handler/self_order_handler.go @@ -392,11 +392,44 @@ func (h *SelfOrderHandler) GetOrdersBySession(c *gin.Context) { } resp := &contract.SelfOrderListOrdersResponse{ - Orders: make([]contract.OrderResponse, 0, len(orders)), + Orders: make([]contract.SelfOrderOrderItem, 0, len(orders)), } - for _, o := range orders { - resp.Orders = append(resp.Orders, *transformer.OrderEntityToContract(o)) + item := contract.SelfOrderOrderItem{ + ID: o.ID, + OrderNumber: o.OrderNumber, + TableNumber: o.TableNumber, + OrderType: string(o.OrderType), + Status: string(o.Status), + Subtotal: o.Subtotal, + TaxAmount: o.TaxAmount, + DiscountAmount: o.DiscountAmount, + TotalAmount: o.TotalAmount, + RemainingAmount: o.RemainingAmount, + PaymentStatus: string(o.PaymentStatus), + IsVoid: o.IsVoid, + IsRefund: o.IsRefund, + CreatedAt: o.CreatedAt, + } + for _, oi := range o.OrderItems { + lineItem := contract.SelfOrderOrderLineItem{ + ProductID: oi.ProductID, + Quantity: oi.Quantity, + UnitPrice: oi.UnitPrice, + TotalPrice: oi.TotalPrice, + Notes: oi.Notes, + Status: string(oi.Status), + ProductVariantID: oi.ProductVariantID, + } + if oi.Product.ID != uuid.Nil { + lineItem.ProductName = oi.Product.Name + } + if oi.ProductVariant != nil { + lineItem.ProductVariantNam = &oi.ProductVariant.Name + } + item.Items = append(item.Items, lineItem) + } + resp.Orders = append(resp.Orders, item) } util.HandleResponse(c.Writer, c.Request, contract.BuildSuccessResponse(resp), "SelfOrderHandler::GetOrdersBySession") diff --git a/internal/transformer/order_transformer.go b/internal/transformer/order_transformer.go index 0d387d7..72abbe7 100644 --- a/internal/transformer/order_transformer.go +++ b/internal/transformer/order_transformer.go @@ -3,7 +3,6 @@ package transformer import ( "apskel-pos-be/internal/constants" "apskel-pos-be/internal/contract" - "apskel-pos-be/internal/entities" "apskel-pos-be/internal/models" "apskel-pos-be/internal/util" "strconv" @@ -417,122 +416,3 @@ func SplitBillModelToContract(resp *models.SplitBillResponse) *contract.SplitBil Message: resp.Message, } } - -func OrderEntityToContract(o *entities.Order) *contract.OrderResponse { - if o == nil { - return nil - } - - orderItems := make([]contract.OrderItemResponse, 0, len(o.OrderItems)) - for _, oi := range o.OrderItems { - lineItem := contract.OrderItemResponse{ - ID: oi.ID, - OrderID: oi.OrderID, - ProductID: oi.ProductID, - ProductVariantID: oi.ProductVariantID, - Quantity: oi.Quantity, - UnitPrice: oi.UnitPrice, - TotalPrice: oi.TotalPrice, - Modifiers: oi.Modifiers, - Notes: oi.Notes, - Metadata: oi.Metadata, - Status: string(oi.Status), - CreatedAt: oi.CreatedAt, - UpdatedAt: oi.UpdatedAt, - } - if oi.Product.ID != uuid.Nil { - lineItem.ProductName = oi.Product.Name - } - if oi.ProductVariant != nil { - lineItem.ProductVariantName = &oi.ProductVariant.Name - } - orderItems = append(orderItems, lineItem) - } - - payments := make([]contract.PaymentResponse, 0, len(o.Payments)) - for i := range o.Payments { - if p := PaymentEntityToContract(&o.Payments[i]); p != nil { - payments = append(payments, *p) - } - } - - return &contract.OrderResponse{ - ID: o.ID, - OrderNumber: o.OrderNumber, - OutletID: o.OutletID, - UserID: o.UserID, - TableNumber: o.TableNumber, - OrderType: string(o.OrderType), - Status: string(o.Status), - Subtotal: o.Subtotal, - TaxAmount: o.TaxAmount, - DiscountAmount: o.DiscountAmount, - TotalAmount: o.TotalAmount, - TotalCost: o.TotalCost, - RemainingAmount: o.RemainingAmount, - PaymentStatus: string(o.PaymentStatus), - RefundAmount: o.RefundAmount, - IsVoid: o.IsVoid, - IsRefund: o.IsRefund, - VoidReason: o.VoidReason, - VoidedAt: o.VoidedAt, - VoidedBy: o.VoidedBy, - RefundReason: o.RefundReason, - RefundedAt: o.RefundedAt, - RefundedBy: o.RefundedBy, - Metadata: o.Metadata, - CreatedAt: o.CreatedAt, - UpdatedAt: o.UpdatedAt, - OrderItems: orderItems, - Payments: payments, - TotalPaid: o.GetTotalPaid(), - PaymentCount: len(o.Payments), - } -} - -func PaymentEntityToContract(p *entities.Payment) *contract.PaymentResponse { - if p == nil { - return nil - } - - var splitType *string - if p.SplitType != nil { - s := string(*p.SplitType) - splitType = &s - } - - paymentOrderItems := make([]contract.PaymentOrderItemResponse, 0, len(p.PaymentOrderItems)) - for _, poi := range p.PaymentOrderItems { - paymentOrderItems = append(paymentOrderItems, contract.PaymentOrderItemResponse{ - ID: poi.ID, - PaymentID: poi.PaymentID, - OrderItemID: poi.OrderItemID, - Amount: poi.Amount, - CreatedAt: poi.CreatedAt, - UpdatedAt: poi.UpdatedAt, - }) - } - - return &contract.PaymentResponse{ - ID: p.ID, - OrderID: p.OrderID, - PaymentMethodID: p.PaymentMethodID, - PaymentMethodName: p.PaymentMethod.Name, - PaymentMethodType: string(p.PaymentMethod.Type), - Amount: p.Amount, - Status: string(p.Status), - TransactionID: p.TransactionID, - SplitNumber: p.SplitNumber, - SplitTotal: p.SplitTotal, - SplitType: splitType, - SplitDescription: p.SplitDescription, - RefundAmount: p.RefundAmount, - RefundReason: p.RefundReason, - RefundedAt: p.RefundedAt, - RefundedBy: p.RefundedBy, - Metadata: p.Metadata, - CreatedAt: p.CreatedAt, - UpdatedAt: p.UpdatedAt, - PaymentOrderItems: paymentOrderItems, - } -}