From 6fba6ef32c54a7a0fcdbf8cda3f809ad58dcd318 Mon Sep 17 00:00:00 2001 From: Isaac Machakata Date: Sun, 7 Apr 2024 03:15:14 +0200 Subject: [PATCH] refactor: allow specific user to perfom known and accepted activities on requisitions --- app/Controllers/Requisition.php | 26 +++++++++++++++++++++- app/Views/forms/authorize-requisitions.php | 7 ++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Requisition.php b/app/Controllers/Requisition.php index c1a5a2e..e52f990 100644 --- a/app/Controllers/Requisition.php +++ b/app/Controllers/Requisition.php @@ -186,6 +186,10 @@ public function viewUserReportsIndex() public function authorizeRequisitionsIndex() { + self::$VIEW_PARAMS['statuses'] = [ + 'Approve' => $this->account->Department == 'Supervisor' ? 'Supervisor_Approved' : 'Finance_Disbursed', + 'CanReject' => $this->account->Department == 'Supervisor' + ]; self::$VIEW_PARAMS['requisitions'] = $this->requisitions ->select('requisitions.ID AS ReqID, requisitions.UpdatedAt, requisitions.Amount, requisitions.Reason, CONCAT(Name, " ", Surname) AS Names') ->where('Status', 'Submitted') @@ -197,10 +201,29 @@ public function authorizeRequisitionsIndex() public function authorizeRequisitions() { + $isSupervisor = $this->account->Department == 'Supervisor'; + self::$VIEW_PARAMS['statuses'] = [ + 'CanReject' => $isSupervisor + ]; + + // this prevents the user from rejecting requisitions without the required rights + if ($isSupervisor) { + $allowedApprovals = 'Supervisor_Approved,Reject'; + self::$VIEW_PARAMS['statuses'] = [ + 'Approve' => 'Supervisor_Approved', + 'CanReject' => $this->account->Department == 'Supervisor' + ]; + } else { + $allowedApprovals = 'Finance_Disbursed'; + } + + // validate form $formIsValid = $this->validate([ 'ID' => 'required|is_not_unique[requisitions.ID]', - 'Status' => 'required|in_list[Supervisor_Approved,Rejected]' + 'Status' => sprintf('required|in_list[%s]', $allowedApprovals) ]); + + // show errors if (!$formIsValid) { self::$VIEW_PARAMS['error'] = $this->validator->getErrors(); self::$VIEW_PARAMS['requisitions'] = $this->requisitions @@ -217,6 +240,7 @@ public function authorizeRequisitions() $requisition->Status = $submittedData['Status']; $this->requisitions->update($submittedData, $requisition); + // get updated requisitions self::$VIEW_PARAMS['requisitions'] = $this->requisitions ->select('requisitions.ID AS ReqID, requisitions.UpdatedAt, requisitions.Amount, requisitions.Reason, CONCAT(Name, " ", Surname) AS Names') ->where('Status', 'Submitted') diff --git a/app/Views/forms/authorize-requisitions.php b/app/Views/forms/authorize-requisitions.php index 2c7732b..01a0f50 100644 --- a/app/Views/forms/authorize-requisitions.php +++ b/app/Views/forms/authorize-requisitions.php @@ -17,6 +17,7 @@

Recent Requisitions

Here's a list of the recent requisitions requiring your attention. + No new requisitions were found.' : '' ?>
@@ -91,10 +92,12 @@
- + - + + +