diff --git a/app/Classes/Modules/Accounting/ControllersLogic/ApproveDuplicateBankStatementDetailsStatusLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/ApproveDuplicateBankStatementDetailsStatusLogic.php index 3872039b..38565ca6 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/ApproveDuplicateBankStatementDetailsStatusLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/ApproveDuplicateBankStatementDetailsStatusLogic.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanApproveDuplicateBankStatementDetailsStatus; use App\Classes\Modules\Accounting\Services\FetchesBankStatementTransaction; use App\Http\Resources\BankStatementTransactionResource; use App\Classes\Modules\Accounting\Services\UpdatesBankStatementTransactionOwnerStatus; @@ -33,12 +34,17 @@ class ApproveDuplicateBankStatementDetailsStatusLogic extends AbstractController /** @var UpdatesBankStatementTransactionOwnerStatus */ private $updatesBankStatementTransactionOwnerStatus; + /** @var CanApproveDuplicateBankStatementDetailsStatus */ + private $canApproveDuplicateBankStatementDetailsStatus; + /** * @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus + * @param CanApproveDuplicateBankStatementDetailsStatus $canApproveDuplicateBankStatementDetailsStatus */ - public function __construct(UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus) + public function __construct(UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, CanApproveDuplicateBankStatementDetailsStatus $canApproveDuplicateBankStatementDetailsStatus) { $this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus; + $this->canApproveDuplicateBankStatementDetailsStatus = $canApproveDuplicateBankStatementDetailsStatus; } // /** @@ -134,6 +140,8 @@ class ApproveDuplicateBankStatementDetailsStatusLogic extends AbstractController */ public function logic(Request $request): JsonResponse { + $this->canApproveDuplicateBankStatementDetailsStatus->passes(); + // Determine the approval status $status = $this->getConstantStatus($request->route('status')); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/GroupApproveStatementTransactionLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/GroupApproveStatementTransactionLogic.php index 7ae8a2ae..44856e90 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/GroupApproveStatementTransactionLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/GroupApproveStatementTransactionLogic.php @@ -2,6 +2,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanGroupApproveStatementTransaction; use App\Classes\Exceptions\MalformedRequestException; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Accounting\Services\ListsBankStatementTransactions; @@ -37,16 +38,21 @@ class GroupApproveStatementTransactionLogic extends AbstractControllerLogic /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; + /** @var CanGroupApproveStatementTransaction */ + private $canGroupApproveStatementTransaction; + /** * @param ListsBankStatementTransactions $listsBankStatementTransactions * @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus * @param UpdatesTransactionStatus $updatesTransactionStatus + * @param CanGroupApproveStatementTransaction $canGroupApproveStatementTransaction */ - public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions, UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, UpdatesTransactionStatus $updatesTransactionStatus) + public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions, UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, UpdatesTransactionStatus $updatesTransactionStatus, CanGroupApproveStatementTransaction $canGroupApproveStatementTransaction) { $this->listsBankStatementTransactions = $listsBankStatementTransactions; $this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus; $this->updatesTransactionStatus = $updatesTransactionStatus; + $this->canGroupApproveStatementTransaction = $canGroupApproveStatementTransaction; } /** @@ -56,6 +62,7 @@ class GroupApproveStatementTransactionLogic extends AbstractControllerLogic */ public function logic(Request $request): JsonResponse { + $this->canGroupApproveStatementTransaction->passes(); $filters = $request->except(['per_page','order_by']); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/HistoryImportedTransactionMappedControllerLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/HistoryImportedTransactionMappedControllerLogic.php index 2f96c613..fe39f196 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/HistoryImportedTransactionMappedControllerLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/HistoryImportedTransactionMappedControllerLogic.php @@ -2,6 +2,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanViewHistoryImportedTransactionMapped; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; use App\Http\Resources\TransactionMappingLogResource; @@ -26,14 +27,20 @@ class HistoryImportedTransactionMappedControllerLogic extends AbstractController /** @var ListTransactionMappingLogs */ private $listTransactionMappingLogs; + /** @var CanViewHistoryImportedTransactionMapped */ + private $canViewHistoryImportedTransactionMapped; + /** * UpdateAnnouncementLogic constructor. * @param ListTransactionMappingLogs $listTransactionMappingLogs + * @param CanViewHistoryImportedTransactionMapped $canViewHistoryImportedTransactionMapped */ public function __construct( - ListTransactionMappingLogs $listTransactionMappingLogs + ListTransactionMappingLogs $listTransactionMappingLogs, + CanViewHistoryImportedTransactionMapped $canViewHistoryImportedTransactionMapped ) { $this->listTransactionMappingLogs = $listTransactionMappingLogs; + $this->canViewHistoryImportedTransactionMapped = $canViewHistoryImportedTransactionMapped; } /** @@ -42,6 +49,8 @@ class HistoryImportedTransactionMappedControllerLogic extends AbstractController */ public function logic(Request $request): JsonResponse { + $this->canViewHistoryImportedTransactionMapped->passes(); + $query = $this->listTransactionMappingLogs->execute($this->listTransactionMappingLogs->deserializeFilters($request->input('filters'))); return $this->collectionResponse(TransactionMappingLogResource::collection($query)); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/ImportBankStatementLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/ImportBankStatementLogic.php index 2565ea82..1de6a25c 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/ImportBankStatementLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/ImportBankStatementLogic.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanImportBankStatement; use App\Classes\Exceptions\MalformedRequestException; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Jobs\CreateBankStatementTransactionOwners; @@ -29,6 +30,18 @@ class ImportBankStatementLogic extends AbstractControllerLogic ]; } + /** @var CanImportBankStatement */ + private $canImportBankStatement; + + /** + * ImportBankStatementLogic constructor. + * @param CanImportBankStatement $canImportBankStatement + */ + public function __construct(CanImportBankStatement $canImportBankStatement) + { + $this->canImportBankStatement = $canImportBankStatement; + } + /** * @param Request $request @@ -37,6 +50,7 @@ class ImportBankStatementLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { + $this->canImportBankStatement->passes(); $files = $request->file('files'); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementDetailsLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementDetailsLogic.php index 10cffba1..676d36d0 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementDetailsLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementDetailsLogic.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanListBankStatementDetails; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Accounting\Services\ListsBankStatementDetails; use App\Http\Resources\BankStatementDetailResource; @@ -27,13 +28,18 @@ class ListBankStatementDetailsLogic extends AbstractControllerLogic /** @var ListsBankStatementDetails */ private $listsBankStatementDetails; + /** @var CanListBankStatementDetails */ + private $canListBankStatementDetails; + /** * ListBankStatementDetailsLogic constructor. * @param ListsBankStatementDetails $listsBankStatementDetails + * @param CanListBankStatementDetails $canListBankStatementDetails */ - public function __construct(ListsBankStatementDetails $listsBankStatementDetails) + public function __construct(ListsBankStatementDetails $listsBankStatementDetails, CanListBankStatementDetails $canListBankStatementDetails) { $this->listsBankStatementDetails = $listsBankStatementDetails; + $this->canListBankStatementDetails = $canListBankStatementDetails; } @@ -44,6 +50,8 @@ class ListBankStatementDetailsLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { + $this->canListBankStatementDetails->passes(); + $query = $this->listsBankStatementDetails->execute($this->listsBankStatementDetails->deserializeFilters($request->input('filters'))); return $this->collectionResponse(BankStatementDetailResource::collection($query)); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementTransactionsLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementTransactionsLogic.php index 3d2b8273..d7b531df 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementTransactionsLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/ListBankStatementTransactionsLogic.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanListBankStatementTransactions; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Accounting\Services\ListsBankStatementDetails; use App\Classes\Modules\Accounting\Services\ListsBankStatementTransactions; @@ -30,12 +31,17 @@ class ListBankStatementTransactionsLogic extends AbstractControllerLogic /** @var ListsBankStatementTransactions */ private $listsBankStatementTransactions; + /** @var CanListBankStatementTransactions */ + private $canListBankStatementTransactions; + /** * @param ListsBankStatementTransactions $listsBankStatementTransactions + * @param CanListBankStatementTransactions $canListBankStatementTransactions */ - public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions) + public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions, CanListBankStatementTransactions $canListBankStatementTransactions) { $this->listsBankStatementTransactions = $listsBankStatementTransactions; + $this->canListBankStatementTransactions = $canListBankStatementTransactions; } /** @@ -45,6 +51,8 @@ class ListBankStatementTransactionsLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { + $this->canListBankStatementTransactions->passes(); + $query = $this->listsBankStatementTransactions->execute($this->listsBankStatementTransactions->deserializeFilters($request->input('filters'))); return $this->collectionResponse(BankStatementTransactionResource::collection($query)); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/UpdateBankStatementDetailLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/UpdateBankStatementDetailLogic.php index 70186ce1..264dbf66 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/UpdateBankStatementDetailLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/UpdateBankStatementDetailLogic.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanUpdateBankStatementDetail; use App\Classes\Exceptions\MalformedRequestException; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Accounting\Services\CreatesBankStatementTransactionOwner; @@ -46,22 +47,31 @@ class UpdateBankStatementDetailLogic extends AbstractControllerLogic /** @var UpdatesBankStatementTransactionOwnerStatus */ private $updatesBankStatementTransactionOwnerStatus; + /** @var CanUpdateBankStatementDetail */ + private $canUpdateBankStatementDetail; + /** * @param FetchesBankStatementTransaction $fetchesBankStatementTransaction * @param ChecksBillNumber $checksBillNumber + * @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus + * @param CanUpdateBankStatementDetail $canUpdateBankStatementDetail */ public function __construct( FetchesBankStatementTransaction $fetchesBankStatementTransaction, ChecksBillNumber $checksBillNumber, - UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus) + UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, + CanUpdateBankStatementDetail $canUpdateBankStatementDetail) { $this->fetchesBankStatementTransaction = $fetchesBankStatementTransaction; $this->checksBillNumber = $checksBillNumber; $this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus; + $this->canUpdateBankStatementDetail = $canUpdateBankStatementDetail; } public function logic(Request $request): JsonResponse { + $this->canUpdateBankStatementDetail->passes(); + $bankStatementTransaction = $this->fetchesBankStatementTransaction->execute(['id' => $request->route('id')]); $transactionReference = $request->input('transaction_reference'); diff --git a/app/Classes/Modules/Accounting/ControllersLogic/UpdateStatementTransactionStatusLogic.php b/app/Classes/Modules/Accounting/ControllersLogic/UpdateStatementTransactionStatusLogic.php index b208c2e3..281b6ddc 100644 --- a/app/Classes/Modules/Accounting/ControllersLogic/UpdateStatementTransactionStatusLogic.php +++ b/app/Classes/Modules/Accounting/ControllersLogic/UpdateStatementTransactionStatusLogic.php @@ -2,6 +2,7 @@ namespace App\Classes\Modules\Accounting\ControllersLogic; +use App\Classes\Modules\Accounting\Standards\Rules\CanUpdateStatementTransactionStatus; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; use App\Classes\ValueObjects\Constants\ApprovalStatus; @@ -31,17 +32,23 @@ class UpdateStatementTransactionStatusLogic extends AbstractControllerLogic /** @var UpdatesBankStatementTransactionOwnerStatus */ private $updatesBankStatementTransactionOwnerStatus; + /** @var CanUpdateStatementTransactionStatus */ + private $canUpdateStatementTransactionStatus; + /** * UpdateAnnouncementLogic constructor. * @param FetchesBankStatementTransactionOwner $fetchesBankStatementTransactionOwner * @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus + * @param CanUpdateStatementTransactionStatus $canUpdateStatementTransactionStatus */ public function __construct( FetchesBankStatementTransactionOwner $fetchesBankStatementTransactionOwner, - UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus + UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, + CanUpdateStatementTransactionStatus $canUpdateStatementTransactionStatus ) { $this->fetchesBankStatementTransactionOwner = $fetchesBankStatementTransactionOwner; $this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus; + $this->canUpdateStatementTransactionStatus = $canUpdateStatementTransactionStatus; } /** @@ -53,6 +60,8 @@ class UpdateStatementTransactionStatusLogic extends AbstractControllerLogic */ public function logic(Request $request): JsonResponse { + $this->canUpdateStatementTransactionStatus->passes(); + $statementTrasactionOwner = $this->fetchesBankStatementTransactionOwner->execute(['id' => $request->route('id')]); $this->updatesBankStatementTransactionOwnerStatus->execute($statementTrasactionOwner, $request->route('status') == 'approve' ? ApprovalStatus::APPROVED : ApprovalStatus::REJECTED); diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanApproveDuplicateBankStatementDetailsStatus.php b/app/Classes/Modules/Accounting/Standards/Rules/CanApproveDuplicateBankStatementDetailsStatus.php new file mode 100644 index 00000000..8583ff2f --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanApproveDuplicateBankStatementDetailsStatus.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanGroupApproveStatementTransaction.php b/app/Classes/Modules/Accounting/Standards/Rules/CanGroupApproveStatementTransaction.php new file mode 100644 index 00000000..54e10914 --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanGroupApproveStatementTransaction.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanImportBankStatement.php b/app/Classes/Modules/Accounting/Standards/Rules/CanImportBankStatement.php new file mode 100644 index 00000000..e330348e --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanImportBankStatement.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanListBankStatementDetails.php b/app/Classes/Modules/Accounting/Standards/Rules/CanListBankStatementDetails.php new file mode 100644 index 00000000..3825ac6d --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanListBankStatementDetails.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanListBankStatementTransactions.php b/app/Classes/Modules/Accounting/Standards/Rules/CanListBankStatementTransactions.php new file mode 100644 index 00000000..78ae0226 --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanListBankStatementTransactions.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanUpdateBankStatementDetail.php b/app/Classes/Modules/Accounting/Standards/Rules/CanUpdateBankStatementDetail.php new file mode 100644 index 00000000..4d7ebcac --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanUpdateBankStatementDetail.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanUpdateStatementTransactionStatus.php b/app/Classes/Modules/Accounting/Standards/Rules/CanUpdateStatementTransactionStatus.php new file mode 100644 index 00000000..8de31cbf --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanUpdateStatementTransactionStatus.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Accounting/Standards/Rules/CanViewHistoryImportedTransactionMapped.php b/app/Classes/Modules/Accounting/Standards/Rules/CanViewHistoryImportedTransactionMapped.php new file mode 100644 index 00000000..e8e6010a --- /dev/null +++ b/app/Classes/Modules/Accounting/Standards/Rules/CanViewHistoryImportedTransactionMapped.php @@ -0,0 +1,42 @@ +type, RoleTypes::ADMIN_ROLES)) { + return true; + } + return false; + } + + /** + * @param $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return true; + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +}