diff --git a/app/Modules/Swiftpayment/Database/Migrations/2024_08_31_151813_create_swiftpayments_table.php b/app/Modules/SberPaymentOrder/Database/Migrations/2024_09_08_210739_create_sberpaymentorders_table.php similarity index 91% rename from app/Modules/Swiftpayment/Database/Migrations/2024_08_31_151813_create_swiftpayments_table.php rename to app/Modules/SberPaymentOrder/Database/Migrations/2024_09_08_210739_create_sberpaymentorders_table.php index d012974..8d731ae 100644 --- a/app/Modules/Swiftpayment/Database/Migrations/2024_08_31_151813_create_swiftpayments_table.php +++ b/app/Modules/SberPaymentOrder/Database/Migrations/2024_09_08_210739_create_sberpaymentorders_table.php @@ -11,7 +11,7 @@ return new class extends Migration */ public function up(): void { - Schema::create('swift_payments', function (Blueprint $table) { + Schema::create('sber_payment_orders', function (Blueprint $table) { $table->id(); $table->string('unique_id')->nullable()->unique(); @@ -43,6 +43,6 @@ return new class extends Migration */ public function down(): void { - Schema::dropIfExists('swift_payments'); + Schema::dropIfExists('sber_payment_orders'); } }; diff --git a/app/Modules/SberPaymentOrder/Models/SberPaymentOrder.php b/app/Modules/SberPaymentOrder/Models/SberPaymentOrder.php new file mode 100644 index 0000000..c21f1e8 --- /dev/null +++ b/app/Modules/SberPaymentOrder/Models/SberPaymentOrder.php @@ -0,0 +1,141 @@ + + */ + 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', + ], + ]; + } +} diff --git a/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForDetail.php b/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForDetail.php new file mode 100644 index 0000000..4284990 --- /dev/null +++ b/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForDetail.php @@ -0,0 +1,144 @@ +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()), + ]; + } +} diff --git a/app/Modules/Swiftpayment/Nova/Resources/Concerns/SwiftpaymentFieldsForIndex.php b/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForIndex.php similarity index 79% rename from app/Modules/Swiftpayment/Nova/Resources/Concerns/SwiftpaymentFieldsForIndex.php rename to app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForIndex.php index 3dd880c..59ad5da 100644 --- a/app/Modules/Swiftpayment/Nova/Resources/Concerns/SwiftpaymentFieldsForIndex.php +++ b/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/SberPaymentOrderFieldsForIndex.php @@ -1,8 +1,7 @@ sortable(), - Select::make(__('Ýüztutmanyň görnüşi'), 'type') - ->fullWidth() - ->searchable() - ->rules('required') - ->displayUsingLabels() - ->options(ApplicationTypes::applicationTypes()), - DateTime::make(__('Created at'), 'created_at') ->turkmenDateTime(), diff --git a/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php b/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php new file mode 100644 index 0000000..e32a9f2 --- /dev/null +++ b/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php @@ -0,0 +1,247 @@ + + */ + 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 + */ + 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 + */ + 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(), + ]; + } +} diff --git a/app/Modules/SberPaymentOrder/Nova/Resources/SberPaymentOrderFileFields.php b/app/Modules/SberPaymentOrder/Nova/Resources/SberPaymentOrderFileFields.php new file mode 100644 index 0000000..c9c51fa --- /dev/null +++ b/app/Modules/SberPaymentOrder/Nova/Resources/SberPaymentOrderFileFields.php @@ -0,0 +1,65 @@ +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(); + } +} diff --git a/app/Modules/Swiftpayment/Models/ApplicationTypes.php b/app/Modules/Swiftpayment/Models/ApplicationTypes.php deleted file mode 100644 index b5e5bd4..0000000 --- a/app/Modules/Swiftpayment/Models/ApplicationTypes.php +++ /dev/null @@ -1,69 +0,0 @@ - __('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(); - } -} diff --git a/app/Modules/Swiftpayment/Models/SwiftPaymentStatus.php b/app/Modules/Swiftpayment/Models/SwiftPaymentStatus.php deleted file mode 100644 index 1dd9bdd..0000000 --- a/app/Modules/Swiftpayment/Models/SwiftPaymentStatus.php +++ /dev/null @@ -1,49 +0,0 @@ - __('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', - ]; - } -} diff --git a/app/Modules/Swiftpayment/Models/Swiftpayment.php b/app/Modules/Swiftpayment/Models/Swiftpayment.php deleted file mode 100644 index 6ae8fcf..0000000 --- a/app/Modules/Swiftpayment/Models/Swiftpayment.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ - 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); - } -} diff --git a/app/Modules/Swiftpayment/Nova/Resources/NovaSwiftpayment.php b/app/Modules/Swiftpayment/Nova/Resources/NovaSwiftpayment.php deleted file mode 100644 index 3abcbc7..0000000 --- a/app/Modules/Swiftpayment/Nova/Resources/NovaSwiftpayment.php +++ /dev/null @@ -1,223 +0,0 @@ - - */ - 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 - */ - 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 - */ - 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(), - ]), - ]; - } -} diff --git a/app/Modules/Swiftpayment/Repositories/SwiftpaymentRepository.php b/app/Modules/Swiftpayment/Repositories/SwiftpaymentRepository.php deleted file mode 100644 index 76fa3ea..0000000 --- a/app/Modules/Swiftpayment/Repositories/SwiftpaymentRepository.php +++ /dev/null @@ -1,32 +0,0 @@ - - */ - protected Builder $queryBuilder; - - /** - * Model - */ - public static function model(): string - { - return Swiftpayment::class; - } - - /** - * Product repository - */ - public function __construct() - { - $this->queryBuilder = self::model()::query(); - } -} diff --git a/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php b/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php index 3ab934c..d06c2aa 100644 --- a/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php +++ b/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php @@ -6,7 +6,6 @@ use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder; use App\Modules\VisaMasterPaymentOrder\Nova\Resources\VisaMasterPaymentOrderFileFields; use App\Nova\Resources\Branch\Branch; 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 Laravel\Nova\Fields\Badge; @@ -29,126 +28,126 @@ class VisaMasterPaymentOrderFieldsForDetail public static function make($resource): array { return [ - new Panel(__('Status'), [ - ID::make() - ->hideFromDetail(), + new Panel(__('Status'), [ + ID::make() + ->hideFromDetail(), - Hidden::make('user_id') - ->default(auth()->id()) - ->hideWhenUpdating(), + Hidden::make('user_id') + ->default(auth()->id()) + ->hideWhenUpdating(), - Text::make(__('ID'), 'unique_id') - ->exceptOnForms(), + Text::make(__('ID'), 'unique_id') + ->exceptOnForms(), - Select::make(__('Status'), 'status') + 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(__('Application type'), [ + Select::make(__('Application type'), 'type') + ->fullWidth() + ->searchable() + ->rules('required') + ->displayUsingLabels() + ->options(VisaMasterPaymentOrder::applicationTypes()), + ]), + 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(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(__('Application type'), [ - Select::make(__('Application type'), 'type') - ->fullWidth() - ->searchable() - ->rules('required') - ->displayUsingLabels() - ->options(VisaMasterPaymentOrder::applicationTypes()), - ]), - new Panel(__('Location'), [ - Select::make(__('Region'), 'region') - ->fullWidth() - ->displayUsingLabels() - ->searchable() - ->options(RegionRepo::values()) - ->default(RegionRepo::default()) + ->options(PassportRepo::values()) ->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'), + NovaInputmask::make(__('Passport number'), 'passport_number') + ->mask('999999') + ->rules('required', 'max:255'), - Text::make(__('Passport surname'), 'passport_surname') - ->fullWidth() - ->rules('required', 'string', 'max:255'), + Text::make( + name: sprintf('%s %s %s', __('Name'), __('Surname'), __('Patronic name')), + attribute: 'full_name' + ) + ->rules('required', 'max:255'), + ])->minRows(1)->rules('required'), - NovaInputmask::make(__('Phone'), 'phone') - ->fullWidth() - ->phonenumber('TM') - ->rules('required', 'max:255') - ->hideFromIndex(), + SimpleRepeatable::make(__('Payee information'), 'payment_reciever', [ + Select::make(__('Passport serie'), 'passport_serie') + ->displayUsingLabels() + ->searchable() + ->options(PassportRepo::values()) + ->rules('required') + ->sortable(), - Text::make(__('Email'), 'email') - ->fullWidth() - ->rules('nullable', 'max:255', 'email') - ->hideFromIndex(), + NovaInputmask::make(__('Passport number'), 'passport_number') + ->mask('999999') + ->rules('required', 'max:255'), - 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(), + Text::make( + name: sprintf('%s %s %s', __('Name'), __('Surname'), __('Patronic name')), + attribute: 'full_name' + )->rules('required', 'max:255'), + ])->maxRows(1)->minRows(1)->rules('required'), + ]), - 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()), + new Panel(__('Reciver files'), VisaMasterPaymentOrderFileFields::reciverFiles()), + new Panel(__('Sender files'), VisaMasterPaymentOrderFileFields::senderFiles()), ]; } } diff --git a/app/Modules/VisaMasterPaymentOrder/Nova/Resources/VisaMasterPaymentOrderFileFields.php b/app/Modules/VisaMasterPaymentOrder/Nova/Resources/VisaMasterPaymentOrderFileFields.php index 6bebf06..2794057 100644 --- a/app/Modules/VisaMasterPaymentOrder/Nova/Resources/VisaMasterPaymentOrderFileFields.php +++ b/app/Modules/VisaMasterPaymentOrder/Nova/Resources/VisaMasterPaymentOrderFileFields.php @@ -4,7 +4,6 @@ namespace App\Modules\VisaMasterPaymentOrder\Nova\Resources; use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder; use Ebess\AdvancedNovaMediaLibrary\Fields\Files; -use Illuminate\Support\Facades\Storage; use Laravel\Nova\Fields\File; use Laravel\Nova\Http\Requests\NovaRequest; @@ -24,7 +23,8 @@ class VisaMasterPaymentOrderFileFields ->updateRules('nullable') ->required($file['required']) ->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']) ->preservingOriginal() ->toMediaCollection($file['code']); @@ -51,7 +51,8 @@ class VisaMasterPaymentOrderFileFields ->updateRules('nullable') ->required($file['required']) ->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']) ->preservingOriginal() ->toMediaCollection($file['code']); diff --git a/app/Repos/System/Nova/NovaMenuRepo.php b/app/Repos/System/Nova/NovaMenuRepo.php index 51712d4..9254947 100644 --- a/app/Repos/System/Nova/NovaMenuRepo.php +++ b/app/Repos/System/Nova/NovaMenuRepo.php @@ -2,7 +2,7 @@ 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\Nova\Dashboards\Main; use App\Nova\Resources\Branch\Branch; @@ -50,11 +50,9 @@ class NovaMenuRepo MenuItem::resource(CardPin::class), ])->collapsedByDefault(), - MenuGroup::make(__('Swift payments'), [ - MenuItem::resource(NovaSwiftpayment::class) - ->name(sprintf('%s (%s)', __('International payments'), __('Visa, Master, Sber, WU'))), - + MenuGroup::make(__('International payments'), [ MenuItem::resource(NovaVisaMasterPaymentOrder::class), + MenuItem::resource(NovaSberPaymentOrder::class), ])->collapsedByDefault(), ])->icon('ticket')->collapsedByDefault(), diff --git a/config/backup.php b/config/backup.php index b12f1f9..a694f1a 100644 --- a/config/backup.php +++ b/config/backup.php @@ -29,9 +29,6 @@ return [ 'exclude' => [ base_path('vendor'), base_path('node_modules'), - storage_path('app/Panel'), - storage_path('app/TBBANK'), - storage_path('app/backup-temp'), ], /* diff --git a/lang/tk.json b/lang/tk.json index 5b1cbb4..00075c3 100644 --- a/lang/tk.json +++ b/lang/tk.json @@ -299,5 +299,6 @@ "Payee information": "Tölegi kabul edijiniň maglumatlary", "Reciver files": "Kabul ediji talyp boýunça resminamalary", "Sender files": "Ugradyjy boýunça resminamalary", - "Next": "Indiki" + "Next": "Indiki", + "Loading": "Ýüklenilýär" } diff --git a/resources/views/vendor/nova/layout.blade.php b/resources/views/vendor/nova/layout.blade.php index 9a65ea1..02b3b8c 100644 --- a/resources/views/vendor/nova/layout.blade.php +++ b/resources/views/vendor/nova/layout.blade.php @@ -34,7 +34,7 @@
-

Loading...

+

{{ __('Loading') }}...