Added phone and gdpr-checkbox to reservation form

This commit is contained in:
Anna-Sara Sélea 2025-06-02 07:46:16 +02:00
parent d0415d6426
commit 9069c25b9d
7 changed files with 74 additions and 10 deletions

View file

@ -34,6 +34,7 @@ use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use App\Mail\ReservationCreatedUser; use App\Mail\ReservationCreatedUser;
use App\Mail\ReservationCreated; use App\Mail\ReservationCreated;
use Filament\Forms\Components\Checkbox;
class Reserve extends BasePage implements HasTable class Reserve extends BasePage implements HasTable
@ -134,14 +135,23 @@ class Reserve extends BasePage implements HasTable
->required(), ->required(),
TextInput::make('email') TextInput::make('email')
->label('Email') ->label('Email')
->email()
->required(), ->required(),
TextInput::make('phone')
->label('Nummer')
->tel()
->required(),
Checkbox::make('gdpr')
->label('Genom att checka i denna rutan godkänner du att vi lagrar din mailadress och telefonnummer.')
->accepted(),
]) ])
->action(function (array $data, Item $record): void { ->action(function (array $data, Item $record): void {
$reservation = Reserveditem::create([ $reservation = Reserveditem::create([
'item_id' => $record->id, 'item_id' => $record->id,
'reserved_date' => Carbon::now(), 'reserved_date' => Carbon::now(),
'username' => $data['username'], 'username' => $data['username'],
'email' => $data['email'] 'email' => $data['email'],
'phone' => $data['phone']
]); ]);
Item::where('id', $record->id)->update(['reserved' => true]); Item::where('id', $record->id)->update(['reserved' => true]);
Mail::to($data['email']) Mail::to($data['email'])
@ -166,9 +176,9 @@ class Reserve extends BasePage implements HasTable
ImageEntry::make('image') ImageEntry::make('image')
->label('Bild') ->label('Bild')
->width(300) ->width(300)
->height('auto') ->height('auto'),
->disk('local') //->disk('local')
->visibility('private'), //->visibility('private'),
TextEntry::make('desc') TextEntry::make('desc')
->label('Beskrivning'), ->label('Beskrivning'),
TextEntry::make('acquisition_date') TextEntry::make('acquisition_date')

View file

@ -37,6 +37,7 @@ use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Actions\Action; use Filament\Tables\Actions\Action;
use Filament\Forms\Components\Checkbox;
class ItemResource extends Resource class ItemResource extends Resource
@ -123,7 +124,7 @@ class ItemResource extends Resource
->default(null) ->default(null)
->hidden(fn ($get): string => $get('type') == 'item'), ->hidden(fn ($get): string => $get('type') == 'item'),
Toggle::make('can_be_loaned') Toggle::make('can_be_loaned')
->label('Can be loaned') ->label('Loanable')
->translateLabel() ->translateLabel()
->hidden(fn ($get): string => $get('type') == 'game'), ->hidden(fn ($get): string => $get('type') == 'game'),
]); ]);
@ -264,15 +265,25 @@ class ItemResource extends Resource
->required(), ->required(),
TextInput::make('email') TextInput::make('email')
->label('Email') ->label('Email')
->email()
->translateLabel() ->translateLabel()
->required(), ->required(),
TextInput::make('phone')
->label('Nummer')
->translateLabel()
->tel()
->required(),
Checkbox::make('gdpr')
->label('Genom att checka i denna rutan godkänner du att vi lagrar din mailadress och telefonnummer.')
->accepted(),
]) ])
->action(function (array $data, Item $record): void { ->action(function (array $data, Item $record): void {
$reservation = Reserveditem::create([ $reservation = Reserveditem::create([
'item_id' => $record->id, 'item_id' => $record->id,
'reserved_date' => Carbon::now(), 'reserved_date' => Carbon::now(),
'username' => $data['username'], 'username' => $data['username'],
'email' => $data['email'] 'email' => $data['email'],
'phone' => $data['phone']
]); ]);
Item::where('id', $record->id)->update(['reserved' => true]); Item::where('id', $record->id)->update(['reserved' => true]);
Mail::to($data['email']) Mail::to($data['email'])

View file

@ -57,10 +57,18 @@ class ReserveditemResource extends Resource
TextInput::make('username') TextInput::make('username')
->label('Name') ->label('Name')
->translateLabel() ->translateLabel()
->default(null), ->default(null)
->required(),
TextInput::make('email') TextInput::make('email')
->label('Email') ->label('Email')
->default(null), ->default(null)
->email()
->required(),
TextInput::make('phone')
->label('Phone')
->default(null)
->tel()
->required(),
Section::make('') Section::make('')
->schema([ ->schema([
Toggle::make('delivered') Toggle::make('delivered')
@ -93,6 +101,10 @@ class ReserveditemResource extends Resource
->label('Email') ->label('Email')
->sortable() ->sortable()
->icon('heroicon-m-envelope'), ->icon('heroicon-m-envelope'),
TextColumn::make('phone')
->label('Phone')
->sortable()
->icon('heroicon-m-phone'),
TextColumn::make('reserved_date') TextColumn::make('reserved_date')
->label('Reservation date') ->label('Reservation date')
->translateLabel() ->translateLabel()

View file

@ -22,6 +22,7 @@ class CreateReserveditem extends CreateRecord
$data['user_id'] = auth()->id(); $data['user_id'] = auth()->id();
$data['username'] = auth()->user()->name; $data['username'] = auth()->user()->name;
$data['email'] = auth()->user()->email; $data['email'] = auth()->user()->email;
$data['phone'] = auth()->user()->phone;
} }
$data['reserved_date'] = Carbon::now(); $data['reserved_date'] = Carbon::now();

View file

@ -22,7 +22,8 @@ class Reserveditem extends Model
'returned', 'returned',
'user_id', 'user_id',
'item_id', 'item_id',
'email' 'email',
'phone'
]; ];

View file

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('reserveditems', function (Blueprint $table) {
$table->string('phone')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('reserveditems', function (Blueprint $table) {
$table->dropColumn('phone');
});
}
};

View file

@ -35,5 +35,6 @@
"Email verified at": "Email verifierad den", "Email verified at": "Email verifierad den",
"Total number of games": "Totalt antal spel i lager", "Total number of games": "Totalt antal spel i lager",
"Total number of items": "Totalt antal saker i lager", "Total number of items": "Totalt antal saker i lager",
"Reserved games and items": "Reserverade spel och saker" "Reserved games and items": "Reserverade spel och saker",
"Number": "Nummer"
} }