From b6537c5314f3d529028882557f1d5bff74cb8119 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Sat, 20 Sep 2025 12:55:18 +0500 Subject: [PATCH] Refactor GroupForm to use unique validation method for start_date; enhance PilgrimResource and PilgrimForm with method documentation; update web routes to redirect from root to panel. --- .../Resources/Groups/Schemas/GroupForm.php | 2 +- .../Resources/Pilgrims/PilgrimResource.php | 14 +++++ .../Pilgrims/Schemas/PilgrimForm.php | 4 ++ .../Resources/Users/Pages/CreateUser.php | 11 ++++ .../Resources/Users/Pages/EditUser.php | 19 ++++++ .../Resources/Users/Pages/ListUsers.php | 19 ++++++ .../Resources/Users/Schemas/UserForm.php | 27 +++++++++ .../Resources/Users/Tables/UsersTable.php | 46 ++++++++++++++ app/Filament/Resources/Users/UserResource.php | 60 +++++++++++++++++++ routes/web.php | 2 +- 10 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 app/Filament/Resources/Users/Pages/CreateUser.php create mode 100644 app/Filament/Resources/Users/Pages/EditUser.php create mode 100644 app/Filament/Resources/Users/Pages/ListUsers.php create mode 100644 app/Filament/Resources/Users/Schemas/UserForm.php create mode 100644 app/Filament/Resources/Users/Tables/UsersTable.php create mode 100644 app/Filament/Resources/Users/UserResource.php diff --git a/app/Filament/Resources/Groups/Schemas/GroupForm.php b/app/Filament/Resources/Groups/Schemas/GroupForm.php index b7f6ae3..ecc2dda 100644 --- a/app/Filament/Resources/Groups/Schemas/GroupForm.php +++ b/app/Filament/Resources/Groups/Schemas/GroupForm.php @@ -21,7 +21,7 @@ class GroupForm ->required() ->live() ->afterStateUpdated(fn (Set $set, ?string $state) => $set('end_date', $state ? Carbon::parse($state)->addDays(14)->format('Y-m-d') : null)) - ->rules('unique:groups,start_date'), + ->unique(ignoreRecord: true), DatePicker::make('end_date') ->label('Gutarýan senesi') diff --git a/app/Filament/Resources/Pilgrims/PilgrimResource.php b/app/Filament/Resources/Pilgrims/PilgrimResource.php index 9bb37b0..36da219 100644 --- a/app/Filament/Resources/Pilgrims/PilgrimResource.php +++ b/app/Filament/Resources/Pilgrims/PilgrimResource.php @@ -28,16 +28,27 @@ class PilgrimResource extends Resource protected static ?string $pluralLabel = 'Zyýaratçylar'; + /** + * @param Schema $schema + * @return Schema + */ public static function form(Schema $schema): Schema { return PilgrimForm::configure($schema); } + /** + * @param Table $table + * @return Table + */ public static function table(Table $table): Table { return PilgrimsTable::configure($table); } + /** + * @return array + */ public static function getRelations(): array { return [ @@ -45,6 +56,9 @@ class PilgrimResource extends Resource ]; } + /** + * @return array + */ public static function getPages(): array { return [ diff --git a/app/Filament/Resources/Pilgrims/Schemas/PilgrimForm.php b/app/Filament/Resources/Pilgrims/Schemas/PilgrimForm.php index 5a95840..d111583 100644 --- a/app/Filament/Resources/Pilgrims/Schemas/PilgrimForm.php +++ b/app/Filament/Resources/Pilgrims/Schemas/PilgrimForm.php @@ -10,6 +10,10 @@ use Filament\Schemas\Schema; class PilgrimForm { + /** + * @param Schema $schema + * @return Schema + */ public static function configure(Schema $schema): Schema { return $schema diff --git a/app/Filament/Resources/Users/Pages/CreateUser.php b/app/Filament/Resources/Users/Pages/CreateUser.php new file mode 100644 index 0000000..125b3ff --- /dev/null +++ b/app/Filament/Resources/Users/Pages/CreateUser.php @@ -0,0 +1,11 @@ +components([ + TextInput::make('name') + ->required(), + TextInput::make('email') + ->label('Email address') + ->email() + ->required(), + DateTimePicker::make('email_verified_at'), + TextInput::make('password') + ->password() + ->required(), + ]); + } +} diff --git a/app/Filament/Resources/Users/Tables/UsersTable.php b/app/Filament/Resources/Users/Tables/UsersTable.php new file mode 100644 index 0000000..e0da462 --- /dev/null +++ b/app/Filament/Resources/Users/Tables/UsersTable.php @@ -0,0 +1,46 @@ +columns([ + TextColumn::make('name') + ->searchable(), + TextColumn::make('email') + ->label('Email address') + ->searchable(), + TextColumn::make('email_verified_at') + ->dateTime() + ->sortable(), + TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Filament/Resources/Users/UserResource.php b/app/Filament/Resources/Users/UserResource.php new file mode 100644 index 0000000..d99e7f3 --- /dev/null +++ b/app/Filament/Resources/Users/UserResource.php @@ -0,0 +1,60 @@ + ListUsers::route('/'), + 'create' => CreateUser::route('/create'), + 'edit' => EditUser::route('/{record}/edit'), + ]; + } +} diff --git a/routes/web.php b/routes/web.php index 0626734..188e914 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,4 +2,4 @@ use Illuminate\Support\Facades\Route; -Route::view('/', 'welcome'); +Route::redirect('/', '/panel');