diff --git a/internal/entity/order.go b/internal/entity/order.go index 195a99e..aa4c572 100644 --- a/internal/entity/order.go +++ b/internal/entity/order.go @@ -92,6 +92,7 @@ type OrderRequest struct { PartnerID int64 `json:"partner_id" validate:"required"` PaymentMethod string `json:"payment_method" validate:"required"` OrderItems []OrderItemRequest `json:"order_items" validate:"required,dive"` + VisitDate string `json:"visit_date"` } type OrderItemRequest struct { diff --git a/internal/handlers/request/order.go b/internal/handlers/request/order.go index 0c1add4..8a66311 100644 --- a/internal/handlers/request/order.go +++ b/internal/handlers/request/order.go @@ -16,6 +16,7 @@ type CustomerOrder struct { PartnerID int64 `json:"partner_id" validate:"required"` PaymentMethod transaction.PaymentMethod `json:"payment_method" validate:"required"` OrderItems []OrderItem `json:"order_items" validate:"required"` + VisitDate string `json:"visit_date"` } func (o *CustomerOrder) ToEntity(createdBy int64) *entity.OrderRequest { diff --git a/internal/repository/orders/order.go b/internal/repository/orders/order.go index 3a79976..9723d56 100644 --- a/internal/repository/orders/order.go +++ b/internal/repository/orders/order.go @@ -117,8 +117,7 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.Or Select("orders.id as id, users.name as employee, sites.name as site, orders.created_at as timestamp, orders.created_at as booking_time, STRING_AGG(ticket_summary.name || ' x' || ticket_summary.total_qty, ', ') AS tickets, orders.payment_type as payment_type, orders.status as status, orders.amount as amount, orders.visit_date as visit_date, orders.ticket_status as ticket_status, orders.source as source"). Joins("left join (SELECT items.order_id, products.name, SUM(items.qty) AS total_qty FROM order_items items LEFT JOIN products ON items.item_id = products.id GROUP BY items.order_id, products.name) AS ticket_summary ON orders.id = ticket_summary.order_id"). Joins("left join users on orders.created_by = users.id"). - Joins("left join sites on orders.site_id = sites.id"). - Where("orders.status != ?", "NEW") + Joins("left join sites on orders.site_id = sites.id") if req.PaymentType != "" { query = query.Where("orders.payment_type = ?", req.PaymentType) @@ -138,12 +137,8 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.Or if req.StartDate != "" && req.EndDate != "" { // Assuming req.Date and req.EndDate are in string format "YYYY-MM-DD" - startDate := req.StartDate - endDate := req.EndDate - - if endDate == "" { - endDate = time.Now().Format("2006-01-02") - } + startDate := req.StartDate + " 00:00:00" + endDate := req.EndDate + " 23:59:59" query = query.Where("orders.created_at BETWEEN ? AND ?", startDate, endDate) } @@ -175,7 +170,7 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.Or query = query.Limit(req.Limit) } - if err := query.Scan(&orders).Error; err != nil { + if err := query.Debug().Scan(&orders).Error; err != nil { logger.ContextLogger(ctx).Error("error when get all history orders", zap.Error(err)) return nil, 0, err } diff --git a/internal/services/order/order.go b/internal/services/order/order.go index ccc842c..cf336ce 100644 --- a/internal/services/order/order.go +++ b/internal/services/order/order.go @@ -79,6 +79,12 @@ func (s *OrderService) CreateOrder(ctx mycontext.Context, req *entity.OrderReque totalAmount += product.Price * float64(item.Quantity) } + parsedTime, err := time.Parse("2006-01-02", req.VisitDate) + if err != nil { + fmt.Println("Error parsing date:", err) + return nil, errors.New("product not found") + } + order := &entity.Order{ PartnerID: req.PartnerID, RefID: generator.GenerateUUID(), @@ -91,6 +97,7 @@ func (s *OrderService) CreateOrder(ctx mycontext.Context, req *entity.OrderReque CreatedBy: req.CreatedBy, OrderItems: []entity.OrderItem{}, Source: req.Source, + VisitDate: parsedTime, } for _, item := range req.OrderItems {