add Sber payment order module
This commit is contained in:
@@ -11,7 +11,7 @@ return new class extends Migration
|
|||||||
*/
|
*/
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('swift_payments', function (Blueprint $table) {
|
Schema::create('sber_payment_orders', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('unique_id')->nullable()->unique();
|
$table->string('unique_id')->nullable()->unique();
|
||||||
|
|
||||||
@@ -43,6 +43,6 @@ return new class extends Migration
|
|||||||
*/
|
*/
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('swift_payments');
|
Schema::dropIfExists('sber_payment_orders');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
141
app/Modules/SberPaymentOrder/Models/SberPaymentOrder.php
Normal file
141
app/Modules/SberPaymentOrder/Models/SberPaymentOrder.php
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\SberPaymentOrder\Models;
|
||||||
|
|
||||||
|
use App\Models\Branch\Branch;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Spatie\MediaLibrary\HasMedia;
|
||||||
|
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||||
|
|
||||||
|
class SberPaymentOrder extends Model implements HasMedia
|
||||||
|
{
|
||||||
|
use InteractsWithMedia;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Table
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $table = 'sber_payment_orders';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Guarded attributes
|
||||||
|
*/
|
||||||
|
protected $guarded = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that should be cast.
|
||||||
|
*
|
||||||
|
* @var array<string, string>
|
||||||
|
*/
|
||||||
|
protected $casts = [
|
||||||
|
'sender_datas' => 'array',
|
||||||
|
'payment_reciever' => 'array',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Media collections
|
||||||
|
*/
|
||||||
|
public function registerMediaCollections(): void
|
||||||
|
{
|
||||||
|
foreach (static::reciverFiles() as $reciverFile) {
|
||||||
|
$this->addMediaCollection($reciverFile['code'])->singleFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (static::senderFiles() as $senderFile) {
|
||||||
|
$this->addMediaCollection($senderFile['code'])->singleFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Branch
|
||||||
|
*/
|
||||||
|
public function branch(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Branch::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Required files
|
||||||
|
*/
|
||||||
|
public static function reciverFiles(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'required' => true,
|
||||||
|
'code' => 'requisite',
|
||||||
|
'name' => 'Talyba degişli walýuta “SBERBANK” kartyň rekwizitleri',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'document_stating_he_is_studying',
|
||||||
|
'name' => 'Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'passport_local',
|
||||||
|
'name' => 'Talyba degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'passport_international',
|
||||||
|
'name' => 'Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin (zagran) pasportynyň göçürmesi',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'visa',
|
||||||
|
'name' => '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',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'travel_stamp_on_passport',
|
||||||
|
'name' => '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',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'document_stating_he_is_studying_2',
|
||||||
|
'name' => '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',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sender files
|
||||||
|
*/
|
||||||
|
public static function senderFiles(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'required' => true,
|
||||||
|
'code' => 'passport_local',
|
||||||
|
'name' => 'Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'passport_international',
|
||||||
|
'name' => 'Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportynyň asyl görnüşi we göçürmesi',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'travel_stamp_on_passport',
|
||||||
|
'name' => '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',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => true,
|
||||||
|
'code' => 'proof_of_kinship',
|
||||||
|
'name' => 'Ugradyjynyň we kabul edijiniň (talybyň) özara garyndaşlyk derejesini tassyklaýjy resminamalarynyň göçürmesi',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'passport_local_old',
|
||||||
|
'name' => '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',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'code' => 'passport_local_old_replacement',
|
||||||
|
'name' => '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',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\SberPaymentOrder\Nova\Resources\Concerns;
|
||||||
|
|
||||||
|
use App\Modules\VisaMasterPaymentOrder\Nova\Resources\VisaMasterPaymentOrderFileFields;
|
||||||
|
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 Laravel\Nova\Fields\Badge;
|
||||||
|
use Laravel\Nova\Fields\BelongsTo;
|
||||||
|
use Laravel\Nova\Fields\Hidden;
|
||||||
|
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
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function make($resource): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
new Panel(__('Status'), [
|
||||||
|
ID::make()
|
||||||
|
->hideFromDetail(),
|
||||||
|
|
||||||
|
Hidden::make('user_id')
|
||||||
|
->default(auth()->id())
|
||||||
|
->hideWhenUpdating(),
|
||||||
|
|
||||||
|
Text::make(__('ID'), 'unique_id')
|
||||||
|
->exceptOnForms(),
|
||||||
|
|
||||||
|
Select::make(__('Status'), 'status')
|
||||||
|
->displayUsingLabels()
|
||||||
|
->searchable()
|
||||||
|
->options(OrderRepo::statusValues())
|
||||||
|
->default(OrderRepo::defaultStatus())
|
||||||
|
->fullWidth()
|
||||||
|
->hideFromDetail()
|
||||||
|
->rules('required')
|
||||||
|
->canSeeWhen('systemUser', $resource),
|
||||||
|
|
||||||
|
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(__('Note'), 'notes')
|
||||||
|
->fullWidth()
|
||||||
|
->canSeeWhen('systemUser', $resource),
|
||||||
|
]),
|
||||||
|
new Panel(__('Location'), [
|
||||||
|
Select::make(__('Region'), 'region')
|
||||||
|
->fullWidth()
|
||||||
|
->displayUsingLabels()
|
||||||
|
->searchable()
|
||||||
|
->options(RegionRepo::values())
|
||||||
|
->default(RegionRepo::default())
|
||||||
|
->rules('required')
|
||||||
|
->sortable(),
|
||||||
|
|
||||||
|
BelongsTo::make(__('Branch'), 'branch', Branch::class),
|
||||||
|
]),
|
||||||
|
new Panel(__('Personal data'), [
|
||||||
|
Text::make(__('Passport name'), 'passport_name')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('required', 'string', 'max:255'),
|
||||||
|
|
||||||
|
Text::make(__('Passport surname'), 'passport_surname')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('required', 'string', 'max:255'),
|
||||||
|
|
||||||
|
NovaInputmask::make(__('Phone'), 'phone')
|
||||||
|
->fullWidth()
|
||||||
|
->phonenumber('TM')
|
||||||
|
->rules('required', 'max:255')
|
||||||
|
->hideFromIndex(),
|
||||||
|
|
||||||
|
Text::make(__('Email'), 'email')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('nullable', 'max:255', 'email')
|
||||||
|
->hideFromIndex(),
|
||||||
|
|
||||||
|
Text::make(__('Current Residence'), 'address')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('required', 'string', 'max:255')
|
||||||
|
->hideFromIndex(),
|
||||||
|
]),
|
||||||
|
new Panel(__('Payment'), [
|
||||||
|
SimpleRepeatable::make(__('Payment sender data'), 'sender_datas', [
|
||||||
|
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'),
|
||||||
|
])->minRows(1)->rules('required'),
|
||||||
|
|
||||||
|
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'), VisaMasterPaymentOrderFileFields::reciverFiles()),
|
||||||
|
new Panel(__('Sender files'), VisaMasterPaymentOrderFileFields::senderFiles()),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Modules\Swiftpayment\Nova\Resources\Concerns;
|
namespace App\Modules\SberPaymentOrder\Nova\Resources\Concerns;
|
||||||
|
|
||||||
use App\Modules\Swiftpayment\Models\ApplicationTypes;
|
|
||||||
use App\Nova\Resources\Branch\Branch;
|
use App\Nova\Resources\Branch\Branch;
|
||||||
use App\Repos\Order\OrderRepo;
|
use App\Repos\Order\OrderRepo;
|
||||||
use App\Repos\System\Settings\Location\RegionRepo;
|
use App\Repos\System\Settings\Location\RegionRepo;
|
||||||
@@ -13,7 +12,7 @@ use Laravel\Nova\Fields\ID;
|
|||||||
use Laravel\Nova\Fields\Select;
|
use Laravel\Nova\Fields\Select;
|
||||||
use Laravel\Nova\Fields\Text;
|
use Laravel\Nova\Fields\Text;
|
||||||
|
|
||||||
class SwiftpaymentFieldsForIndex
|
class SberPaymentOrderFieldsForIndex
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Loan Order fields for "create"
|
* Loan Order fields for "create"
|
||||||
@@ -25,13 +24,6 @@ class SwiftpaymentFieldsForIndex
|
|||||||
|
|
||||||
Text::make(__('ID'), 'unique_id')->sortable(),
|
Text::make(__('ID'), 'unique_id')->sortable(),
|
||||||
|
|
||||||
Select::make(__('Ýüztutmanyň görnüşi'), 'type')
|
|
||||||
->fullWidth()
|
|
||||||
->searchable()
|
|
||||||
->rules('required')
|
|
||||||
->displayUsingLabels()
|
|
||||||
->options(ApplicationTypes::applicationTypes()),
|
|
||||||
|
|
||||||
DateTime::make(__('Created at'), 'created_at')
|
DateTime::make(__('Created at'), 'created_at')
|
||||||
->turkmenDateTime(),
|
->turkmenDateTime(),
|
||||||
|
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\SberPaymentOrder\Nova\Resources;
|
||||||
|
|
||||||
|
use App\Models\Branch\Branch;
|
||||||
|
use App\Modules\SberPaymentOrder\Nova\Resources\Concerns\SberPaymentOrderFieldsForDetail;
|
||||||
|
use App\Modules\SberPaymentOrder\Nova\Resources\Concerns\SberPaymentOrderFieldsForIndex;
|
||||||
|
use App\Nova\Resource;
|
||||||
|
use App\Repos\Order\Card\CardOrderRepo;
|
||||||
|
use App\Repos\Order\OrderRepo;
|
||||||
|
use App\Repos\System\Nova\NovaRepo;
|
||||||
|
use App\Repos\System\Settings\Legal\PassportRepo;
|
||||||
|
use App\Repos\System\Settings\Location\RegionRepo;
|
||||||
|
use Eminiarts\Tabs\Tab;
|
||||||
|
use Eminiarts\Tabs\Tabs;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Laravel\Nova\Fields\Badge;
|
||||||
|
use Laravel\Nova\Fields\Hidden;
|
||||||
|
use Laravel\Nova\Fields\ID;
|
||||||
|
use Laravel\Nova\Fields\Select;
|
||||||
|
use Laravel\Nova\Fields\Text;
|
||||||
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
|
use Nurmuhammet\NovaInputmask\NovaInputmask;
|
||||||
|
use Outl1ne\NovaSimpleRepeatable\SimpleRepeatable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @template TModel of \App\Modules\SberPaymentOrder\Models\SberPaymentOrder
|
||||||
|
*/
|
||||||
|
class NovaSberPaymentOrder extends Resource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The model the resource corresponds to.
|
||||||
|
*
|
||||||
|
* @var class-string<\App\Modules\SberPaymentOrder\Models\SberPaymentOrder>
|
||||||
|
*/
|
||||||
|
public static $model = \App\Modules\SberPaymentOrder\Models\SberPaymentOrder::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<int, string>
|
||||||
|
*/
|
||||||
|
public static $search = [
|
||||||
|
'unique_id', 'passport_name', 'passport_surname', 'phone',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The relationships that should be eager loaded on index queries.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $with = ['branch'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the displayable label of the resource.
|
||||||
|
*/
|
||||||
|
public static function label(): string
|
||||||
|
{
|
||||||
|
return sprintf(
|
||||||
|
'%s (%s)',
|
||||||
|
__('Sber payments'),
|
||||||
|
Str::lower(__('For students'))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the displayable singular label of the resource.
|
||||||
|
*/
|
||||||
|
public static function singularLabel(): string
|
||||||
|
{
|
||||||
|
return sprintf(
|
||||||
|
'%s (%s)',
|
||||||
|
__('Sber payment'),
|
||||||
|
Str::lower(__('For students'))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* After resource created
|
||||||
|
*
|
||||||
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
||||||
|
* @param \Illuminate\Database\Eloquent\Model $model
|
||||||
|
*/
|
||||||
|
public static function afterCreate(NovaRequest $request, Model $model): void
|
||||||
|
{
|
||||||
|
$model->update(['unique_id' => CardOrderRepo::fillUniqueId($model)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the fields for index.
|
||||||
|
*/
|
||||||
|
public function fieldsForIndex(): array
|
||||||
|
{
|
||||||
|
return SberPaymentOrderFieldsForIndex::make($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the fields for detail
|
||||||
|
*/
|
||||||
|
public function fieldsForDetail(): array
|
||||||
|
{
|
||||||
|
return SberPaymentOrderFieldsForDetail::make($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the fields displayed by the resource.
|
||||||
|
*
|
||||||
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
||||||
|
* @return array<int, \Laravel\Nova\Fields\FieldElement|\Laravel\Nova\Panel>
|
||||||
|
*/
|
||||||
|
public function fields(NovaRequest $request): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
Tabs::make('Wizard', [
|
||||||
|
new Tab(__('Status'), [
|
||||||
|
ID::make()
|
||||||
|
->hideFromDetail(),
|
||||||
|
|
||||||
|
Hidden::make('user_id')
|
||||||
|
->default(auth()->id())
|
||||||
|
->hideWhenUpdating(),
|
||||||
|
|
||||||
|
Text::make(__('ID'), 'unique_id')
|
||||||
|
->exceptOnForms(),
|
||||||
|
|
||||||
|
Select::make(__('Status'), 'status')
|
||||||
|
->displayUsingLabels()
|
||||||
|
->searchable()
|
||||||
|
->options(OrderRepo::statusValues())
|
||||||
|
->default(OrderRepo::defaultStatus())
|
||||||
|
->fullWidth()
|
||||||
|
->hideFromDetail()
|
||||||
|
->rules('required')
|
||||||
|
->canSeeWhen('systemUser', $this),
|
||||||
|
|
||||||
|
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(__('Note'), 'notes')
|
||||||
|
->fullWidth()
|
||||||
|
->canSeeWhen('systemUser', $this),
|
||||||
|
]),
|
||||||
|
|
||||||
|
new Tab(__('Location'), [
|
||||||
|
Select::make(__('Region'), 'region')
|
||||||
|
->fullWidth()
|
||||||
|
->displayUsingLabels()
|
||||||
|
->searchable()
|
||||||
|
->options(RegionRepo::values())
|
||||||
|
->default(RegionRepo::default())
|
||||||
|
->rules('required')
|
||||||
|
->sortable(),
|
||||||
|
|
||||||
|
Select::make(__('Branch'), 'branch_id')
|
||||||
|
->fullWidth()
|
||||||
|
->displayUsingLabels()
|
||||||
|
->searchable()
|
||||||
|
->dependsOn('region', NovaRepo::dependsOnRegion('region', Branch::class))
|
||||||
|
->rules('required')
|
||||||
|
->sortable(),
|
||||||
|
]),
|
||||||
|
|
||||||
|
new Tab(__('Personal data'), [
|
||||||
|
Text::make(__('Passport name'), 'passport_name')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('required', 'string', 'max:255'),
|
||||||
|
|
||||||
|
Text::make(__('Passport surname'), 'passport_surname')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('required', 'string', 'max:255'),
|
||||||
|
|
||||||
|
NovaInputmask::make(__('Phone'), 'phone')
|
||||||
|
->fullWidth()
|
||||||
|
->phonenumber('TM')
|
||||||
|
->rules('required', 'max:255')
|
||||||
|
->hideFromIndex(),
|
||||||
|
|
||||||
|
Text::make(__('Email'), 'email')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('nullable', 'max:255', 'email')
|
||||||
|
->hideFromIndex(),
|
||||||
|
|
||||||
|
Text::make(__('Current Residence'), 'address')
|
||||||
|
->fullWidth()
|
||||||
|
->rules('required', 'string', 'max:255')
|
||||||
|
->hideFromIndex(),
|
||||||
|
]),
|
||||||
|
|
||||||
|
new Tab(__('Payment'), [
|
||||||
|
SimpleRepeatable::make(__('Payment sender data'), 'sender_datas', [
|
||||||
|
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'),
|
||||||
|
])->minRows(1)->rules('required'),
|
||||||
|
|
||||||
|
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 Tab(__('Reciver files'), SberPaymentOrderFileFields::reciverFiles()),
|
||||||
|
new Tab(__('Sender files'), SberPaymentOrderFileFields::senderFiles()),
|
||||||
|
], $request)->asWizard(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\SberPaymentOrder\Nova\Resources;
|
||||||
|
|
||||||
|
use App\Modules\SberPaymentOrder\Models\SberPaymentOrder;
|
||||||
|
use Ebess\AdvancedNovaMediaLibrary\Fields\Files;
|
||||||
|
use Laravel\Nova\Fields\File;
|
||||||
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
|
|
||||||
|
class SberPaymentOrderFileFields
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Reciver files
|
||||||
|
*/
|
||||||
|
public static function reciverFiles(): array
|
||||||
|
{
|
||||||
|
return collect(SberPaymentOrder::reciverFiles())
|
||||||
|
->map(function (array $file) {
|
||||||
|
return File::make(__($file['name']), $file['code'])
|
||||||
|
->fullWidth()
|
||||||
|
->deletable(false)
|
||||||
|
->creationRules($file['required'] ? 'required' : 'nullable')
|
||||||
|
->updateRules('nullable')
|
||||||
|
->required($file['required'])
|
||||||
|
->store(function (NovaRequest $request, $model) use ($file) {
|
||||||
|
return function () use ($model, $file) {
|
||||||
|
$model->addMediaFromRequest($file['code'])
|
||||||
|
->preservingOriginal()
|
||||||
|
->toMediaCollection($file['code']);
|
||||||
|
};
|
||||||
|
})
|
||||||
|
->preview(function ($value, $disk, $resource) use ($file) {
|
||||||
|
return $resource->getFirstMediaUrl($file['code']);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sender files
|
||||||
|
*/
|
||||||
|
public static function senderFiles(): array
|
||||||
|
{
|
||||||
|
return collect(SberPaymentOrder::senderFiles())
|
||||||
|
->map(function (array $file) {
|
||||||
|
return File::make(__($file['name']), $file['code'])
|
||||||
|
->fullWidth()
|
||||||
|
->deletable(false)
|
||||||
|
->creationRules($file['required'] ? 'required' : 'nullable')
|
||||||
|
->updateRules('nullable')
|
||||||
|
->required($file['required'])
|
||||||
|
->store(function (NovaRequest $request, $model) use ($file) {
|
||||||
|
return function () use ($model, $file) {
|
||||||
|
$model->addMediaFromRequest($file['code'])
|
||||||
|
->preservingOriginal()
|
||||||
|
->toMediaCollection($file['code']);
|
||||||
|
};
|
||||||
|
})
|
||||||
|
->preview(function ($value, $disk, $resource) use ($file) {
|
||||||
|
return $resource->getFirstMediaUrl($file['code']);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Modules\Swiftpayment\Models;
|
|
||||||
|
|
||||||
class ApplicationTypes
|
|
||||||
{
|
|
||||||
const STUDENT = 'student';
|
|
||||||
|
|
||||||
const STUDENT_VISA_MASTER_OTHER = 'student_visa_master_other';
|
|
||||||
|
|
||||||
const PATIENT = 'patient';
|
|
||||||
|
|
||||||
const PATIENT_VISA_MASTER_OTHER = 'patient_visa_master_other';
|
|
||||||
|
|
||||||
const VESTERN_UNION = 'vestern_union';
|
|
||||||
|
|
||||||
public static function applicationTypes()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
self::STUDENT => __('Talyp töleg'),
|
|
||||||
self::STUDENT_VISA_MASTER_OTHER => __('Talyp VISA/MASTER we beýleki'),
|
|
||||||
self::PATIENT => __('Hassa töleg'),
|
|
||||||
self::PATIENT_VISA_MASTER_OTHER => __('Hassa VISA/MASTER we beýleki'),
|
|
||||||
self::VESTERN_UNION => __('Halkara WesternUnion pul geçirim ulgamy'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function applicationTypeFiles()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
self::STUDENT => [
|
|
||||||
'Daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy',
|
|
||||||
'Daşary ýurt döwletiniň ýokary okuw mekdebi bilen talybyň arasynda baglaşylan şertnama',
|
|
||||||
'Daşary ýurt döwletiniň ýokary okuw mekdebi tarapyndan töleg üçin ýazylan hasap-nyrhnama',
|
|
||||||
'Talybyň Türkmenistandan gitmek we Türkmenistana gelmek üçin pasportyndaky ýurdumyzdan çykandygy we daşary ýurda gidendigi baradaky degişli edaralaryň bellikleri bolan sahypalarynyň göçürmesi',
|
|
||||||
'Talybyň garyndaşlarynyň garyndaşlyk derejesini tassyklaýjy resminamalary we pasportlar',
|
|
||||||
],
|
|
||||||
self::STUDENT_VISA_MASTER_OTHER => [
|
|
||||||
'Daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy',
|
|
||||||
'Talybyň Türkmenistandan gitmek we Türkmenistana gelmek üçin pasportyndaky ýurdumyzdan çykandygy we daşary ýurda gidendigi baradaky degişli edaralaryň bellikleri bolan sahypalarynyň göçürmesi',
|
|
||||||
'Talybyň garyndaşlary ýüzlenen ýagdaýynda garyndaşlyk derejesini tassyklaýjy resminama',
|
|
||||||
],
|
|
||||||
self::PATIENT => [
|
|
||||||
'Türkmenistanyň Saglygy goraýyş we derman senagaty ministrliginiň Türkmenistanyň çäginden daşarda saglygynyň barlanmagynyň we bejerilmeginiň zerurlygy baradaky netijenamasy',
|
|
||||||
'Daşary ýurt saglygy goraýyş edarasy bilen hassanyň arasynda baglaşylan şertnama',
|
|
||||||
'Daşary ýurt saglygy goraýyş edarasy tarapyndan töleg üçin ýazylan hasap-nyrhnama',
|
|
||||||
'Talybyň Türkmenistandan gitmek we Türkmenistana gelmek üçin pasportyndaky ýurdumyzdan çykandygy we daşary ýurda gidendigi baradaky degişli edaralaryň bellikleri bolan sahypalarynyň göçürmesi',
|
|
||||||
'Hassanyň garyndaşlarynyň garyndaşlyk derejesini tassyklaýjy resminamalar we pasportlar',
|
|
||||||
],
|
|
||||||
self::PATIENT_VISA_MASTER_OTHER => [
|
|
||||||
'Türkmenistanyň Saglygy goraýyş we derman senagaty ministrliginiň Türkmenistanyň çäginden daşarda saglygynyň barlanmagynyň we bejerilmeginiň zerurlygy baradaky netijenamasy',
|
|
||||||
'Talybyň Türkmenistandan gitmek we Türkmenistana gelmek üçin pasportyndaky ýurdumyzdan çykandygy we daşary ýurda gidendigi baradaky degişli edaralaryň bellikleri bolan sahypalarynyň göçürmesi',
|
|
||||||
'Hassanyň garyndaşlarynyň garyndaşlyk derejesini tassyklaýjy resminamalar we pasportlar',
|
|
||||||
],
|
|
||||||
self::VESTERN_UNION => [
|
|
||||||
'Daşary ýurt döwletiniň bilim edarasynda okaýandygy baradaky güwänamasy',
|
|
||||||
'Maşgala agzalygy tassyklaýjy resminama',
|
|
||||||
'Talybyň Türkmenistandan gitmek we Türkmenistana gelmek üçin pasportyndaky ýurdumyzdan çykandygy we daşary ýurda gidendigi baradaky degişli edaralaryň bellikleri bolan sahypalarynyň göçürmesi',
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function filesFor($type)
|
|
||||||
{
|
|
||||||
return view('nova.swiftpayments.required-files', [
|
|
||||||
'files' => static::applicationTypeFiles()[$type] ?? [],
|
|
||||||
])->render();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Modules\Swiftpayment\Models;
|
|
||||||
|
|
||||||
class SwiftPaymentStatus
|
|
||||||
{
|
|
||||||
const PENDING = 'pending';
|
|
||||||
|
|
||||||
const REGISTER = 'register';
|
|
||||||
|
|
||||||
const PROGRESS = 'progress';
|
|
||||||
|
|
||||||
const COMPLETED = 'completed';
|
|
||||||
|
|
||||||
const CANCELLED = 'cancelled';
|
|
||||||
|
|
||||||
public static function values(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
self::PENDING => __('Pending'),
|
|
||||||
self::REGISTER => __('Registered'),
|
|
||||||
self::PROGRESS => __('On Progress'),
|
|
||||||
self::COMPLETED => __('Completed'),
|
|
||||||
self::CANCELLED => __('Cancelled'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function classes(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
self::PENDING => 'warning',
|
|
||||||
self::REGISTER => 'info',
|
|
||||||
self::PROGRESS => 'primary',
|
|
||||||
self::COMPLETED => 'success',
|
|
||||||
self::CANCELLED => 'danger',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function colors(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
self::PENDING => '#F5573B',
|
|
||||||
self::REGISTER => '#F2CB22',
|
|
||||||
self::PROGRESS => '#098F56',
|
|
||||||
self::COMPLETED => '#8FC15D',
|
|
||||||
self::CANCELLED => '#d70206',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Modules\Swiftpayment\Models;
|
|
||||||
|
|
||||||
use App\Models\Branch\Branch;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
||||||
use Spatie\MediaLibrary\HasMedia;
|
|
||||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
|
||||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
|
||||||
|
|
||||||
class Swiftpayment extends Model implements HasMedia
|
|
||||||
{
|
|
||||||
use InteractsWithMedia;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Table
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $table = 'swift_payments';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Guarded attributes
|
|
||||||
*/
|
|
||||||
protected $guarded = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The attributes that should be cast.
|
|
||||||
*
|
|
||||||
* @var array<string, string>
|
|
||||||
*/
|
|
||||||
protected $casts = [
|
|
||||||
'sender_datas' => 'array',
|
|
||||||
'payment_reciever' => 'array',
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Media conversions
|
|
||||||
*
|
|
||||||
* @param Media|null $media
|
|
||||||
*/
|
|
||||||
public function registerMediaConversions(?Media $media = null): void
|
|
||||||
{
|
|
||||||
$this->addMediaConversion('thumb')
|
|
||||||
->width(200)
|
|
||||||
->height(200);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Media collections
|
|
||||||
*/
|
|
||||||
public function registerMediaCollections(): void
|
|
||||||
{
|
|
||||||
$this->addMediaCollection('main');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Branch
|
|
||||||
*/
|
|
||||||
public function branch(): BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Branch::class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Modules\Swiftpayment\Nova\Resources;
|
|
||||||
|
|
||||||
use App\Models\Branch\Branch;
|
|
||||||
use App\Modules\Swiftpayment\Models\ApplicationTypes;
|
|
||||||
use App\Modules\Swiftpayment\Nova\Resources\Concerns\SwiftpaymentFieldsForIndex;
|
|
||||||
use App\Nova\Resource;
|
|
||||||
use App\Repos\Order\Card\CardOrderRepo;
|
|
||||||
use App\Repos\Order\OrderRepo;
|
|
||||||
use App\Repos\System\Nova\NovaRepo;
|
|
||||||
use App\Repos\System\Settings\Legal\PassportRepo;
|
|
||||||
use App\Repos\System\Settings\Location\RegionRepo;
|
|
||||||
use Ebess\AdvancedNovaMediaLibrary\Fields\Files;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Laravel\Nova\Fields\Badge;
|
|
||||||
use Laravel\Nova\Fields\Hidden;
|
|
||||||
use Laravel\Nova\Fields\ID;
|
|
||||||
use Laravel\Nova\Fields\Select;
|
|
||||||
use Laravel\Nova\Fields\Text;
|
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
|
||||||
use Laravel\Nova\Panel;
|
|
||||||
use Nurmuhammet\NovaInputmask\NovaInputmask;
|
|
||||||
use Outl1ne\NovaSimpleRepeatable\SimpleRepeatable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @template TModel of \App\Modules\Swiftpayment\Models\Swiftpayment
|
|
||||||
*/
|
|
||||||
class NovaSwiftpayment extends Resource
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* The model the resource corresponds to.
|
|
||||||
*
|
|
||||||
* @var class-string<\App\Modules\Swiftpayment\Models\Swiftpayment>
|
|
||||||
*/
|
|
||||||
public static $model = \App\Modules\Swiftpayment\Models\Swiftpayment::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<int, string>
|
|
||||||
*/
|
|
||||||
public static $search = [
|
|
||||||
'unique_id', 'passport_name', 'passport_surname', 'phone',
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the displayable label of the resource.
|
|
||||||
*/
|
|
||||||
public static function label(): string
|
|
||||||
{
|
|
||||||
return __('Swift payments');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the displayable singular label of the resource.
|
|
||||||
*/
|
|
||||||
public static function singularLabel(): string
|
|
||||||
{
|
|
||||||
return __('Swift payment');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* After resource created
|
|
||||||
*
|
|
||||||
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
|
||||||
* @param \Illuminate\Database\Eloquent\Model $model
|
|
||||||
*/
|
|
||||||
public static function afterCreate(NovaRequest $request, Model $model): void
|
|
||||||
{
|
|
||||||
$model->update(['unique_id' => CardOrderRepo::fillUniqueId($model)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the fields for index.
|
|
||||||
*/
|
|
||||||
public function fieldsForIndex(): array
|
|
||||||
{
|
|
||||||
return SwiftpaymentFieldsForIndex::make($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the fields displayed by the resource.
|
|
||||||
*
|
|
||||||
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
|
||||||
* @return array<int, \Laravel\Nova\Fields\FieldElement|\Laravel\Nova\Panel>
|
|
||||||
*/
|
|
||||||
public function fields(NovaRequest $request): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
ID::make()->sortable(),
|
|
||||||
|
|
||||||
Hidden::make('user_id')
|
|
||||||
->default(auth()->id())
|
|
||||||
->hideWhenUpdating(),
|
|
||||||
|
|
||||||
new Panel(__('New :resource', ['resource' => $this->singularLabel()]), [
|
|
||||||
Text::make(__('ID'), 'unique_id')
|
|
||||||
->exceptOnForms(),
|
|
||||||
|
|
||||||
Select::make(__('Status'), 'status')
|
|
||||||
->displayUsingLabels()
|
|
||||||
->searchable()
|
|
||||||
->options(OrderRepo::statusValues())
|
|
||||||
->default(OrderRepo::defaultStatus())
|
|
||||||
->fullWidth()
|
|
||||||
->hideFromDetail()
|
|
||||||
->rules('required')
|
|
||||||
->canSeeWhen('systemUser', $this),
|
|
||||||
|
|
||||||
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(__('Note'), 'notes')
|
|
||||||
->fullWidth()
|
|
||||||
->canSeeWhen('systemUser', $this),
|
|
||||||
]),
|
|
||||||
|
|
||||||
new Panel(__('Location'), [
|
|
||||||
Select::make(__('Ýüztutmanyň görnüşi'), 'type')
|
|
||||||
->fullWidth()
|
|
||||||
->searchable()
|
|
||||||
->rules('required')
|
|
||||||
->displayUsingLabels()
|
|
||||||
->options(ApplicationTypes::applicationTypes()),
|
|
||||||
|
|
||||||
Select::make(__('Region'), 'region')
|
|
||||||
->fullWidth()
|
|
||||||
->displayUsingLabels()
|
|
||||||
->searchable()
|
|
||||||
->options(RegionRepo::values())
|
|
||||||
->default(RegionRepo::default())
|
|
||||||
->rules('required')
|
|
||||||
->sortable(),
|
|
||||||
|
|
||||||
Select::make(__('Branch'), 'branch_id')
|
|
||||||
->fullWidth()
|
|
||||||
->displayUsingLabels()
|
|
||||||
->searchable()
|
|
||||||
->dependsOn('region', NovaRepo::dependsOnRegion('region', Branch::class))
|
|
||||||
->rules('required')
|
|
||||||
->sortable(),
|
|
||||||
]),
|
|
||||||
|
|
||||||
new Panel(__('Personal data'), [
|
|
||||||
Text::make('Pasportdaky ady', 'passport_name')
|
|
||||||
->fullWidth()
|
|
||||||
->rules('required', 'string', 'max:255'),
|
|
||||||
|
|
||||||
Text::make('Pasportdaky familiýa', 'passport_surname')
|
|
||||||
->fullWidth()
|
|
||||||
->rules('required', 'string', 'max:255'),
|
|
||||||
|
|
||||||
NovaInputmask::make('Telefon belgi', 'phone')
|
|
||||||
->fullWidth()
|
|
||||||
->phonenumber('TM')
|
|
||||||
->rules('required', 'max:255')
|
|
||||||
->hideFromIndex(),
|
|
||||||
|
|
||||||
Text::make('Email', 'email')
|
|
||||||
->fullWidth()
|
|
||||||
->rules('required', 'max:255', 'email')
|
|
||||||
->hideFromIndex(),
|
|
||||||
|
|
||||||
Text::make('Ýaşaýan ýeriň salgysy', 'address')
|
|
||||||
->fullWidth()
|
|
||||||
->rules('required', 'string', 'max:255')
|
|
||||||
->hideFromIndex(),
|
|
||||||
]),
|
|
||||||
|
|
||||||
new Panel(__('Töleg'), [
|
|
||||||
SimpleRepeatable::make('Tölegi ugradyjynyň maglumatlar', 'sender_datas', [
|
|
||||||
Select::make(__('Passport serie'), 'passport_serie')
|
|
||||||
->displayUsingLabels()
|
|
||||||
->searchable()
|
|
||||||
->options(PassportRepo::values())
|
|
||||||
->rules('required')
|
|
||||||
->sortable(),
|
|
||||||
|
|
||||||
NovaInputmask::make('Passport nomeri')
|
|
||||||
->mask('999999')
|
|
||||||
->rules('required', 'max:255'),
|
|
||||||
|
|
||||||
Text::make('A.F.AA'),
|
|
||||||
])->minRows(1)->rules('required'),
|
|
||||||
|
|
||||||
SimpleRepeatable::make('Tölegi kabul edijiniň maglumatlary', 'payment_reciever', [
|
|
||||||
Select::make(__('Passport serie'), 'passport_serie')
|
|
||||||
->displayUsingLabels()
|
|
||||||
->searchable()
|
|
||||||
->options(PassportRepo::values())
|
|
||||||
->rules('required')
|
|
||||||
->sortable(),
|
|
||||||
|
|
||||||
NovaInputmask::make('Passport nomeri')
|
|
||||||
->mask('999999')
|
|
||||||
->rules('required', 'max:255'),
|
|
||||||
|
|
||||||
Text::make('A.F.AA'),
|
|
||||||
])->maxRows(1)->minRows(1)->rules('required'),
|
|
||||||
|
|
||||||
Files::make('Talap edilýän resminamalar', 'main')
|
|
||||||
->conversionOnIndexView('thumb')
|
|
||||||
->rules('required')
|
|
||||||
->required()
|
|
||||||
->hideFromIndex(),
|
|
||||||
]),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Modules\Swiftpayment\Repositories;
|
|
||||||
|
|
||||||
use App\Modules\Swiftpayment\Models\Swiftpayment;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class SwiftpaymentRepository
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* $queryBuilder
|
|
||||||
*
|
|
||||||
* @var \Illuminate\Database\Eloquent\Builder<\App\Modules\Swiftpayment\Models\Swiftpayment>
|
|
||||||
*/
|
|
||||||
protected Builder $queryBuilder;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Model
|
|
||||||
*/
|
|
||||||
public static function model(): string
|
|
||||||
{
|
|
||||||
return Swiftpayment::class;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Product repository
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->queryBuilder = self::model()::query();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,6 @@ use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
|
|||||||
use App\Modules\VisaMasterPaymentOrder\Nova\Resources\VisaMasterPaymentOrderFileFields;
|
use App\Modules\VisaMasterPaymentOrder\Nova\Resources\VisaMasterPaymentOrderFileFields;
|
||||||
use App\Nova\Resources\Branch\Branch;
|
use App\Nova\Resources\Branch\Branch;
|
||||||
use App\Repos\Order\OrderRepo;
|
use App\Repos\Order\OrderRepo;
|
||||||
use App\Repos\System\Nova\NovaRepo;
|
|
||||||
use App\Repos\System\Settings\Legal\PassportRepo;
|
use App\Repos\System\Settings\Legal\PassportRepo;
|
||||||
use App\Repos\System\Settings\Location\RegionRepo;
|
use App\Repos\System\Settings\Location\RegionRepo;
|
||||||
use Laravel\Nova\Fields\Badge;
|
use Laravel\Nova\Fields\Badge;
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ namespace App\Modules\VisaMasterPaymentOrder\Nova\Resources;
|
|||||||
|
|
||||||
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
|
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
|
||||||
use Ebess\AdvancedNovaMediaLibrary\Fields\Files;
|
use Ebess\AdvancedNovaMediaLibrary\Fields\Files;
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laravel\Nova\Fields\File;
|
use Laravel\Nova\Fields\File;
|
||||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
|
|
||||||
@@ -24,7 +23,8 @@ class VisaMasterPaymentOrderFileFields
|
|||||||
->updateRules('nullable')
|
->updateRules('nullable')
|
||||||
->required($file['required'])
|
->required($file['required'])
|
||||||
->store(function (NovaRequest $request, $model) use ($file) {
|
->store(function (NovaRequest $request, $model) use ($file) {
|
||||||
return function () use ($model, $request, $file) {
|
return function () use ($model, $file) {
|
||||||
|
// @phpstan-ignore-next-line
|
||||||
$model->addMediaFromRequest($file['code'])
|
$model->addMediaFromRequest($file['code'])
|
||||||
->preservingOriginal()
|
->preservingOriginal()
|
||||||
->toMediaCollection($file['code']);
|
->toMediaCollection($file['code']);
|
||||||
@@ -51,7 +51,8 @@ class VisaMasterPaymentOrderFileFields
|
|||||||
->updateRules('nullable')
|
->updateRules('nullable')
|
||||||
->required($file['required'])
|
->required($file['required'])
|
||||||
->store(function (NovaRequest $request, $model) use ($file) {
|
->store(function (NovaRequest $request, $model) use ($file) {
|
||||||
return function () use ($model, $request, $file) {
|
return function () use ($model, $file) {
|
||||||
|
// @phpstan-ignore-next-line
|
||||||
$model->addMediaFromRequest($file['code'])
|
$model->addMediaFromRequest($file['code'])
|
||||||
->preservingOriginal()
|
->preservingOriginal()
|
||||||
->toMediaCollection($file['code']);
|
->toMediaCollection($file['code']);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Repos\System\Nova;
|
namespace App\Repos\System\Nova;
|
||||||
|
|
||||||
use App\Modules\Swiftpayment\Nova\Resources\NovaSwiftpayment;
|
use App\Modules\SberPaymentOrder\Nova\Resources\NovaSberPaymentOrder;
|
||||||
use App\Modules\VisaMasterPaymentOrder\Nova\Resources\NovaVisaMasterPaymentOrder;
|
use App\Modules\VisaMasterPaymentOrder\Nova\Resources\NovaVisaMasterPaymentOrder;
|
||||||
use App\Nova\Dashboards\Main;
|
use App\Nova\Dashboards\Main;
|
||||||
use App\Nova\Resources\Branch\Branch;
|
use App\Nova\Resources\Branch\Branch;
|
||||||
@@ -50,11 +50,9 @@ class NovaMenuRepo
|
|||||||
MenuItem::resource(CardPin::class),
|
MenuItem::resource(CardPin::class),
|
||||||
])->collapsedByDefault(),
|
])->collapsedByDefault(),
|
||||||
|
|
||||||
MenuGroup::make(__('Swift payments'), [
|
MenuGroup::make(__('International payments'), [
|
||||||
MenuItem::resource(NovaSwiftpayment::class)
|
|
||||||
->name(sprintf('%s (%s)', __('International payments'), __('Visa, Master, Sber, WU'))),
|
|
||||||
|
|
||||||
MenuItem::resource(NovaVisaMasterPaymentOrder::class),
|
MenuItem::resource(NovaVisaMasterPaymentOrder::class),
|
||||||
|
MenuItem::resource(NovaSberPaymentOrder::class),
|
||||||
])->collapsedByDefault(),
|
])->collapsedByDefault(),
|
||||||
])->icon('ticket')->collapsedByDefault(),
|
])->icon('ticket')->collapsedByDefault(),
|
||||||
|
|
||||||
|
|||||||
@@ -29,9 +29,6 @@ return [
|
|||||||
'exclude' => [
|
'exclude' => [
|
||||||
base_path('vendor'),
|
base_path('vendor'),
|
||||||
base_path('node_modules'),
|
base_path('node_modules'),
|
||||||
storage_path('app/Panel'),
|
|
||||||
storage_path('app/TBBANK'),
|
|
||||||
storage_path('app/backup-temp'),
|
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -299,5 +299,6 @@
|
|||||||
"Payee information": "Tölegi kabul edijiniň maglumatlary",
|
"Payee information": "Tölegi kabul edijiniň maglumatlary",
|
||||||
"Reciver files": "Kabul ediji talyp boýunça resminamalary",
|
"Reciver files": "Kabul ediji talyp boýunça resminamalary",
|
||||||
"Sender files": "Ugradyjy boýunça resminamalary",
|
"Sender files": "Ugradyjy boýunça resminamalary",
|
||||||
"Next": "Indiki"
|
"Next": "Indiki",
|
||||||
|
"Loading": "Ýüklenilýär"
|
||||||
}
|
}
|
||||||
|
|||||||
2
resources/views/vendor/nova/layout.blade.php
vendored
2
resources/views/vendor/nova/layout.blade.php
vendored
@@ -34,7 +34,7 @@
|
|||||||
<div id="loader-wrapper">
|
<div id="loader-wrapper">
|
||||||
<div class="loader"></div>
|
<div class="loader"></div>
|
||||||
<div class="loader-section">
|
<div class="loader-section">
|
||||||
<p>Loading<span class="dots">...</span></p>
|
<p>{{ __('Loading') }}<span class="dots">...</span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user