Files
online.tbbank.gov.tm-larave…/app/Nova/Resources/Payment/OnlinePaymentHistoryResource.php
2025-03-13 14:43:00 +05:00

167 lines
4.4 KiB
PHP

<?php
namespace App\Nova\Resources\Payment;
use App\Nova\Actions\CheckOnlinePayment;
use App\Nova\Resource;
use App\Repos\Payment\OnlinePaymentRepo;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Badge;
use Laravel\Nova\Fields\DateTime;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest;
class OnlinePaymentHistoryResource extends Resource
{
/**
* The model the resource corresponds to.
*
* @var class-string<\App\Models\Payment\OnlinePaymentHistory>
*/
public static $model = \App\Models\Payment\OnlinePaymentHistory::class;
/**
* The single value that should be used to represent the resource when being displayed.
*
* @var string
*/
public static $title = 'orderId';
/**
* The columns that should be searched.
*
* @var array
*/
public static $search = [
'orderId', 'orderNumber',
];
/**
* Get the displayable label of the resource.
*/
public static function label(): string
{
return __('Online payment history');
}
/**
* Fields for index
*
* @param NovaRequest $request
*/
public function fieldsForIndex(NovaRequest $request)
{
return [
Text::make('PNR', 'orderNumber'),
Text::make('ID', 'orderId'),
Text::make('Möçberi', 'amount'),
Text::make('Api Client', 'api_client'),
Text::make('Desc', 'description'),
Badge::make(__('Status'), 'paymentStatus')
->map(OnlinePaymentRepo::statusClasses())
->addTypes([
'primary' => 'dark:bg-gray-900 bg-gray-600 text-white',
])
->labels(OnlinePaymentRepo::statusValues())
->withIcons()
->icons(OnlinePaymentRepo::statusIcons())
->sortable(),
Text::make('username', 'username'),
DateTime::make(__('Created at'), 'created_at')
->displayUsing(fn ($date) => $date?->format('H:i, d.m.Y')),
];
}
/**
* Get the fields displayed by the resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @return array
*/
public function fields(NovaRequest $request)
{
return [
ID::make()->sortable(),
Text::make('amount'),
Text::make('orderNumber', 'orderNumber'),
Text::make('Api Client', 'api_client'),
Text::make('description'),
Text::make('orderId', 'orderId'),
Text::make('formUrl', 'formUrl'),
Text::make('successUrl', 'successUrl'),
Select::make(__('Status'), 'paymentStatus')
->displayUsingLabels()
->searchable()
->options(OnlinePaymentRepo::statusValues())
->fullWidth()
->filterable(),
Text::make('callbackStatus', 'callbackStatus'),
Text::make('username'),
Text::make('online_paymantable_id'),
Text::make('online_paymantable_type'),
DateTime::make(__('Created at'), 'created_at')
->displayUsing(fn ($date) => $date?->format('H:i, d.m.Y')),
DateTime::make(__('Updated at'), 'updated_at')
->displayUsing(fn ($date) => $date?->format('H:i, d.m.Y')),
];
}
/**
* 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 [
CheckOnlinePayment::make()
->icon('rss')
->sole(),
];
}
}