Files
online.tbbank.gov.tm-larave…/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForDetail.php
2025-09-08 11:55:05 +05:00

171 lines
8.0 KiB
PHP

<?php
namespace App\Modules\SberPaymentOrder\Nova\Resources\Concerns;
use App\Modules\SberPaymentOrder\Nova\Resources\NovaSberPaymentOrder;
use App\Modules\SberPaymentOrder\Nova\Resources\NovaSberPaymentOrderItem;
use App\Nova\Resources\Branch\Branch;
use App\Repos\Order\OrderRepo;
use App\Repos\System\Settings\Legal\PassportRepo;
use App\Repos\System\Settings\Location\RegionRepo;
use Ebess\AdvancedNovaMediaLibrary\Fields\Files;
use Laravel\Nova\Fields\Badge;
use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\HasMany;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Panel;
use Nurmuhammet\NovaInputmask\NovaInputmask;
use Outl1ne\NovaSimpleRepeatable\SimpleRepeatable;
class SberPaymentOrderFieldsForDetail
{
/**
* Get fields for detail view
*
* @param NovaSberPaymentOrder $resource
* @return array<int, Panel|\Laravel\Nova\Fields\Field|array<int, \Laravel\Nova\Fields\Field>>
*/
public static function make(NovaSberPaymentOrder $resource): array
{
return [
new Panel(__('Status'), [
ID::make()->hide(),
Text::make(__('ID'), 'unique_id'),
Badge::make(__('Status'), 'status')
->map(OrderRepo::statusClasses())
->addTypes([
'primary' => 'dark:bg-gray-900 bg-gray-600 text-white',
])
->labels(OrderRepo::statusValues())
->withIcons()
->icons(OrderRepo::statusIcons()),
Text::make(sprintf('%s (%s)', __('Paid'), __('This month')), function () use ($resource) {
return static::paidField($resource);
}),
Text::make(__('Note'), 'notes')
->fullWidth()
->canSeeWhen('systemUser', $resource),
]),
new Panel(__('Location'), [
Select::make(__('Region'), 'region')
->displayUsingLabels()
->options(RegionRepo::values()),
BelongsTo::make(__('Branch'), 'branch', Branch::class),
]),
new Panel(__('Personal data'), [
Text::make(__('Passport name'), 'passport_name'),
Text::make(__('Passport surname'), 'passport_surname'),
NovaInputmask::make(__('Phone'), 'phone')
->phonenumber('TM'),
Text::make(__('Email'), 'email'),
Text::make(__('Current Residence'), 'address'),
]),
new Panel(__('Payment'), [
Text::make(__('Payment sender data'), function () use ($resource) {
return sprintf(
'<strong>%s-%s %s</strong>',
$resource->sender_passport_serie,
$resource->sender_passport_number,
$resource->sender_full_name
);
})->asHtml(),
Text::make(__('Töleg ugradyjynyň goýum hasaby'), function () use ($resource) {
return sprintf(
'<strong>%s</strong>',
number_format($resource->sender_deposit_account, 0, '', '')
);
})->asHtml(),
SimpleRepeatable::make(__('Payee information'), 'payment_reciever', [
Select::make(__('Passport serie'), 'passport_serie')
->displayUsingLabels()
->searchable()
->options(PassportRepo::values())
->rules('required')
->sortable(),
NovaInputmask::make(__('Passport number'), 'passport_number')
->mask('999999')
->rules('required', 'max:255'),
Text::make(
name: sprintf('%s %s %s', __('Name'), __('Surname'), __('Patronic name')),
attribute: 'full_name'
)->rules('required', 'max:255'),
])->maxRows(1)->minRows(1)->rules('required'),
]),
new Panel(__('Reciver files'), [
Files::make('Talyba degişli walýuta “SBERBANK” kartyň rekwizitleri', 'receiver_requisite')
->rules('required'),
Files::make('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy', 'receiver_document_stating_he_is_studying'),
Files::make('Talybyň bilediniň göçürmesi', 'receiver_receiver_ticket'),
Files::make('Talyba degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi', 'receiver_passport_local'),
Files::make('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin (zagran) pasportynyň göçürmesi', 'receiver_passport_international'),
Files::make('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky daşary ýurtda galyp okap bilýändigi baradaky berlen möhleti hereket edýän rugsatnamasynyň (wizasynyň) bellenen sahypasynyň göçürmesi', 'receiver_visa'),
Files::make('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky Türkmenistandan çykandygy we daşary ýurt döwletine girendigi baradaky ştamplaryň (seneli ştampyň) bellenen sahypasynyň göçürmesi', 'receiver_travel_stamp_on_passport'),
Files::make('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasyndaky maglumatyň doly takyk däl ýagdaýynda takyk däl maglumatyň sebäpleri baradaky daşary ýurt döwletiniň ýokary okuw mekdebinden haty', 'receiver_document_stating_he_is_studying_2'),
]),
new Panel(__('Sender files'), [
Files::make('Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi', 'sender_passport_local'),
Files::make('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportynyň asyl görnüşi we göçürmesi', 'sender_passport_international'),
Files::make('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky daşary döwletine gidendigi we daşary döwlete barandygy baradaky (ştampyň) bellenen sahypasynyň göçürmesi', 'sender_travel_stamp_on_passport'),
Files::make('Ugradyjynyň we kabul edijiniň (talybyň) özara garyndaşlyk derejesini tassyklaýjy resminamalarynyň göçürmesi', 'sender_proof_of_kinship'),
Files::make('Ugradyjy we kabul ediji (talyp) 2015-nji ýyldan soňra Türkmenistanyň raýatynyň pasportyny ikinji gezek alan bolsa, onda birinji gezek alan pasportynyň seriýasy baradaky maglumat', 'sender_passport_local_old'),
Files::make('Ugradyjy we kabul ediji (talyp) 2015-nji ýyldan soňra Türkmenistanyň raýatynyň pasportyny ikinji gezek alandan soňra birinji gezek alan pasportynyň seriýasy baradaky maglumaty bilmeýän, bolsa onda polisiýanyň degişli edaralaryndan birinji alan pasportynyň seriýasy baradaky güwänamasy', 'sender_passport_local_old_replacement'),
]),
HasMany::make(__('Payment items'), 'paymentItems', NovaSberPaymentOrderItem::class),
];
}
/**
* Paid field
*/
public static function paidField(NovaSberPaymentOrder $resource, ?string $date = null): string
{
/** @var \App\Modules\SberPaymentOrder\Models\SberPaymentOrder */
$model = $resource->model();
$items = $model->paymentItems;
$month = $date ?: date('m');
$paid = false;
foreach ($items as $item) {
if (boolval($item->paid)) {
if ($item->created_at->format('m') == $month) {
$paid = true;
}
}
}
return $paid ? 'Tölenen' : 'Tölenmedik';
}
}