From a3334c6bb0a41d7466eda7a64fed10fb564df8d7 Mon Sep 17 00:00:00 2001 From: ragilap Date: Mon, 23 Feb 2026 11:56:53 +0700 Subject: [PATCH] [FEAT/BE] fixing approve status unclose --- .../services/project_flock_kandang.service.go | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/internal/modules/production/project-flock-kandangs/services/project_flock_kandang.service.go b/internal/modules/production/project-flock-kandangs/services/project_flock_kandang.service.go index a2d276cd..4374ba25 100644 --- a/internal/modules/production/project-flock-kandangs/services/project_flock_kandang.service.go +++ b/internal/modules/production/project-flock-kandangs/services/project_flock_kandang.service.go @@ -583,7 +583,7 @@ func (s projectFlockKandangService) Closing(c *fiber.Ctx, id uint, req *validati } } if s.ApprovalSvc != nil { - reopenAction := entity.ApprovalActionUpdated + reopenAction := entity.ApprovalActionApproved // Hindari duplikasi jika approval terakhir sudah Disetujui + Updated latestPFK, lerr := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowProjectFlockKandang, id, nil) if lerr != nil { @@ -609,6 +609,31 @@ func (s projectFlockKandangService) Closing(c *fiber.Ctx, id uint, req *validati return nil, aerr } } + + // Pastikan approval project flock kembali ke Aktif + latestPF, lerr := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowProjectFlock, pfk.ProjectFlockId, nil) + if lerr != nil { + return nil, lerr + } + shouldCreatePF := true + if latestPF != nil && + latestPF.StepNumber == uint16(utils.ProjectFlockStepAktif) && + latestPF.Action != nil && *latestPF.Action == reopenAction { + shouldCreatePF = false + } + if shouldCreatePF { + if _, aerr := s.ApprovalSvc.CreateApproval( + c.Context(), + utils.ApprovalWorkflowProjectFlock, + pfk.ProjectFlockId, + utils.ProjectFlockStepAktif, + &reopenAction, + actorID, + nil, + ); aerr != nil && !errors.Is(aerr, gorm.ErrDuplicatedKey) { + return nil, aerr + } + } } default: return nil, fiber.NewError(fiber.StatusBadRequest, "action harus close atau unclose")