From 626dff61375eb22d6058b72502f3ed06b9dc3a2e Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Wed, 21 Jun 2023 15:19:45 +0800 Subject: [PATCH] create a public api for mappable transactions --- .../ListMappableTransactionsLogic.php | 52 +++++++++++++++++++ .../ListMappableTransactionsController.php | 20 +++++++ .../Resources/MappableTransactionResource.php | 40 ++++++++++++++ routes/apipub.php | 1 + 4 files changed, 113 insertions(+) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php create mode 100644 app/Http/Controllers/Transactions/ListMappableTransactionsController.php create mode 100644 app/Http/Resources/MappableTransactionResource.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php new file mode 100644 index 00000000..4cfc8395 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php @@ -0,0 +1,52 @@ + 'Retrieved Transactions', + 'message' => 'You have successfully retrieved a list of transactions' + ]; + } + + + /** @var ListsTransactions */ + private $listsTransactions; + + /** + * ListTransactionsLogic constructor. + * @param ListsTransactions $listsTransactions + */ + public function __construct(ListsTransactions $listsTransactions) + { + $this->listsTransactions = $listsTransactions; + } + + + + public function logic(Request $request) : JsonResponse + { + + $query = $this->listsTransactions->execute($this->listsTransactions->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(TransactionResource::collection($query)); + + } + + + +} diff --git a/app/Http/Controllers/Transactions/ListMappableTransactionsController.php b/app/Http/Controllers/Transactions/ListMappableTransactionsController.php new file mode 100644 index 00000000..abf83758 --- /dev/null +++ b/app/Http/Controllers/Transactions/ListMappableTransactionsController.php @@ -0,0 +1,20 @@ +execute($request); + } +} diff --git a/app/Http/Resources/MappableTransactionResource.php b/app/Http/Resources/MappableTransactionResource.php new file mode 100644 index 00000000..cd89f940 --- /dev/null +++ b/app/Http/Resources/MappableTransactionResource.php @@ -0,0 +1,40 @@ +type === TransactionType::TOP_UP) { + $reference = $this->owner->owner->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference; + } + + if($this->type === TransactionType::PAYMENT && $this->owner === Transaction::class){ + $reference = $this->owner->owner->owner->reference; + } + + return [ + 'system' => 'SHIPPING_PORTAL', + 'owner_type' => $this->owner_type, + 'owner_id'=> $this->id, + 'owner_reference'=> $reference, + ]; + } +} diff --git a/routes/apipub.php b/routes/apipub.php index 3df8edae..86809f05 100644 --- a/routes/apipub.php +++ b/routes/apipub.php @@ -5,6 +5,7 @@ use Illuminate\Support\Facades\Route; Route::group(['middleware' => 'apipub', 'prefix' => 'v1', 'as' => 'apipub.'], function () { Route::group(['middleware' => 'token.check'], function () { Route::get('transactions/query', 'Transactions\ListTransactionsController@list')->name('transaction.list'); + Route::get('transactions/mappable/query', 'Transactions\ListMappableTransactionsController@list')->name('transaction.mappable.list'); Route::get('groups/query', 'Transactions\ListGroupsController@list')->name('group.list'); }); });