'Deleted Transaction', 'message' => 'You have successfully deleted a transaction' ]; } /** @var FetchesTransaction */ private $fetchesTransaction; /** @var DeletesTransaction */ private $deletesTransaction; /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; /** * CreatePaymentVerificationDocumentLogic constructor. * @param FetchesTransaction $fetchesTransaction * @param DeletesTransaction $deletesTransaction */ public function __construct(FetchesTransaction $fetchesTransaction, DeletesTransaction $deletesTransaction, UpdatesTransactionStatus $updatesTransactionStatus) { $this->fetchesTransaction = $fetchesTransaction; $this->deletesTransaction = $deletesTransaction; $this->updatesTransactionStatus = $updatesTransactionStatus; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\MalformedRequestException */ public function logic(Request $request) : JsonResponse { $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); $this->deletesTransaction->execute($transaction); $payment_transaction = $transaction->booking->transactions()->payments()->complete()->where('original_amount', '=', $transaction->original_amount)->where('id', '<', $transaction->id)->orderByDesc('id')->first(); $this->updatesTransactionStatus->execute($payment_transaction, ApprovalStatus::APPROVED); return $this->response([]); } }