From 8a403e803c5c3d67557a7665372bc2afd8fb7a36 Mon Sep 17 00:00:00 2001 From: giovanni Date: Fri, 30 Jan 2026 14:47:13 +0700 Subject: [PATCH] fix filter by kandang --- .../modules/closings/services/closing.service.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/internal/modules/closings/services/closing.service.go b/internal/modules/closings/services/closing.service.go index a3cfb2cc..923a2b1c 100644 --- a/internal/modules/closings/services/closing.service.go +++ b/internal/modules/closings/services/closing.service.go @@ -367,7 +367,7 @@ func (s closingService) GetClosingSapronak(c *fiber.Ctx, projectFlockID uint, pa return nil, 0, fiber.NewError(fiber.StatusBadRequest, "type must be either incoming or outgoing") } - warehouseIDs, err := s.getWarehouseIDsByProjectFlock(c.Context(), projectFlockID) + warehouseIDs, err := s.getWarehouseIDsByProjectFlock(c.Context(), projectFlockID, params.KandangID) if err != nil { s.Log.Errorf("Failed to fetch warehouses for project flock %d: %+v", projectFlockID, err) return nil, 0, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch warehouses for project flock") @@ -451,7 +451,7 @@ func (s closingService) GetClosingSapronakSummary(c *fiber.Ctx, projectFlockID u return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch project flock") } - warehouseIDs, err := s.getWarehouseIDsByProjectFlock(c.Context(), projectFlockID) + warehouseIDs, err := s.getWarehouseIDsByProjectFlock(c.Context(), projectFlockID, params.KandangID) if err != nil { s.Log.Errorf("Failed to fetch warehouses for project flock %d: %+v", projectFlockID, err) return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch warehouses for project flock") @@ -494,13 +494,16 @@ func (s closingService) GetClosingSapronakSummary(c *fiber.Ctx, projectFlockID u return items, nil } -func (s closingService) getWarehouseIDsByProjectFlock(ctx context.Context, projectFlockID uint) ([]uint, error) { +func (s closingService) getWarehouseIDsByProjectFlock(ctx context.Context, projectFlockID uint, kandangID *uint) ([]uint, error) { var kandangIDs []uint db := s.Repository.DB().WithContext(ctx) - if err := db.Model(&entity.ProjectFlockKandang{}). - Where("project_flock_id = ?", projectFlockID). - Pluck("kandang_id", &kandangIDs).Error; err != nil { + query := db.Model(&entity.ProjectFlockKandang{}). + Where("project_flock_id = ?", projectFlockID) + if kandangID != nil && *kandangID > 0 { + query = query.Where("id = ?", *kandangID) + } + if err := query.Pluck("kandang_id", &kandangIDs).Error; err != nil { return nil, err }