From a87b7e316398aecc27ad7184a290f932122b30e0 Mon Sep 17 00:00:00 2001 From: Mohammad Hafijul Islam Date: Thu, 15 Feb 2024 04:48:57 +0600 Subject: [PATCH] service provider updated --- .../Controllers/AssignVendorController.php | 51 +++++++++++++++++-- .../Requests/AssignableVendorInfoRequest.php | 29 +++++++++++ src/Remit.php | 2 + 3 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 src/Http/Requests/AssignableVendorInfoRequest.php diff --git a/src/Http/Controllers/AssignVendorController.php b/src/Http/Controllers/AssignVendorController.php index 903a714..d46d089 100644 --- a/src/Http/Controllers/AssignVendorController.php +++ b/src/Http/Controllers/AssignVendorController.php @@ -5,9 +5,14 @@ use App\Http\Controllers\Controller; use Exception; use Fintech\Core\Traits\ApiResponseTrait; +use Fintech\Remit\Facades\Remit; +use Fintech\Remit\Http\Requests\AssignableVendorInfoRequest; +use Fintech\Remit\Http\Resources\AssignableVendorCollection; use Fintech\Transaction\Facades\Transaction; use Illuminate\Database\Eloquent\ModelNotFoundException; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Str; class AssignVendorController extends Controller { @@ -16,10 +21,9 @@ class AssignVendorController extends Controller /** * Store a newly created resource in storage. */ - public function available(string $id): \Illuminate\Http\JsonResponse|\Fintech\Remit\Http\Resources\AssignableVendorCollection + public function available(string $id): JsonResponse|AssignableVendorCollection { try { - $order = Transaction::order()->find($id); if (! $order) { @@ -32,7 +36,7 @@ public function available(string $id): \Illuminate\Http\JsonResponse|\Fintech\Re 'paginate' => false, ]); - return new \Fintech\Remit\Http\Resources\AssignableVendorCollection($serviceVendors); + return new AssignableVendorCollection($serviceVendors); } catch (ModelNotFoundException $exception) { @@ -47,9 +51,46 @@ public function available(string $id): \Illuminate\Http\JsonResponse|\Fintech\Re /** * Display the specified resource. */ - public function show(string $id) + public function vendor(AssignableVendorInfoRequest $request):JsonResponse { - // + try { + $order = Transaction::order()->find($request->input('order_id')); + + if (! $order) { + throw (new ModelNotFoundException)->setModel(config('fintech.transaction.order_model'), $request->input('order_id')); + } + + $availableVendors = config('fintech.remit.providers'); + + if (!array_key_exists($request->input('vendor_slug'), $availableVendors)) { + throw new \ErrorException('Service Vendor is not available on the configuration.'); + } + + $jsonResponse = []; + + return $this->success($jsonResponse); + + } catch (ModelNotFoundException $exception) { + + return $this->notfound($exception->getMessage()); + + } catch (Exception $exception) { + + return $this->failed($exception->getMessage()); + } + } + + private function defaultVendorData(): array + { + return [ + 'balance' => 'test', + 'approved' => true + ]; + } + + private function cityBankVendorData(): array + { + return ; } /** diff --git a/src/Http/Requests/AssignableVendorInfoRequest.php b/src/Http/Requests/AssignableVendorInfoRequest.php new file mode 100644 index 0000000..367198d --- /dev/null +++ b/src/Http/Requests/AssignableVendorInfoRequest.php @@ -0,0 +1,29 @@ +|string> + */ + public function rules(): array + { + return [ + 'order_id' => ['required', 'min:1', 'integer'], + 'vendor_slug' => ['required', 'string', 'min:1'], + ]; + } +} diff --git a/src/Remit.php b/src/Remit.php index 2e04ed1..3611d9e 100644 --- a/src/Remit.php +++ b/src/Remit.php @@ -2,6 +2,8 @@ namespace Fintech\Remit; +use Fintech\Remit\Vendors\CityBankApi; + class Remit { /**