diff --git a/app/Filament/Clusters/VisaMasterPayments/Resources/VisaMasterPaymentOrders/Schemas/VisaMasterPaymentOrderInfolist.php b/app/Filament/Clusters/VisaMasterPayments/Resources/VisaMasterPaymentOrders/Schemas/VisaMasterPaymentOrderInfolist.php index f09d9e6..9385db5 100644 --- a/app/Filament/Clusters/VisaMasterPayments/Resources/VisaMasterPaymentOrders/Schemas/VisaMasterPaymentOrderInfolist.php +++ b/app/Filament/Clusters/VisaMasterPayments/Resources/VisaMasterPaymentOrders/Schemas/VisaMasterPaymentOrderInfolist.php @@ -2,7 +2,19 @@ namespace App\Filament\Clusters\VisaMasterPayments\Resources\VisaMasterPaymentOrders\Schemas; +use App\Modules\OrderStatus\Repositories\OrderStatusRepository; +use App\Modules\Region\Repositories\RegionRepository; +use App\Modules\TurkmenPassport\Repositories\TurkmenPassportRepository; +use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder; +use Filament\Infolists\Components\IconEntry; +use Filament\Infolists\Components\SpatieMediaLibraryImageEntry; +use Filament\Infolists\Components\TextEntry; +use Filament\Schemas\Components\Fieldset; +use Filament\Schemas\Components\Section; +use Filament\Schemas\Components\Tabs; +use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Schema; +use Filament\Support\Icons\Heroicon; class VisaMasterPaymentOrderInfolist { @@ -10,7 +22,187 @@ class VisaMasterPaymentOrderInfolist { return $schema ->components([ - // + Section::make(__('Order details')) + ->columnSpanFull() + ->columns(4) + ->components([ + TextEntry::make('type') + ->label(__('Payment type')) + ->formatStateUsing(fn ($state) => VisaMasterPaymentOrder::applicationTypes()[$state] ?? $state) + ->inlineLabel(true) + ->badge(), + + + TextEntry::make('status') + ->label(__('Status')) + ->formatStateUsing(fn ($state) => OrderStatusRepository::statusValues()[$state] ?? $state) + ->badge() + ->color(OrderStatusRepository::statusColorMatching()) + ->columnSpan(2), + + IconEntry::make('paid') + ->label(sprintf('%s (%s)', __('Paid'), __('This month'))) + ->boolean() + ->trueIcon(Heroicon::CheckCircle) + ->falseIcon(Heroicon::XCircle) + ->trueColor('success') + ->falseColor('danger'), + + TextEntry::make('notes') + ->label(__('Bellik')) + ->html() + ->columnSpanFull() + ->placeholder('-'), + ]), + + Tabs::make('Order Information') + ->tabs([ + Tab::make(__('Order type and bank')) + ->schema([ + + + Fieldset::make(__('Location')) + ->schema([ + TextEntry::make('region') + ->label(__('Region')) + ->formatStateUsing(fn ($state) => RegionRepository::values()[$state] ?? $state), + + TextEntry::make('branch.name') + ->label(__('Branch')) + ->placeholder('-'), + ]), + ]), + + Tab::make(__('Payment sender data')) + ->columns(8) + ->schema([ + TextEntry::make('sender_full_name') + ->label(__('Name, Surname, Patronic name')) + ->columnSpan(4) + ->placeholder('-'), + + TextEntry::make('sender_passport') + ->label(__('Passport serie and number')) + ->formatStateUsing(function ($record) { + $serie = TurkmenPassportRepository::values()[$record->sender_passport_serie] ?? $record->sender_passport_serie; + + return $serie.' '.$record->sender_passport_number; + }) + ->columnSpan(2) + ->placeholder('-'), + + TextEntry::make('phone') + ->label(__('Phone')) + ->formatStateUsing(fn ($state) => '+993 '.$state) + ->columnSpan(2) + ->placeholder('-'), + + TextEntry::make('sender_deposit_account') + ->label(__('Deposit account')) + ->columnSpan(4) + ->placeholder('-'), + + TextEntry::make('address') + ->label(__('Address')) + ->columnSpan(4) + ->placeholder('-'), + + Section::make(__('Files')) + ->description('PNG, JPEG, PDF') + ->columnSpanFull() + ->columns(2) + ->schema([ + SpatieMediaLibraryImageEntry::make('sender_passport_local') + ->collection('sender_passport_local') + ->label(__('Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi')), + + SpatieMediaLibraryImageEntry::make('sender_passport_international') + ->collection('sender_passport_international') + ->label(__('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportynyň asyl görnüşi we göçürmesi')), + + SpatieMediaLibraryImageEntry::make('sender_travel_stamp_on_passport') + ->collection('sender_travel_stamp_on_passport') + ->label(__('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')), + + SpatieMediaLibraryImageEntry::make('sender_proof_of_kinship') + ->collection('sender_proof_of_kinship') + ->label(__('Ugradyjynyň we kabul edijiniň (talybyň) özara garyndaşlyk derejesini tassyklaýjy resminamalarynyň göçürmesi')), + + SpatieMediaLibraryImageEntry::make('sender_passport_local_old') + ->collection('sender_passport_local_old') + ->label(__('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')), + + SpatieMediaLibraryImageEntry::make('sender_passport_local_old_replacement') + ->collection('sender_passport_local_old_replacement') + ->label(__('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')), + ]), + ]), + + Tab::make(__('Payee information')) + ->columns(8) + ->schema([ + TextEntry::make('reciever_full_name') + ->label(__('Name, Surname, Patronic name')) + ->columnSpan(5) + ->placeholder('-'), + + TextEntry::make('reciever_passport') + ->label(__('Passport serie and number')) + ->formatStateUsing(function ($record) { + $serie = TurkmenPassportRepository::values()[$record->reciever_passport_serie] ?? $record->reciever_passport_serie; + + return $serie.' '.$record->reciever_passport_number; + }) + ->columnSpan(3) + ->placeholder('-'), + + Section::make(__('Files')) + ->description('PNG, JPEG, PDF') + ->columnSpanFull() + ->columns(2) + ->schema([ + SpatieMediaLibraryImageEntry::make('receiver_requisite') + ->collection('receiver_requisite') + ->label(__('Talyba degişli walýuta "VISA" kartyň rekwizitleri')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_document_stating_he_is_studying') + ->collection('receiver_document_stating_he_is_studying') + ->label(__('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_ticket') + ->collection('receiver_ticket') + ->label(__('Talybyň bilediniň göçürmesi')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_passport_local') + ->collection('receiver_passport_local') + ->label(__('Talyba degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_passport_international') + ->collection('receiver_passport_international') + ->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin (zagran) pasportynyň göçürmesi')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_visa') + ->collection('receiver_visa') + ->label(__('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')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_travel_stamp_on_passport') + ->collection('receiver_travel_stamp_on_passport') + ->label(__('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')) + ->columnSpan(1), + + SpatieMediaLibraryImageEntry::make('receiver_document_stating_he_is_studying_2') + ->collection('receiver_document_stating_he_is_studying_2') + ->label(__('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')) + ->columnSpan(1), + ]), + ]), + ])->columnSpanFull(), ]); } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 4c305b9..87be80e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -8,6 +8,9 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\ServiceProvider; use Spatie\Translatable\HasTranslations; +use BezhanSalleh\LanguageSwitch\LanguageSwitch; +use BezhanSalleh\LanguageSwitch\Events\LocaleChanged; +use Illuminate\Support\Facades\Event; class AppServiceProvider extends ServiceProvider { @@ -33,6 +36,17 @@ class AppServiceProvider extends ServiceProvider ->locales(array_keys(baseLocales())); }); + LanguageSwitch::configureUsing(function (LanguageSwitch $switch) { + $switch + ->locales(['tk', 'en', 'ru']); + }); + + Event::listen(function (LocaleChanged $event) { + if (array_key_exists($event->locale, baseLocales())) { + user()->update(['locale' => $event->locale]); + } + }); + /** * Order by translation for spatie/laravel-translatable * diff --git a/app/Providers/Filament/WorkPanelProvider.php b/app/Providers/Filament/WorkPanelProvider.php index 8f592da..83f57f1 100644 --- a/app/Providers/Filament/WorkPanelProvider.php +++ b/app/Providers/Filament/WorkPanelProvider.php @@ -5,6 +5,7 @@ namespace App\Providers\Filament; use App\Http\Middleware\EnsureProfileIsFilled; use App\Livewire\UserProfileFields; use App\Modules\BaseAuth\Middleware\RedirectIfUserPhoneIsUnVerfied; +use App\Modules\BaseLocale\Middleware\SetLocale; use BezhanSalleh\FilamentShield\FilamentShieldPlugin; use CraftForge\FilamentLanguageSwitcher\FilamentLanguageSwitcherPlugin; use Filament\Http\Middleware\Authenticate; @@ -63,13 +64,6 @@ class WorkPanelProvider extends PanelProvider FilamentShieldPlugin::make() ->navigationGroup('Roles and permissions'), - FilamentLanguageSwitcherPlugin::make() - ->locales([ - ['code' => 'tk', 'name' => 'Turkmen', 'flag' => 'tm'], - ['code' => 'en', 'name' => 'English', 'flag' => 'us'], - ['code' => 'ru', 'name' => 'Russian', 'flag' => 'ru'], - ]), - FilamentEditProfilePlugin::make() ->setTitle(__('My profile')) ->setNavigationLabel(__('My profile')) diff --git a/composer.json b/composer.json index 6553985..e5ba5b6 100644 --- a/composer.json +++ b/composer.json @@ -8,8 +8,8 @@ "require": { "php": "^8.2", "abdulmajeed-jamaan/filament-translatable-tabs": "^4.0", + "bezhansalleh/filament-language-switch": "^4.0", "bezhansalleh/filament-shield": "^4.0", - "craft-forge/filament-language-switcher": "^1.0", "filament/filament": "^4.0", "filament/spatie-laravel-media-library-plugin": "^4.0", "joaopaulolndev/filament-edit-profile": "^2.0", diff --git a/composer.lock b/composer.lock index fa3d0bb..393ead7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "584315664487bcdd32d267ffebbc8819", + "content-hash": "d2a574fdd5c95390e8843b9dbd8659e5", "packages": [ { "name": "abdulmajeed-jamaan/filament-translatable-tabs", @@ -142,6 +142,91 @@ }, "time": "2025-07-30T15:45:57+00:00" }, + { + "name": "bezhansalleh/filament-language-switch", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/bezhanSalleh/filament-language-switch.git", + "reference": "e4d9a6fc5ed36977da6bf93fbc1a231429b91e6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bezhanSalleh/filament-language-switch/zipball/e4d9a6fc5ed36977da6bf93fbc1a231429b91e6f", + "reference": "e4d9a6fc5ed36977da6bf93fbc1a231429b91e6f", + "shasum": "" + }, + "require": { + "filament/filament": "^4.0", + "illuminate/support": "^11.28|^12.0", + "php": "^8.2", + "spatie/laravel-package-tools": "^1.9" + }, + "require-dev": { + "larastan/larastan": "^3.0", + "laravel/pint": "^1.0", + "nunomaduro/collision": "^8.0", + "orchestra/testbench": "^9.0|^10.0", + "pestphp/pest": "^2.0|^3.0", + "pestphp/pest-plugin-laravel": "^2.0|^3.0", + "pestphp/pest-plugin-livewire": "^2.0|^3.0", + "pestphp/pest-plugin-type-coverage": "^2.0|^3.5", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^1.0|^2.1", + "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.0|^2.0", + "phpunit/phpunit": "^10.1|^11.0", + "rector/rector": "^2.1", + "spatie/laravel-ray": "^1.40" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BezhanSalleh\\LanguageSwitch\\LanguageSwitchServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "BezhanSalleh\\LanguageSwitch\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bezhan Salleh", + "email": "bezhan_salleh@yahoo.com", + "role": "Developer" + } + ], + "description": "Zero config Language Switch(Changer/Localizer) plugin for filamentphp admin", + "homepage": "https://github.com/bezhansalleh/filament-language-switch", + "keywords": [ + "bezhanSalleh", + "filament-language-changer", + "filament-language-switch", + "filament-locale-changer", + "filament-localizer", + "filament-plugin", + "filamentphp", + "laravel" + ], + "support": { + "issues": "https://github.com/bezhanSalleh/filament-language-switch/issues", + "source": "https://github.com/bezhanSalleh/filament-language-switch/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/bezhanSalleh", + "type": "github" + } + ], + "time": "2025-08-19T22:55:31+00:00" + }, { "name": "bezhansalleh/filament-plugin-essentials", "version": "1.0.0", @@ -901,67 +986,6 @@ ], "time": "2025-08-20T19:15:30+00:00" }, - { - "name": "craft-forge/filament-language-switcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/craft-forge/filament-language-switcher.git", - "reference": "cd3beffb18110319f43f9fd32decb4a038a8feec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/craft-forge/filament-language-switcher/zipball/cd3beffb18110319f43f9fd32decb4a038a8feec", - "reference": "cd3beffb18110319f43f9fd32decb4a038a8feec", - "shasum": "" - }, - "require": { - "filament/filament": "^3.0|^4.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.16", - "stijnvanouplines/blade-country-flags": "^1.0.6" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "CraftForge\\FilamentLanguageSwitcher\\FilamentLanguageSwitcherServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "CraftForge\\FilamentLanguageSwitcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taras Koval", - "email": "taraskovaldev@gmail.com", - "homepage": "https://github.com/taras-koval" - } - ], - "description": "Zero-config language switcher for Filament admin panels. Automatically scans available translations, renders dropdown with country flags, persists selection via sessions.", - "homepage": "https://github.com/craft-forge/filament-language-switcher", - "keywords": [ - "admin", - "filament", - "i18n", - "language", - "laravel", - "localization", - "switcher" - ], - "support": { - "issues": "https://github.com/craft-forge/filament-language-switcher/issues", - "source": "https://github.com/craft-forge/filament-language-switcher" - }, - "time": "2025-09-16T11:01:08+00:00" - }, { "name": "danharrin/date-format-converter", "version": "v0.3.1", @@ -7393,60 +7417,6 @@ }, "time": "2025-08-04T02:33:41+00:00" }, - { - "name": "stijnvanouplines/blade-country-flags", - "version": "1.0.6", - "source": { - "type": "git", - "url": "https://github.com/stijnvanouplines/blade-country-flags.git", - "reference": "a1503171f666408398824b4dce0eea0e587ed6bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/stijnvanouplines/blade-country-flags/zipball/a1503171f666408398824b4dce0eea0e587ed6bc", - "reference": "a1503171f666408398824b4dce0eea0e587ed6bc", - "shasum": "" - }, - "require": { - "blade-ui-kit/blade-icons": "^1.0", - "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", - "php": "^7.4|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.18|^8.0|^9.0|^10.0", - "pestphp/pest": "^1.4|^2.34|^3.0", - "spatie/pest-plugin-snapshots": "^1.0|^2.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "StijnVanouplines\\BladeCountryFlags\\BladeCountryFlagsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "StijnVanouplines\\BladeCountryFlags\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A package to easily make use of country flags in your Laravel Blade views.", - "homepage": "https://github.com/stijnvanouplines/blade-country-flags", - "keywords": [ - "blade", - "country flags", - "laravel" - ], - "support": { - "issues": "https://github.com/stijnvanouplines/blade-country-flags/issues", - "source": "https://github.com/stijnvanouplines/blade-country-flags/tree/1.0.6" - }, - "time": "2025-04-22T06:40:23+00:00" - }, { "name": "symfony/clock", "version": "v7.3.0", @@ -8139,16 +8109,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.6", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "6379e490d6ecfc5c4224ff3a754b90495ecd135c" + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6379e490d6ecfc5c4224ff3a754b90495ecd135c", - "reference": "6379e490d6ecfc5c4224ff3a754b90495ecd135c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", "shasum": "" }, "require": { @@ -8198,7 +8168,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.6" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" }, "funding": [ { @@ -8218,7 +8188,7 @@ "type": "tidelift" } ], - "time": "2025-11-06T11:05:57+00:00" + "time": "2025-11-08T16:41:12+00:00" }, { "name": "symfony/http-kernel", diff --git a/lang/ru.json b/lang/ru.json index 70b91d4..c74baef 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -685,5 +685,5 @@ "Legal Marriage": "Raýat nika", "School": "Orta bilim", "School drop out": "Gutarylmadyk orta bilim", - "Unfinished high education": "Gutarylmadyk ýokary bilim", + "Unfinished high education": "Gutarylmadyk ýokary bilim" } diff --git a/lang/tk.json b/lang/tk.json index b015750..cc5f268 100644 --- a/lang/tk.json +++ b/lang/tk.json @@ -704,5 +704,6 @@ "Order details": "Sargyt barada", "Name, Surname, Patronic name": "Ady, Familiýasy, Atasynyň ady", "Deposit account": "Goýum hasaby", - "Files": "Faýllar" + "Files": "Faýllar", + "Payment type": "Töleg görnüşi" }