From 6be7c614c194dd21ecba2752e4ebecd49ff9b1aa Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Thu, 30 May 2024 00:02:05 +0500 Subject: [PATCH] wip --- app/Models/Order/Card/CardPin/CardPin.php | 8 ++++++++ .../Order/Card/Requisite/CardRequisite.php | 8 ++++++++ app/Nova/Resources/Order/Card/Pin/CardPin.php | 18 +++++++++++++++++- .../Order/Card/Requisite/CardRequisite.php | 16 ++++++++++++++++ app/Repos/Payment/OnlinePaymentRepo.php | 2 +- 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/app/Models/Order/Card/CardPin/CardPin.php b/app/Models/Order/Card/CardPin/CardPin.php index d5d8ef1..5c75c8c 100644 --- a/app/Models/Order/Card/CardPin/CardPin.php +++ b/app/Models/Order/Card/CardPin/CardPin.php @@ -74,4 +74,12 @@ class CardPin extends Model { return $this->belongsTo(Branch::class, 'branch_id'); } + + /** + * Price for order + */ + public function priceAmount(): float + { + return 3.02; + } } diff --git a/app/Models/Order/Card/Requisite/CardRequisite.php b/app/Models/Order/Card/Requisite/CardRequisite.php index 5469485..10ad8ca 100644 --- a/app/Models/Order/Card/Requisite/CardRequisite.php +++ b/app/Models/Order/Card/Requisite/CardRequisite.php @@ -75,4 +75,12 @@ class CardRequisite extends Model { return $this->belongsTo(Branch::class, 'branch_id'); } + + /** + * Price for order + */ + public function priceAmount(): float + { + return 2.30; + } } diff --git a/app/Nova/Resources/Order/Card/Pin/CardPin.php b/app/Nova/Resources/Order/Card/Pin/CardPin.php index 13f8b7c..b007275 100644 --- a/app/Nova/Resources/Order/Card/Pin/CardPin.php +++ b/app/Nova/Resources/Order/Card/Pin/CardPin.php @@ -6,7 +6,6 @@ use App\Models\Branch\Branch; use App\Models\Order\Card\CardPin\CardPin as CardPinModel; use App\Nova\Filters\RegionFilter; use App\Nova\Filters\StatusFilter; -use Illuminate\Database\Eloquent\Builder; use App\Nova\Nova; use App\Nova\Resource; use App\Nova\Resources\Order\Card\Requisite\Concerns\CardRequisiteFieldsForDetail; @@ -14,10 +13,12 @@ use App\Nova\Resources\Order\Card\Requisite\Concerns\CardRequisiteFieldsForIndex use App\Repos\Order\Card\CardOrderRepo; use App\Repos\Order\Card\CardTypeRepo; use App\Repos\Order\OrderRepo; +use App\Repos\Payment\OnlinePaymentRepo; use App\Repos\System\Nova\NovaRepo; use App\Repos\System\Settings\Legal\PassportRepo; use App\Repos\System\Settings\Location\RegionRepo; use App\Rules\OnlyLetters; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; @@ -30,6 +31,7 @@ use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Panel; +use Laravel\Nova\URL; use Nurmuhammet\NovaInputmask\NovaInputmask; class CardPin extends Resource @@ -151,6 +153,20 @@ class CardPin extends Resource $model->update(['unique_id' => CardOrderRepo::fillUniqueId($model)]); } + /** + * Return the location to redirect the user after creation. + * + * @param \Laravel\Nova\Resource $resource + */ + public static function redirectAfterCreate(NovaRequest $request, $resource): URL|string + { + $payment = (new OnlinePaymentRepo())->payCardOrder($resource); + + return $payment['status'] === 'success' + ? URL::remote($payment['url']) + : sprintf('resources/%s/%s', static::uriKey(), $resource->getKey()); + } + /** * Get the fields for index. */ diff --git a/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php b/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php index f6d0f48..47a8a29 100644 --- a/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php +++ b/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php @@ -13,6 +13,7 @@ use App\Nova\Resources\Order\Card\Requisite\Concerns\CardRequisiteFieldsForIndex use App\Repos\Order\Card\CardOrderRepo; use App\Repos\Order\Card\CardTypeRepo; use App\Repos\Order\OrderRepo; +use App\Repos\Payment\OnlinePaymentRepo; use App\Repos\System\Nova\NovaRepo; use App\Repos\System\Settings\Legal\PassportRepo; use App\Repos\System\Settings\Location\RegionRepo; @@ -31,6 +32,7 @@ use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Panel; +use Laravel\Nova\URL; use Nurmuhammet\NovaInputmask\NovaInputmask; class CardRequisite extends Resource @@ -156,6 +158,20 @@ class CardRequisite extends Resource $model->update(['unique_id' => CardOrderRepo::fillUniqueId($model)]); } + /** + * Return the location to redirect the user after creation. + * + * @param \Laravel\Nova\Resource $resource + */ + public static function redirectAfterCreate(NovaRequest $request, $resource): URL|string + { + $payment = (new OnlinePaymentRepo())->payCardOrder($resource); + + return $payment['status'] === 'success' + ? URL::remote($payment['url']) + : sprintf('resources/%s/%s', static::uriKey(), $resource->getKey()); + } + /** * Get the fields for index. */ diff --git a/app/Repos/Payment/OnlinePaymentRepo.php b/app/Repos/Payment/OnlinePaymentRepo.php index dca90f1..888bb4b 100644 --- a/app/Repos/Payment/OnlinePaymentRepo.php +++ b/app/Repos/Payment/OnlinePaymentRepo.php @@ -94,7 +94,7 @@ class OnlinePaymentRepo */ public function generateOrderNumber(mixed $resource): int { - return ApiKeyHalkbank::generateOrderNumber($resource); + return date('dmyHis'); } /**