diff --git a/.cursor/rules/laravel-boost.mdc b/.cursor/rules/laravel-boost.mdc index bb4d1e9..a4623a3 100644 --- a/.cursor/rules/laravel-boost.mdc +++ b/.cursor/rules/laravel-boost.mdc @@ -13,6 +13,7 @@ This application is a Laravel application and its main Laravel ecosystems packag - php - 8.3.12 - laravel/framework (LARAVEL) - v12 +- filament/filament (FILAMENT) - v4.0 - laravel/prompts (PROMPTS) - v0 - laravel/pint (PINT) - v1 - laravel/sail (SAIL) - v1 @@ -34,6 +35,15 @@ This application is a Laravel application and its main Laravel ecosystems packag ## 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. +- All the error messages should be in Turkmen language. +- All the success messages should be in Turkmen language. + +## Admin panel +- Filament is used as the admin panel. + ## Replies - Be concise in your explanations - focus on what's important rather than explaining obvious details. diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php new file mode 100644 index 0000000..d0dfc91 --- /dev/null +++ b/app/Filament/Pages/Dashboard.php @@ -0,0 +1,10 @@ +label('Täze topar'), ]; } } diff --git a/app/Filament/Resources/Groups/Schemas/GroupForm.php b/app/Filament/Resources/Groups/Schemas/GroupForm.php index 0e5eba7..aeedd5c 100644 --- a/app/Filament/Resources/Groups/Schemas/GroupForm.php +++ b/app/Filament/Resources/Groups/Schemas/GroupForm.php @@ -2,7 +2,9 @@ namespace App\Filament\Resources\Groups\Schemas; +use Carbon\Carbon; use Filament\Forms\Components\DatePicker; +use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; class GroupForm @@ -12,8 +14,13 @@ class GroupForm return $schema ->components([ DatePicker::make('start_date') - ->required(), + ->label('Başlanýan senesi') + ->required() + ->live() + ->afterStateUpdated(fn(Set $set, ?string $state) => $set('end_date', $state ? Carbon::parse($state)->addDays(14)->format('Y-m-d') : null)), + DatePicker::make('end_date') + ->label('Gutarýan senesi') ->required(), ]); } diff --git a/app/Filament/Resources/Groups/Tables/GroupsTable.php b/app/Filament/Resources/Groups/Tables/GroupsTable.php index 2056eb7..d5234ec 100644 --- a/app/Filament/Resources/Groups/Tables/GroupsTable.php +++ b/app/Filament/Resources/Groups/Tables/GroupsTable.php @@ -15,15 +15,20 @@ class GroupsTable return $table ->columns([ TextColumn::make('start_date') + ->label('Başlanýan senesi') ->date() ->sortable(), + TextColumn::make('end_date') + ->label('Gutarýan senesi') ->date() ->sortable(), + TextColumn::make('created_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('updated_at') ->dateTime() ->sortable() diff --git a/app/Filament/Resources/Pilgrims/PilgrimResource.php b/app/Filament/Resources/Pilgrims/PilgrimResource.php index af9c0cf..cbfbd7d 100644 --- a/app/Filament/Resources/Pilgrims/PilgrimResource.php +++ b/app/Filament/Resources/Pilgrims/PilgrimResource.php @@ -21,6 +21,12 @@ class PilgrimResource extends Resource 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 form(Schema $schema): Schema { return PilgrimForm::configure($schema); diff --git a/app/Models/Group.php b/app/Models/Group.php index f57063f..3038198 100644 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -6,6 +6,14 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Factories\HasFactory; +/** + * @property string $name + * @property date $start_date + * @property date $end_date + * @property Pilgrim[] $pilgrims + * @property Carbon $created_at + * @property Carbon $updated_at + */ class Group extends Model { use HasFactory; diff --git a/app/Providers/Filament/PanelPanelProvider.php b/app/Providers/Filament/PanelPanelProvider.php index 35c4af3..4f006d0 100644 --- a/app/Providers/Filament/PanelPanelProvider.php +++ b/app/Providers/Filament/PanelPanelProvider.php @@ -2,11 +2,11 @@ namespace App\Providers\Filament; +use App\Filament\Pages\Dashboard; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\AuthenticateSession; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; -use Filament\Pages\Dashboard; use Filament\Panel; use Filament\PanelProvider; use Filament\Support\Colors\Color; diff --git a/config/app.php b/config/app.php index 423eed5..660d71b 100644 --- a/config/app.php +++ b/config/app.php @@ -65,7 +65,7 @@ return [ | */ - 'timezone' => 'UTC', + 'timezone' => 'Asia/Ashgabat', /* |-------------------------------------------------------------------------- @@ -78,9 +78,9 @@ return [ | */ - 'locale' => env('APP_LOCALE', 'en'), + 'locale' => env('APP_LOCALE', 'tk'), - 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'tk'), 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d01a0ef..c6286d0 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,8 +2,6 @@ namespace Database\Seeders; -use App\Models\User; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder @@ -13,11 +11,8 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); - - User::factory()->create([ - 'name' => 'Test User', - 'email' => 'test@example.com', + $this->call([ + UserTableSeeder::class, ]); } } diff --git a/database/seeders/UserTableSeeder.php b/database/seeders/UserTableSeeder.php new file mode 100644 index 0000000..e2cf000 --- /dev/null +++ b/database/seeders/UserTableSeeder.php @@ -0,0 +1,22 @@ +create([ + 'name' => 'Nurmuhammet', + 'email' => 'nurmuhammet@mail.com', + 'password' => Hash::make('payload10'), + ]); + } +} diff --git a/lang/tk.json b/lang/tk.json new file mode 100644 index 0000000..6de394e --- /dev/null +++ b/lang/tk.json @@ -0,0 +1,13 @@ +{ + "Login": "Giriş", + "Register": "Hasaba al", + "Email Address": "E-poçta salgysy", + "Password": "Açar sözi", + "Confirm Password": "Açar sözüni tassyklaň", + "Remember Me": "Meni ýatda sakla", + "Forgot Your Password?": "Açar sözüňizi unutdyňyzmy?", + "Dashboard": "Dolandyryş paneli", + "You are logged in!": "Siz içerde!", + "Name": "Ady", + "Logout": "Çykyş" +} diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 85dcf1b..367abfe 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -28,21 +28,21 @@ href="{{ url('/dashboard') }}" class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal" > - Dashboard + {{ __('Dashboard') }} @else - Log in + {{ __('Login') }} @if (Route::has('register')) - Register + {{ __('Register') }} @endif @endauth