diff --git a/app/Filament/Pages/Reserve.php b/app/Filament/Pages/Reserve.php new file mode 100644 index 0000000..ba60d61 --- /dev/null +++ b/app/Filament/Pages/Reserve.php @@ -0,0 +1,124 @@ +query( Item::where('can_be_loaned', true)->where('type', "game")) + ->columns([ + Tables\Columns\TextColumn::make('desc') + ->label('Description') + ->sortable() + ->searchable(), + Tables\Columns\ImageColumn::make('image') + ->label('Image'), + Tables\Columns\TextColumn::make('players') + ->label('Players') + ->sortable(), + Tables\Columns\TextColumn::make('play_time') + ->label('Play Time') + ->sortable(), + Tables\Columns\TextColumn::make('age') + ->label('Age') + ->sortable(), + Tables\Columns\IconColumn::make('reserved') + ->label('Available') + ->falseIcon('heroicon-o-check-badge') + ->trueIcon('heroicon-o-x-mark') + ->falseColor('success') + ->trueColor('danger') + ->default(false), + + ]) + ->filters([ + SelectFilter::make('category_id') + ->label('Category') + ->multiple() + ->options(Category::all()->where('type', 'game')->pluck('name', 'id')), + Filter::make('reserved') + ->label('Available') + ->query(fn (Builder $query): Builder => $query->where('reserved', false)) + ->columnSpanFull() + ->toggle() + ],layout: FiltersLayout::AboveContent) + ->actions([ + Tables\Actions\Action::make('More info') + ->modalSubmitAction(false) + ->infolist([ + Section::make('Game') + ->schema([ + TextEntry::make('desc'), + TextEntry::make('acquisition_date'), + TextEntry::make('category.name'), + TextEntry::make('players'), + TextEntry::make('play_time'), + TextEntry::make('age'), + ]) + ->columns(), + ]), + Tables\Actions\Action::make('reserve') + ->label('Reserve') + ->button() + ->color('success') + ->form([ + Forms\Components\TextInput::make('username') + ->label('Name') + ->required(), + Forms\Components\TextInput::make('email') + ->label('Email') + ->required(), + ]) + ->action(function (array $data, Item $record): void { + Reserveditem::create([ + 'item_id' => $record->id, + 'reserved_date' => Carbon::now(), + 'username' => $data['username'], + 'email' => $data['email'] + ]); + Item::where('id', $record->id)->update(['reserved' => true]); + }) + ->hidden(fn ($record) => $record->reserved) + ]) + ->bulkActions([ + ]); + } +} diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000..703898e Binary files /dev/null and b/public/img/logo.png differ diff --git a/resources/css/app.css b/resources/css/app.css index b5c61c9..b295726 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -1,3 +1,8 @@ @tailwind base; @tailwind components; @tailwind utilities; + + +#reserve-form-container { + max-width: 1400px !important; +} \ No newline at end of file diff --git a/resources/views/filament/pages/reserve.blade.php b/resources/views/filament/pages/reserve.blade.php new file mode 100644 index 0000000..98370be --- /dev/null +++ b/resources/views/filament/pages/reserve.blade.php @@ -0,0 +1,15 @@ + + +
+ +
+

Game booking

+

Welcome! Here you can make a reservation for a game.

+
+
+ {{ $this->table }} +
+
diff --git a/routes/web.php b/routes/web.php index 2309185..2fea339 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use App\Http\Controllers\ProfileController; use Illuminate\Foundation\Application; use Illuminate\Support\Facades\Route; use Inertia\Inertia; +use App\Filament\Pages\Reserve; //Route::get('/', function () { // return Inertia::render('Welcome', [ @@ -24,4 +25,6 @@ use Inertia\Inertia; // Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); //}); +Route::get('reserve', Reserve::class); + require __DIR__.'/auth.php';