This commit is contained in:
aditya.siregar 2024-08-15 22:17:28 +07:00
parent 350c670d04
commit f2029ab5b4
4 changed files with 13 additions and 9 deletions

View File

@ -92,6 +92,7 @@ type OrderRequest struct {
PartnerID int64 `json:"partner_id" validate:"required"` PartnerID int64 `json:"partner_id" validate:"required"`
PaymentMethod string `json:"payment_method" validate:"required"` PaymentMethod string `json:"payment_method" validate:"required"`
OrderItems []OrderItemRequest `json:"order_items" validate:"required,dive"` OrderItems []OrderItemRequest `json:"order_items" validate:"required,dive"`
VisitDate string `json:"visit_date"`
} }
type OrderItemRequest struct { type OrderItemRequest struct {

View File

@ -16,6 +16,7 @@ type CustomerOrder struct {
PartnerID int64 `json:"partner_id" validate:"required"` PartnerID int64 `json:"partner_id" validate:"required"`
PaymentMethod transaction.PaymentMethod `json:"payment_method" validate:"required"` PaymentMethod transaction.PaymentMethod `json:"payment_method" validate:"required"`
OrderItems []OrderItem `json:"order_items" validate:"required"` OrderItems []OrderItem `json:"order_items" validate:"required"`
VisitDate string `json:"visit_date"`
} }
func (o *CustomerOrder) ToEntity(createdBy int64) *entity.OrderRequest { func (o *CustomerOrder) ToEntity(createdBy int64) *entity.OrderRequest {

View File

@ -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"). 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 (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 users on orders.created_by = users.id").
Joins("left join sites on orders.site_id = sites.id"). Joins("left join sites on orders.site_id = sites.id")
Where("orders.status != ?", "NEW")
if req.PaymentType != "" { if req.PaymentType != "" {
query = query.Where("orders.payment_type = ?", 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 != "" { if req.StartDate != "" && req.EndDate != "" {
// Assuming req.Date and req.EndDate are in string format "YYYY-MM-DD" // Assuming req.Date and req.EndDate are in string format "YYYY-MM-DD"
startDate := req.StartDate startDate := req.StartDate + " 00:00:00"
endDate := req.EndDate endDate := req.EndDate + " 23:59:59"
if endDate == "" {
endDate = time.Now().Format("2006-01-02")
}
query = query.Where("orders.created_at BETWEEN ? AND ?", startDate, endDate) 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) 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)) logger.ContextLogger(ctx).Error("error when get all history orders", zap.Error(err))
return nil, 0, err return nil, 0, err
} }

View File

@ -79,6 +79,12 @@ func (s *OrderService) CreateOrder(ctx mycontext.Context, req *entity.OrderReque
totalAmount += product.Price * float64(item.Quantity) 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{ order := &entity.Order{
PartnerID: req.PartnerID, PartnerID: req.PartnerID,
RefID: generator.GenerateUUID(), RefID: generator.GenerateUUID(),
@ -91,6 +97,7 @@ func (s *OrderService) CreateOrder(ctx mycontext.Context, req *entity.OrderReque
CreatedBy: req.CreatedBy, CreatedBy: req.CreatedBy,
OrderItems: []entity.OrderItem{}, OrderItems: []entity.OrderItem{},
Source: req.Source, Source: req.Source,
VisitDate: parsedTime,
} }
for _, item := range req.OrderItems { for _, item := range req.OrderItems {