'Update Duplicate Bank Statement Details Status', 'message' => 'You have successfully updated the Statement Transation Status' ]; } /** @var ListsBankStatementDetails */ private $listsBankStatementDetails; /** @var FetchesBankStatementDetails */ private $fetchesBankStatementDetails; /** @var UpdatesBankStatementTransactionOwnerStatus */ private $updatesBankStatementTransactionOwnerStatus; /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; /** * UpdateAnnouncementLogic constructor. * @param ListsBankStatementDetails $listsBankStatementDetails * @param FetchesBankStatementDetails $fetchesBankStatementDetails * @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus * @param UpdatesTransactionStatus $updatesTransactionStatus */ public function __construct( listsBankStatementDetails $listsBankStatementDetails, FetchesBankStatementDetails $fetchesBankStatementDetails, UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, UpdatesTransactionStatus $updatesTransactionStatus ) { $this->listsBankStatementDetails = $listsBankStatementDetails; $this->fetchesBankStatementDetails = $fetchesBankStatementDetails; $this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus; $this->updatesTransactionStatus = $updatesTransactionStatus; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request): JsonResponse { $bankSatementDetails = $this->fetchesBankStatementDetails->execute(['id' => $request->route('id')]); $this->updatesBankStatementTransactionOwnerStatus->execute($bankSatementDetails, ApprovalStatus::APPROVED); // todo-new: approve payments status, need to check the owner(if system is shipping, need to api with shipping portal) // if ($bankSatementDetails->transaction->type === StatementTransactionOwnerType::SALES) { // if ($bankSatementDetails->owner->status === ApprovalStatus::PENDING_VERIFICATION) { // $this->updatesTransactionStatus->execute($bankSatementDetails->owner, ApprovalStatus::APPROVED); // } // } $rejectedBankSatementDetails = $this->listsBankStatementDetails->execute(['id_not' => $request->route('id'), 'owner_id' => $bankSatementDetails->owner_id]); if (count($rejectedBankSatementDetails) == 1) { $otherBankStatement = $rejectedBankSatementDetails->first(); $otherSetBankStatement = StatementTransactionOwner::where('system', $otherBankStatement->system)->where('owner_type', $otherBankStatement->owner_type)->where('owner_id', $otherBankStatement->owner_id)->get(); foreach ($otherSetBankStatement as $otherStatement) { // todo: check is this id verification needed? if ($otherStatement->id == $request->route('id')) { $this->updatesBankStatementTransactionOwnerStatus->execute($otherStatement, ApprovalStatus::REJECTED); } else { $this->updatesBankStatementTransactionOwnerStatus->execute($otherStatement, ApprovalStatus::APPROVED); } } } foreach ($rejectedBankSatementDetails as $statement) { $this->updatesBankStatementTransactionOwnerStatus->execute($statement, ApprovalStatus::REJECTED); } dd($bankSatementDetails); return $this->response([]); } }