From 7a737d7f830faadcad8e7eaec09f160d436a0049 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 14 May 2026 14:41:50 +0700 Subject: [PATCH] add list order by outlet id --- internal/repository/order_repository.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/internal/repository/order_repository.go b/internal/repository/order_repository.go index 1ba460b..623ebcb 100644 --- a/internal/repository/order_repository.go +++ b/internal/repository/order_repository.go @@ -27,6 +27,7 @@ type OrderRepository interface { UpdatePaymentStatus(ctx context.Context, id uuid.UUID, status entities.PaymentStatus) error UpdateStatus(ctx context.Context, id uuid.UUID, status entities.OrderStatus) error GetNextOrderNumber(ctx context.Context, organizationID, outletID uuid.UUID) (string, error) + ListByOutletID(ctx context.Context, outletID uuid.UUID, limit, offset int) ([]*entities.Order, int64, error) } type OrderRepositoryImpl struct { @@ -270,3 +271,27 @@ func (r *OrderRepositoryImpl) GetNextOrderNumber(ctx context.Context, organizati orderNumber := fmt.Sprintf("ORD/%04d%02d/%06d", year, month, sequence.SequenceNumber) return orderNumber, nil } + +func (r *OrderRepositoryImpl) ListByOutletID(ctx context.Context, outletID uuid.UUID, limit, offset int) ([]*entities.Order, int64, error) { + var orders []*entities.Order + var total int64 + + query := r.db.WithContext(ctx).Model(&entities.Order{}). + Preload("Organization"). + Preload("Outlet"). + Preload("User"). + Preload("OrderItems"). + Preload("OrderItems.Product"). + Preload("OrderItems.ProductVariant"). + Preload("Payments"). + Preload("Payments.PaymentMethod"). + Preload("Payments.PaymentOrderItems"). + Where("outlet_id = ?", outletID) + + if err := query.Count(&total).Error; err != nil { + return nil, 0, err + } + + err := query.Limit(limit).Offset(offset).Order("created_at DESC").Find(&orders).Error + return orders, total, err +}