From 44ed2f55e9d68bc3c342eee864247e6289cc933b Mon Sep 17 00:00:00 2001 From: glovetleong Date: Wed, 22 Dec 2021 14:22:38 +0800 Subject: [PATCH] delete transaction --- .../DeleteTransactionLogic.php | 72 +++++++++++++++++++ .../CreateTransactionController.php | 2 +- .../DeletePaymentProofDocumentController.php | 14 ++++ app/Models/Transaction.php | 3 + routes/transaction.php | 1 + 5 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/DeleteTransactionLogic.php create mode 100644 app/Http/Controllers/Transactions/DeletePaymentProofDocumentController.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/DeleteTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/DeleteTransactionLogic.php new file mode 100644 index 00000000..7995e447 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/DeleteTransactionLogic.php @@ -0,0 +1,72 @@ + '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([]); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Transactions/CreateTransactionController.php b/app/Http/Controllers/Transactions/CreateTransactionController.php index c311ca19..fa67604a 100644 --- a/app/Http/Controllers/Transactions/CreateTransactionController.php +++ b/app/Http/Controllers/Transactions/CreateTransactionController.php @@ -10,6 +10,6 @@ class CreateTransactionController { public function create(Request $request, CreateTransactionLogic $logic): JsonResponse { - return $logic->execute($request); + return $logic->logic($request); } } \ No newline at end of file diff --git a/app/Http/Controllers/Transactions/DeletePaymentProofDocumentController.php b/app/Http/Controllers/Transactions/DeletePaymentProofDocumentController.php new file mode 100644 index 00000000..d90cf1df --- /dev/null +++ b/app/Http/Controllers/Transactions/DeletePaymentProofDocumentController.php @@ -0,0 +1,14 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 0250514f..a3e16c79 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -7,6 +7,7 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; @@ -17,6 +18,8 @@ use Illuminate\Database\Eloquent\Relations\MorphTo; class Transaction extends AbstractModel implements Documentable { + use SoftDeletes; + protected $table = 'transactions'; public function owner(): morphTo diff --git a/routes/transaction.php b/routes/transaction.php index 9f10c6cc..17502743 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -10,6 +10,7 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => route::post('/supplier/{id}/bill/create', 'CreateSupplierTransactionController@create')->name('supplier.create'); route::post('{id}/bill/verification', 'CreatePaymentProofDocumentController@verify')->name('bill.verification'); route::post('{id}/bill/pay', 'CreatePaymentProofDocumentController@pay')->name('bill.pay'); + route::delete('{id}/bill/delete', 'DeletePaymentProofDocumentController@delete')->name('bill.delete'); Route::post('booking/{id}/details/update', 'CreatePurchaseOrderTransactionController@create')->name('po.create');