add swiftpayments from old source
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('swift_payments', function (Blueprint $table) {
|
||||
$table->uuid('id');
|
||||
$table->string('type')->nullable();
|
||||
$table->string('passport_name')->nullable();
|
||||
$table->string('passport_surname')->nullable();
|
||||
$table->string('phone')->nullable();
|
||||
$table->string('email')->nullable();
|
||||
$table->string('region')->nullable();
|
||||
|
||||
$table->foreignId('branch_id')->nullable()->constrained('branches')->cascadeOnDelete();
|
||||
$table->foreignId('user_id')->nullable()->constrained('users')->cascadeOnDelete();
|
||||
|
||||
$table->string('address')->nullable();
|
||||
|
||||
$table->json('sender_datas')->nullable();
|
||||
$table->json('payment_reciever')->nullable();
|
||||
|
||||
$table->json('documents')->nullable();
|
||||
|
||||
$table->string('status')->nullable();
|
||||
$table->string('notes')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
};
|
||||
69
app/Modules/Swiftpayment/Models/ApplicationTypes.php
Normal file
69
app/Modules/Swiftpayment/Models/ApplicationTypes.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
49
app/Modules/Swiftpayment/Models/SwiftPaymentStatus.php
Normal file
49
app/Modules/Swiftpayment/Models/SwiftPaymentStatus.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?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',
|
||||
];
|
||||
}
|
||||
}
|
||||
55
app/Modules/Swiftpayment/Models/Swiftpayment.php
Normal file
55
app/Modules/Swiftpayment/Models/Swiftpayment.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Modules\Swiftpayment\Models;
|
||||
|
||||
use App\Models\Branch\Branch;
|
||||
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
||||
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 HasUuids;
|
||||
use InteractsWithMedia;
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
185
app/Modules/Swiftpayment/Nova/Resources/NovaSwiftpayment.php
Normal file
185
app/Modules/Swiftpayment/Nova/Resources/NovaSwiftpayment.php
Normal file
@@ -0,0 +1,185 @@
|
||||
<?php
|
||||
|
||||
namespace App\Modules\Swiftpayment\Nova\Resources;
|
||||
|
||||
use App\Models\Branch\Branch;
|
||||
use App\Modules\Swiftpayment\Models\ApplicationTypes;
|
||||
use App\Modules\Swiftpayment\Models\SwiftPaymentStatus;
|
||||
use App\Nova\Resource;
|
||||
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 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\Fields\Trix;
|
||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||
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 = 'id';
|
||||
|
||||
/**
|
||||
* The columns that should be searched.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
public static $search = [
|
||||
'id',
|
||||
];
|
||||
|
||||
/**
|
||||
* Get the displayable label of the resource.
|
||||
*/
|
||||
public static function label(): string
|
||||
{
|
||||
return __('Swiftpayments');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the displayable singular label of the resource.
|
||||
*/
|
||||
public static function singularLabel(): string
|
||||
{
|
||||
return __('Swiftpayment');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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('id')->sortable(),
|
||||
|
||||
Hidden::make('user_id')->default(auth()->id()),
|
||||
|
||||
Select::make(__('Ýüztutmanyň görnüşi'), 'type')
|
||||
->searchable()
|
||||
->rules('required')
|
||||
->displayUsingLabels()
|
||||
->options(ApplicationTypes::applicationTypes()),
|
||||
|
||||
Select::make(__('Region'), 'region')
|
||||
->displayUsingLabels()
|
||||
->searchable()
|
||||
->options(RegionRepo::values())
|
||||
->default(RegionRepo::default())
|
||||
->rules('required')
|
||||
->sortable(),
|
||||
|
||||
Select::make(__('Branch'), 'branch_id')
|
||||
->displayUsingLabels()
|
||||
->searchable()
|
||||
->dependsOn('region', NovaRepo::dependsOnRegion('region', Branch::class))
|
||||
->rules('required')
|
||||
->sortable(),
|
||||
|
||||
Text::make('Pasportdaky ady', 'passport_name')
|
||||
->rules('required', 'string', 'max:255'),
|
||||
|
||||
Text::make('Pasportdaky familiýa', 'passport_surname')
|
||||
->rules('required', 'string', 'max:255'),
|
||||
|
||||
NovaInputmask::make('Telefon belgi', 'phone')
|
||||
->phonenumber('TM')
|
||||
->rules('required', 'max:255')
|
||||
->hideFromIndex(),
|
||||
|
||||
Text::make('Email', 'email')
|
||||
->rules('required', 'max:255', 'email')
|
||||
->hideFromIndex(),
|
||||
|
||||
Text::make('Ýaşaýan ýeriň salgysy', 'address')
|
||||
->rules('required', 'string', 'max:255')
|
||||
->hideFromIndex(),
|
||||
|
||||
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)->rules('required'),
|
||||
|
||||
// CustomHtml::make(__('Required files'), 'required_files')
|
||||
// ->onlyOnForms()
|
||||
// ->fillUsing(function ($request, $model, $attribute, $requestAttribute) {})
|
||||
// ->dependsOn(['type'], function (CustomHtml $field, NovaRequest $request, FormData $formData) {
|
||||
// if ($formData->type) {
|
||||
// $field->html(\App\Models\ApplicationTypes::filesFor($formData->type));
|
||||
// }
|
||||
// }),
|
||||
|
||||
Files::make('Talap edilýän resminamalar', 'main')
|
||||
->conversionOnIndexView('thumb')
|
||||
->rules('required')
|
||||
->hideFromIndex(),
|
||||
|
||||
Badge::make('Status')->map(SwiftPaymentStatus::classes())->addTypes([
|
||||
'primary' => 'dark:bg-gray-900 bg-gray-600 text-white',
|
||||
])->labels(SwiftPaymentStatus::values()),
|
||||
|
||||
Select::make(__('Status'), 'status')
|
||||
->onlyOnForms()
|
||||
->hideWhenCreating()
|
||||
->displayUsingLabels()
|
||||
->options(SwiftPaymentStatus::values())
|
||||
->canSee(function ($request) {
|
||||
return $request->user()->hasRole(['admin', 'manager', 'operator']);
|
||||
}),
|
||||
|
||||
Trix::make(__('Notes'), 'notes')
|
||||
->hideWhenCreating()
|
||||
->alwaysShow()
|
||||
->readonly(function ($request) {
|
||||
return ! $request->user()->hasRole(['admin', 'manager', 'operator']);
|
||||
}),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user