Enhance ListRecords pages with tab functionality and default sorting
- Added getTabs method to ListCardPinOrders, ListLoanOrders, and ListLoanOrderMobiles pages to display order statuses for system users. - Implemented default sorting by 'created_at' in LoanOrdersTable and LoanOrderMobilesTable for improved data organization. - Updated ManageCards page to ensure proper type declaration for getTitle method.
This commit is contained in:
@@ -11,7 +11,7 @@ class ManageCards extends ManageRecords
|
|||||||
{
|
{
|
||||||
protected static string $resource = CardResource::class;
|
protected static string $resource = CardResource::class;
|
||||||
|
|
||||||
public function getTitle(): string | Htmlable
|
public function getTitle(): string|Htmlable
|
||||||
{
|
{
|
||||||
return __('My cards');
|
return __('My cards');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
namespace App\Filament\Clusters\Cards\Resources\CardPinOrders\Pages;
|
namespace App\Filament\Clusters\Cards\Resources\CardPinOrders\Pages;
|
||||||
|
|
||||||
use App\Filament\Clusters\Cards\Resources\CardPinOrders\CardPinOrderResource;
|
use App\Filament\Clusters\Cards\Resources\CardPinOrders\CardPinOrderResource;
|
||||||
|
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
|
||||||
use Filament\Actions\CreateAction;
|
use Filament\Actions\CreateAction;
|
||||||
use Filament\Resources\Pages\ListRecords;
|
use Filament\Resources\Pages\ListRecords;
|
||||||
|
use Filament\Schemas\Components\Tabs\Tab;
|
||||||
|
|
||||||
class ListCardPinOrders extends ListRecords
|
class ListCardPinOrders extends ListRecords
|
||||||
{
|
{
|
||||||
@@ -16,4 +18,23 @@ class ListCardPinOrders extends ListRecords
|
|||||||
CreateAction::make(),
|
CreateAction::make(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTabs(): array
|
||||||
|
{
|
||||||
|
if (! user()->isSystemUser()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach (array_keys(OrderStatusRepository::statusClasses()) as $status) {
|
||||||
|
if ($status === '') {
|
||||||
|
$data[null] = Tab::make(__('All'));
|
||||||
|
} else {
|
||||||
|
$data[$status] = Tab::make(OrderStatusRepository::statusFormatted($status))->query(fn ($query) => $query->where('status', $status));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
namespace App\Filament\Clusters\Loans\LoanOrders\Pages;
|
namespace App\Filament\Clusters\Loans\LoanOrders\Pages;
|
||||||
|
|
||||||
use App\Filament\Clusters\Loans\LoanOrders\LoanOrderResource;
|
use App\Filament\Clusters\Loans\LoanOrders\LoanOrderResource;
|
||||||
|
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
|
||||||
use Filament\Actions\CreateAction;
|
use Filament\Actions\CreateAction;
|
||||||
use Filament\Resources\Pages\ListRecords;
|
use Filament\Resources\Pages\ListRecords;
|
||||||
|
use Filament\Schemas\Components\Tabs\Tab;
|
||||||
|
|
||||||
class ListLoanOrders extends ListRecords
|
class ListLoanOrders extends ListRecords
|
||||||
{
|
{
|
||||||
@@ -16,4 +18,23 @@ class ListLoanOrders extends ListRecords
|
|||||||
CreateAction::make(),
|
CreateAction::make(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTabs(): array
|
||||||
|
{
|
||||||
|
if (! user()->isSystemUser()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach (array_keys(OrderStatusRepository::statusClasses()) as $status) {
|
||||||
|
if ($status === '') {
|
||||||
|
$data[null] = Tab::make(__('All'));
|
||||||
|
} else {
|
||||||
|
$data[$status] = Tab::make(OrderStatusRepository::statusFormatted($status))->query(fn ($query) => $query->where('status', $status));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class LoanOrdersTable
|
|||||||
|
|
||||||
DefaultQueryForResourceIndexRepository::make($query);
|
DefaultQueryForResourceIndexRepository::make($query);
|
||||||
})
|
})
|
||||||
|
->defaultSort('created_at', 'desc')
|
||||||
->columns([
|
->columns([
|
||||||
TextColumn::make('id')
|
TextColumn::make('id')
|
||||||
->label('ID')
|
->label('ID')
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
namespace App\Filament\Clusters\Loans\Resources\LoanOrderMobiles\Pages;
|
namespace App\Filament\Clusters\Loans\Resources\LoanOrderMobiles\Pages;
|
||||||
|
|
||||||
use App\Filament\Clusters\Loans\Resources\LoanOrderMobiles\LoanOrderMobileResource;
|
use App\Filament\Clusters\Loans\Resources\LoanOrderMobiles\LoanOrderMobileResource;
|
||||||
|
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
|
||||||
use Filament\Actions\CreateAction;
|
use Filament\Actions\CreateAction;
|
||||||
use Filament\Resources\Pages\ListRecords;
|
use Filament\Resources\Pages\ListRecords;
|
||||||
|
use Filament\Schemas\Components\Tabs\Tab;
|
||||||
|
|
||||||
class ListLoanOrderMobiles extends ListRecords
|
class ListLoanOrderMobiles extends ListRecords
|
||||||
{
|
{
|
||||||
@@ -16,4 +18,23 @@ class ListLoanOrderMobiles extends ListRecords
|
|||||||
CreateAction::make(),
|
CreateAction::make(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTabs(): array
|
||||||
|
{
|
||||||
|
if (! user()->isSystemUser()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach (array_keys(OrderStatusRepository::statusClasses()) as $status) {
|
||||||
|
if ($status === '') {
|
||||||
|
$data[null] = Tab::make(__('All'));
|
||||||
|
} else {
|
||||||
|
$data[$status] = Tab::make(OrderStatusRepository::statusFormatted($status))->query(fn ($query) => $query->where('status', $status));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class LoanOrderMobilesTable
|
|||||||
|
|
||||||
DefaultQueryForResourceIndexRepository::make($query);
|
DefaultQueryForResourceIndexRepository::make($query);
|
||||||
})
|
})
|
||||||
|
->defaultSort('created_at', 'desc')
|
||||||
->columns([
|
->columns([
|
||||||
TextColumn::make('id')
|
TextColumn::make('id')
|
||||||
->label('ID')
|
->label('ID')
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
namespace App\Filament\Clusters\Loans\Resources\LoanPaidOffLetters\Pages;
|
namespace App\Filament\Clusters\Loans\Resources\LoanPaidOffLetters\Pages;
|
||||||
|
|
||||||
use App\Filament\Clusters\Loans\Resources\LoanPaidOffLetters\LoanPaidOffLetterResource;
|
use App\Filament\Clusters\Loans\Resources\LoanPaidOffLetters\LoanPaidOffLetterResource;
|
||||||
|
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
|
||||||
use Filament\Actions\CreateAction;
|
use Filament\Actions\CreateAction;
|
||||||
use Filament\Resources\Pages\ListRecords;
|
use Filament\Resources\Pages\ListRecords;
|
||||||
|
use Filament\Schemas\Components\Tabs\Tab;
|
||||||
|
|
||||||
class ListLoanPaidOffLetters extends ListRecords
|
class ListLoanPaidOffLetters extends ListRecords
|
||||||
{
|
{
|
||||||
@@ -16,4 +18,23 @@ class ListLoanPaidOffLetters extends ListRecords
|
|||||||
CreateAction::make(),
|
CreateAction::make(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTabs(): array
|
||||||
|
{
|
||||||
|
if (! user()->isSystemUser()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach (array_keys(OrderStatusRepository::statusClasses()) as $status) {
|
||||||
|
if ($status === '') {
|
||||||
|
$data[null] = Tab::make(__('All'));
|
||||||
|
} else {
|
||||||
|
$data[$status] = Tab::make(OrderStatusRepository::statusFormatted($status))->query(fn ($query) => $query->where('status', $status));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ class LoanPaidOffLettersTable
|
|||||||
->modifyQueryUsing(function (Builder $query) {
|
->modifyQueryUsing(function (Builder $query) {
|
||||||
DefaultQueryForResourceIndexRepository::make($query);
|
DefaultQueryForResourceIndexRepository::make($query);
|
||||||
})
|
})
|
||||||
|
->defaultSort('created_at', 'desc')
|
||||||
->columns([
|
->columns([
|
||||||
TextColumn::make('id')
|
TextColumn::make('id')
|
||||||
->label('ID')
|
->label('ID')
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ class VisaMasterPaymentOrderForm
|
|||||||
AdvancedFileUpload::make('sender_passport_local')
|
AdvancedFileUpload::make('sender_passport_local')
|
||||||
->spatieMediaLibrary(collection: 'sender_passport_local')
|
->spatieMediaLibrary(collection: 'sender_passport_local')
|
||||||
->multiple(),
|
->multiple(),
|
||||||
|
|
||||||
SpatieMediaLibraryFileUpload::make('sender_passport_international')
|
SpatieMediaLibraryFileUpload::make('sender_passport_international')
|
||||||
->collection('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')),
|
->label(__('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportynyň asyl görnüşi we göçürmesi')),
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Clusters\VisaMasterPayments\Resources\VisaMasterPaymentOrders\Tables;
|
namespace App\Filament\Clusters\VisaMasterPayments\Resources\VisaMasterPaymentOrders\Tables;
|
||||||
|
|
||||||
|
use App\Modules\DefaultQueryForResourceIndex\Repositories\DefaultQueryForResourceIndexRepository;
|
||||||
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
|
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
|
||||||
use App\Modules\Region\Repositories\RegionRepository;
|
use App\Modules\Region\Repositories\RegionRepository;
|
||||||
use Filament\Actions\BulkActionGroup;
|
use Filament\Actions\BulkActionGroup;
|
||||||
@@ -14,6 +15,7 @@ use Filament\Tables\Columns\IconColumn;
|
|||||||
use Filament\Tables\Columns\TextColumn;
|
use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Filters\TrashedFilter;
|
use Filament\Tables\Filters\TrashedFilter;
|
||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class VisaMasterPaymentOrdersTable
|
class VisaMasterPaymentOrdersTable
|
||||||
@@ -21,6 +23,9 @@ class VisaMasterPaymentOrdersTable
|
|||||||
public static function configure(Table $table): Table
|
public static function configure(Table $table): Table
|
||||||
{
|
{
|
||||||
return $table
|
return $table
|
||||||
|
->modifyQueryUsing(function (Builder $query) {
|
||||||
|
DefaultQueryForResourceIndexRepository::make($query);
|
||||||
|
})
|
||||||
->defaultSort('created_at', direction: 'desc')
|
->defaultSort('created_at', direction: 'desc')
|
||||||
->columns([
|
->columns([
|
||||||
TextColumn::make('id')
|
TextColumn::make('id')
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class UserForm
|
|||||||
->unique(ignoreRecord: true)
|
->unique(ignoreRecord: true)
|
||||||
->mask('99 99 99 99')
|
->mask('99 99 99 99')
|
||||||
->prefix('+993')
|
->prefix('+993')
|
||||||
->dehydrateStateUsing(fn($state) => unMaskTurkmenNumber($state))
|
->dehydrateStateUsing(fn ($state) => unMaskTurkmenNumber($state))
|
||||||
->rules([
|
->rules([
|
||||||
new PhoneNumberVerificationRule,
|
new PhoneNumberVerificationRule,
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ namespace App\Models;
|
|||||||
|
|
||||||
use App\Modules\UserAdjustments\Traits\UserAdjustments;
|
use App\Modules\UserAdjustments\Traits\UserAdjustments;
|
||||||
use Filament\Models\Contracts\FilamentUser;
|
use Filament\Models\Contracts\FilamentUser;
|
||||||
|
use Filament\Models\Contracts\HasAvatar;
|
||||||
use Filament\Panel;
|
use Filament\Panel;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Filament\Models\Contracts\HasAvatar;
|
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Illuminate\Support\Facades\Date;
|
use Illuminate\Support\Facades\Date;
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
'card_order_created' => 'Kart sargydyňyz :order_id belgi bilen hasaba alyndy. Sargydy tassyklamak üçin operatorymyz habarlaşar.',
|
'card_order_created' => 'Kart sargydyňyz :order_id belgi bilen hasaba alyndy. Sargydy tassyklamak üçin operatorymyz habarlaşar.',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -47,4 +47,3 @@ class OnlinePaymentPolicy
|
|||||||
return $user->can('ForceDelete:OnlinePayment');
|
return $user->can('ForceDelete:OnlinePayment');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ class SmsRepository
|
|||||||
public static function sendSMS(string|int $phone, string|int $message): mixed
|
public static function sendSMS(string|int $phone, string|int $message): mixed
|
||||||
{
|
{
|
||||||
if (app()->environment('local')) {
|
if (app()->environment('local')) {
|
||||||
info('Sending SMS to ' . $phone . ' with message: ' . $message);
|
info('Sending SMS to '.$phone.' with message: '.$message);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ use Spatie\MediaLibrary\InteractsWithMedia;
|
|||||||
* @property \Illuminate\Support\Carbon|null $updated_at
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
* @property \Illuminate\Support\Carbon|null $deleted_at
|
* @property \Illuminate\Support\Carbon|null $deleted_at
|
||||||
*/
|
*/
|
||||||
class VisaMasterPaymentOrder extends Model implements HasMedia, BelongsToBranch
|
class VisaMasterPaymentOrder extends Model implements BelongsToBranch, HasMedia
|
||||||
{
|
{
|
||||||
use InteractsWithMedia;
|
use InteractsWithMedia;
|
||||||
use SoftDeletes;
|
use SoftDeletes;
|
||||||
|
|||||||
@@ -47,4 +47,3 @@ class VisaMasterPaymentOrderItemPolicy
|
|||||||
return $user->can('ForceDelete:VisaMasterPaymentOrderItem');
|
return $user->can('ForceDelete:VisaMasterPaymentOrderItem');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,4 +47,3 @@ class VisaMasterPaymentOrderPolicy
|
|||||||
return $user->can('ForceDelete:VisaMasterPaymentOrder');
|
return $user->can('ForceDelete:VisaMasterPaymentOrder');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,4 +47,3 @@ class VisaMasterSettingsPolicy
|
|||||||
return $user->can('ForceDelete:VisaMasterSettings');
|
return $user->can('ForceDelete:VisaMasterSettings');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class BranchesMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class CardOrdersMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,4 +26,4 @@ class CardPinOrdersMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class CardStatesMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class CardTypesMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class LoanOrderRequiredDocsMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,19 +2,16 @@
|
|||||||
|
|
||||||
namespace Database\Seeders\Migrators;
|
namespace Database\Seeders\Migrators;
|
||||||
|
|
||||||
use JsonMachine\JsonMachine;
|
|
||||||
use JsonMachine\Items;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\File;
|
use Illuminate\Support\Facades\File;
|
||||||
use Illuminate\Support\LazyCollection;
|
use JsonMachine\Items;
|
||||||
use Cerbero\LazyJson\LazyJson;
|
|
||||||
|
|
||||||
class LoanOrdersMigrator
|
class LoanOrdersMigrator
|
||||||
{
|
{
|
||||||
public function migrate(): void
|
public function migrate(): void
|
||||||
{
|
{
|
||||||
// Running on seeder file, may not work.
|
// Running on seeder file, may not work.
|
||||||
|
|
||||||
DB::table('loan_orders')->truncate();
|
DB::table('loan_orders')->truncate();
|
||||||
|
|
||||||
$path = database_path('data/nurmuhammetsdb/loan_orders.json');
|
$path = database_path('data/nurmuhammetsdb/loan_orders.json');
|
||||||
@@ -29,4 +26,4 @@ class LoanOrdersMigrator
|
|||||||
DB::table('loan_orders')->insert((array) $item);
|
DB::table('loan_orders')->insert((array) $item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class ProvincesMigrator
|
|||||||
->insert($data);
|
->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
namespace Database\Seeders\Migrators;
|
namespace Database\Seeders\Migrators;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use JsonMachine\JsonMachine;
|
|
||||||
use JsonMachine\Items;
|
use JsonMachine\Items;
|
||||||
|
|
||||||
class VisaMasterPaymentOrdersMigrator
|
class VisaMasterPaymentOrdersMigrator
|
||||||
@@ -21,7 +20,6 @@ class VisaMasterPaymentOrdersMigrator
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$sender_datas = json_decode($item->sender_datas);
|
$sender_datas = json_decode($item->sender_datas);
|
||||||
$payment_reciever = json_decode($item->payment_reciever);
|
$payment_reciever = json_decode($item->payment_reciever);
|
||||||
|
|
||||||
@@ -63,4 +61,4 @@ class VisaMasterPaymentOrdersMigrator
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Database\Seeders\Migrators\VisaMasterPaymentOrdersMigrator;
|
|
||||||
|
|
||||||
Route::redirect('/', filament_path());
|
Route::redirect('/', filament_path());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user