diff --git a/.cursor/rules/laravel-boost.mdc b/.cursor/rules/laravel-boost.mdc index a4623a3..9464156 100644 --- a/.cursor/rules/laravel-boost.mdc +++ b/.cursor/rules/laravel-boost.mdc @@ -32,9 +32,6 @@ This application is a Laravel application and its main Laravel ecosystems packag - Stick to existing directory structure - don't create new base folders without approval. - Do not change the application's dependencies without approval. -## Frontend Bundling -- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `npm run build`, `npm run dev`, or `composer run dev`. Ask them. - ## Localization - App should be in Turkmen language. - All the validation messages should be in Turkmen language. @@ -115,6 +112,7 @@ protected function isAccessible(User $user, ?string $path = null): bool ## PHPDoc Blocks - Add useful array shape type definitions for arrays when appropriate. +- Add types and properties for models, controllers, functions, etc. ## Enums - Typically, keys in an Enum should be TitleCase. For example: `FavoritePerson`, `BestLake`, `Monthly`. diff --git a/app/Filament/Resources/Groups/Tables/GroupsTable.php b/app/Filament/Resources/Groups/Tables/GroupsTable.php index 8c1a879..4d3acef 100644 --- a/app/Filament/Resources/Groups/Tables/GroupsTable.php +++ b/app/Filament/Resources/Groups/Tables/GroupsTable.php @@ -14,11 +14,6 @@ class GroupsTable { return $table ->columns([ - TextColumn::make('leaderTeacher.name') - ->label('Topar başy') - ->searchable() - ->sortable(), - TextColumn::make('start_date') ->label('Başlanýan senesi') ->date() @@ -29,6 +24,11 @@ class GroupsTable ->date() ->sortable(), + TextColumn::make('leaderTeacher.name') + ->label('Topar başy') + ->searchable() + ->sortable(), + TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Filament/Resources/Pilgrims/PilgrimResource.php b/app/Filament/Resources/Pilgrims/PilgrimResource.php index cbfbd7d..55524df 100644 --- a/app/Filament/Resources/Pilgrims/PilgrimResource.php +++ b/app/Filament/Resources/Pilgrims/PilgrimResource.php @@ -13,20 +13,24 @@ use BackedEnum; use Filament\Resources\Resource; use Filament\Schemas\Schema; use Filament\Support\Icons\Heroicon; +use Illuminate\Contracts\Support\Htmlable; use Filament\Tables\Table; class PilgrimResource extends Resource { protected static ?string $model = Pilgrim::class; - protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack; - protected static ?string $navigationLabel = 'Zyýaratçylar'; protected static ?string $pluralLabel = 'Zyýaratçylar'; protected static ?int $navigationSort = 2; + public static function getNavigationIcon(): string | BackedEnum | Htmlable | null + { + return 'icon-pilgrim-man'; + } + public static function form(Schema $schema): Schema { return PilgrimForm::configure($schema); diff --git a/app/Models/Group.php b/app/Models/Group.php index 2898832..659534c 100644 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -19,6 +20,21 @@ class Group extends Model { use HasFactory; + /** + * @var array + */ + protected $casts = [ + 'start_date' => 'date', + 'end_date' => 'date', + ]; + + public function name(): Attribute + { + return Attribute::make( + get: fn ($value) => $this->start_date->format('d M') . ' - ' . $this->end_date->format('d M'), + ); + } + public function pilgrims(): HasMany { return $this->hasMany(Pilgrim::class); diff --git a/app/Models/Teacher.php b/app/Models/Teacher.php index 77089ca..ca641c7 100644 --- a/app/Models/Teacher.php +++ b/app/Models/Teacher.php @@ -7,6 +7,14 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; +/** + * @property int $id + * @property string $name + * @property string $photo + * @property string $bio + * @property Carbon $created_at + * @property Carbon $updated_at + */ class Teacher extends Model { /** @use HasFactory<\Database\Factories\TeacherFactory> */ diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a8b7758..7335bd2 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -11,9 +11,9 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); $this->call([ - TeacherSeeder::class, + UserTableSeeder::class, + TeacherTableSeeder::class, ]); } } diff --git a/database/seeders/TeacherSeeder.php b/database/seeders/TeacherSeeder.php deleted file mode 100644 index 4dde49a..0000000 --- a/database/seeders/TeacherSeeder.php +++ /dev/null @@ -1,18 +0,0 @@ -create(); - } -} diff --git a/database/seeders/TeacherTableSeeder.php b/database/seeders/TeacherTableSeeder.php new file mode 100644 index 0000000..51b7844 --- /dev/null +++ b/database/seeders/TeacherTableSeeder.php @@ -0,0 +1,36 @@ + 'Nurmuhammet', + 'photo' => 'teachers/nurmuhammet.png', + 'bio' => 'Nurmuhammet esasy topar ýolbaşçy.', + ], + [ + 'name' => 'Juma', + 'photo' => 'teachers/jumash.png', + 'bio' => 'Juma, Abdyrahman tagsyryň okuwçysy, topar ýolbaşçy.', + ], + [ + 'name' => 'Resul', + 'photo' => 'teachers/resul.png', + 'bio' => 'Resul topar ýolbaşçy.', + ], + ]); + + $teachers->each(fn ($teacher) => Teacher::create($teacher)); + } +} diff --git a/resources/svg/pilgrim-man.svg b/resources/svg/pilgrim-man.svg new file mode 100644 index 0000000..70a9511 --- /dev/null +++ b/resources/svg/pilgrim-man.svg @@ -0,0 +1,124 @@ + + + + + \ No newline at end of file diff --git a/storage/app/private/.gitignore b/storage/app/private/.gitignore index d6b7ef3..4549620 100644 --- a/storage/app/private/.gitignore +++ b/storage/app/private/.gitignore @@ -1,2 +1,4 @@ * +!teachers/ +!teachers/* !.gitignore diff --git a/storage/app/private/teachers/jumash.png b/storage/app/private/teachers/jumash.png new file mode 100644 index 0000000..ed17c60 Binary files /dev/null and b/storage/app/private/teachers/jumash.png differ diff --git a/storage/app/private/teachers/nurmuhammet.png b/storage/app/private/teachers/nurmuhammet.png new file mode 100644 index 0000000..8f7f1d4 Binary files /dev/null and b/storage/app/private/teachers/nurmuhammet.png differ diff --git a/storage/app/private/teachers/resul.png b/storage/app/private/teachers/resul.png new file mode 100644 index 0000000..1622683 Binary files /dev/null and b/storage/app/private/teachers/resul.png differ