test drive

This commit is contained in:
2025-04-21 10:39:02 +05:00
parent 885dc939c6
commit 016ffd7614
10 changed files with 158 additions and 36 deletions

View File

@@ -0,0 +1,64 @@
<?php
namespace App\Modules\CardOrder\Nova\Actions;
use App\Nova\Resources\Order\Card\CardOrder;
use App\Repos\Order\OrderRepo;
use App\Repos\Payment\OnlinePaymentRepo;
use Closure;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Collection;
use Laravel\Nova\Actions\Action;
use Laravel\Nova\Actions\ActionResponse;
use Laravel\Nova\Fields\ActionFields;
use Laravel\Nova\Http\Requests\NovaRequest;
class RetryNovaCardOrderPayment extends Action
{
use InteractsWithQueue, Queueable;
/**
* Name.
*/
public function name(): string
{
return __('Retry payment');
}
/**
* Permissions
*/
public static function permissions(CardOrder $resource): Closure
{
return fn () => ! $resource->paid && $resource->status === OrderRepo::PENDING;
}
/**
* Perform the action on the given models.
*
* @param ActionFields $fields
* @param Collection<array-key, \Illuminate\Database\Eloquent\Model> $models
* @return mixed
*/
public function handle(ActionFields $fields, Collection $models): mixed
{
$resource = $models->first();
$payment = (new OnlinePaymentRepo)->payCardOrder($resource);
return $payment['status'] === 'success'
? ActionResponse::openInNewTab($payment['url'])
: ActionResponse::danger('Тöleg sistemada registrasiýa bolmady!');
}
/**
* Get the fields available on the action.
*
* @return array<int, \Laravel\Nova\Fields\Field>
*/
public function fields(NovaRequest $request): array
{
return [];
}
}