diff --git a/app/Http/Controllers/Api/CardTransactionController.php b/app/Http/Controllers/Api/CardTransactionController.php deleted file mode 100644 index 1271202..0000000 --- a/app/Http/Controllers/Api/CardTransactionController.php +++ /dev/null @@ -1,38 +0,0 @@ -fetchApi( - // passport_serie: $transaction->passport_serie, - // passport_id: $transaction->passport_id, - // card_number_masked: Str::mask($transaction->card_number, '*', 6, 6), - // card_expire_date: $transaction->card_month.'/'.substr($transaction->card_year, 2), - // start_date: $start_date->format('d.m.Y'), - // end_date: $end_date->format('d.m.Y'), - // ); - - // /** @var ResponseTypes\AzatApiClientInfoAllResponse */ - // $data = Str::isJson($response) - // ? json_decode($response) - // : emptyClass(errCode: 1, message: 'Connection issue to VP'); - - // return view('orders.cards.card-transaction.download-card-transaction', [ - // 'transaction' => $data - // ]); - } -} diff --git a/app/Http/Controllers/ApiTesterController.php b/app/Http/Controllers/ApiTesterController.php index 3cc2dfb..fda685e 100644 --- a/app/Http/Controllers/ApiTesterController.php +++ b/app/Http/Controllers/ApiTesterController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Blade; +use Mpdf\Mpdf; class ApiTesterController extends Controller { diff --git a/app/Models/Order/Card/CardBalance/CardBalance.php b/app/Models/Order/Card/CardBalance/CardBalance.php new file mode 100644 index 0000000..44ae54a --- /dev/null +++ b/app/Models/Order/Card/CardBalance/CardBalance.php @@ -0,0 +1,25 @@ +first(); + + /** @var \App\Nova\Resources\Order\Card\CardTransaction\Actions\ResponseTypes\AzatApiClientInfoAllResponse */ + $data = $this->fetchApi($model); + + if ($data->errCode != 0) { + return ActionResponse::danger($data->message); + } + + return Action::modal('modal-response', [ + 'title' => __('Card balance'), + 'html' => Blade::render( + file_get_contents(app_path('Nova/Resources/Order/Card/CardBalance/Views/card-balance.blade.php')), + ['data' => $data] + ) + ]); + } + + /** + * Get the fields available on the action. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @return array + */ + public function fields(NovaRequest $request) + { + return []; + } + + /** + * Fetch api + * + * @param \App\Models\Order\Card\Requisite\CardRequisite $model + */ + public function fetchApi($model) + { + $date = today()->format('d.m.Y'); + + $response = DownloadCardTransaction::make()->fetchApi( + passport_serie: $model->passport_serie, + passport_id: $model->passport_id, + card_number_masked: Str::mask($model->card_number, '*', 6, 6), + card_expire_date: $model->card_month.'/'.substr($model->card_year, 2), + start_date: $date, + end_date: $date, + ); + + return Str::isJson($response) + ? json_decode($response) + : emptyClass(errCode: 1, message: 'Connection issue to VP'); + } +} diff --git a/app/Nova/Resources/Order/Card/CardBalance/CardBalance.php b/app/Nova/Resources/Order/Card/CardBalance/CardBalance.php new file mode 100644 index 0000000..4929535 --- /dev/null +++ b/app/Nova/Resources/Order/Card/CardBalance/CardBalance.php @@ -0,0 +1,174 @@ + + */ + public static $model = \App\Models\Order\Card\CardBalance\CardBalance::class; + + /** + * The single value that should be used to represent the resource when being displayed. + * + * @var string + */ + public static $title = 'unique_id'; + + /** + * The columns that should be searched. + * + * @var array + */ + public static $search = [ + 'unique_id', + ]; + + /** + * Get the displayable label of the resource. + */ + public static function label(): string + { + return __('Card balances'); + } + + /** + * Get the displayable singular label of the resource. + */ + public static function singularLabel(): string + { + return __('Card balance'); + } + + /** + * Build an "index" query for the given resource. + * + * @param \Illuminate\Database\Eloquent\Builder<\App\Models\Order\Card\CardBalance\CardBalance> $query + * @return \Illuminate\Database\Eloquent\Builder<\App\Models\Order\Card\CardBalance\CardBalance> + */ + public static function indexQuery(NovaRequest $request, $query): Builder + { + /** @var \App\Models\User */ + $user = $request->user(); + + if ($user->isAdmin()) { + return $query; + } + + if ($user->isOperator() && count($user->branches()->pluck('branches.id')) < 1) { + return $query->whereIn('branch_id', $user->branches()->pluck('branches.id')); + } + + return $query->where('user_id', $user->id); + } + + /** + * Get the fields displayed by the resource. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @return array + */ + public function fields(NovaRequest $request): array + { + return [ + ID::make()->sortable(), + + Hidden::make('user_id') + ->default(auth()->id()) + ->hideWhenUpdating(), + + Select::make(__('Passport serie'), 'passport_serie') + ->displayUsingLabels() + ->searchable() + ->options(PassportRepo::values()) + ->size('w-1/2') + ->rules('required'), + + NovaInputmask::make(__('Passport id'), 'passport_id') + ->mask('999999') + ->size('w-1/2') + ->rules('required', 'numeric', 'digits:6'), + + NovaInputmask::make(__('Card number'), 'card_number') + ->mask('9999-9999-9999-9999') + ->storeRawValue() + ->size('md:w-1/2') + ->rules('required', 'digits:16'), + + Select::make(__('Card').' '.__('Expiration month'), 'card_month') + ->searchable() + ->options(DateHelperRepository::staticNumberMonths()) + ->size('md:w-1/4') + ->rules('required'), + + Select::make(__('Card').' '.__('Expiration year'), 'card_year') + ->searchable() + ->options(DateHelperRepository::staticNumberYears()) + ->size('md:w-1/4') + ->rules('required'), + ]; + } + + /** + * Get the cards available for the request. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @return array + */ + public function cards(NovaRequest $request) + { + return []; + } + + /** + * Get the filters available for the resource. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @return array + */ + public function filters(NovaRequest $request) + { + return []; + } + + /** + * Get the lenses available for the resource. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @return array + */ + public function lenses(NovaRequest $request) + { + return []; + } + + /** + * Get the actions available for the resource. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @return array + */ + public function actions(NovaRequest $request) + { + return [ + DownloadCardBalance::make() + ->icon('arrow-down-tray') + ->sole(), + ]; + } +} diff --git a/app/Nova/Resources/Order/Card/CardBalance/Views/card-balance.blade.php b/app/Nova/Resources/Order/Card/CardBalance/Views/card-balance.blade.php new file mode 100644 index 0000000..d3774ad --- /dev/null +++ b/app/Nova/Resources/Order/Card/CardBalance/Views/card-balance.blade.php @@ -0,0 +1,67 @@ + + +
+ + +Premium Card
++ {{ __('Card number') }} +
++ {{ $data->cardPan }} +
++ {{ __('Card holder name') }} +
++ {{ $data->clientName }} +
++ Senesi +
++ {{ $data->expDate }} +
++ {{ __('Money Balance') }} +
+{{ $data-> }}
--}} +