Compare commits

..

No commits in common. "d348f893d6f7a5b1781bdda0d3d870456bf69406" and "8a9c2f1b0e5e4d709d32e6adefeb52626d258a92" have entirely different histories.

8 changed files with 100 additions and 142 deletions

View file

@ -36,12 +36,6 @@ 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\Support\Colors\Color; use Filament\Support\Colors\Color;
use Filament\Tables\Columns\Layout\Split;
use Filament\Tables\Columns\Layout\Stack;
use Filament\Support\Enums\FontWeight;
use Filament\Tables\Columns\Layout\Panel;
use Filament\Tables\Columns\Layout\Grid;
use Filament\Notifications\Notification;
class Reserve extends BasePage implements HasTable class Reserve extends BasePage implements HasTable
{ {
@ -57,55 +51,32 @@ class Reserve extends BasePage implements HasTable
return $table return $table
->query( Item::where('can_be_loaned', true)->where('type', "game")) ->query( Item::where('can_be_loaned', true)->where('type', "game"))
->columns([ ->columns([
Grid::make()
->columns(1)
->schema([
Stack::make([
TextColumn::make('reserved')
->weight(FontWeight::Bold)
->formatStateUsing(fn (string $state): string => $state ? 'Utlånad' : 'Tillgänglig')
->color(fn($record) => $record->reserved ? 'danger' : 'success' )
->badge(),
ImageColumn::make('image')
->label('Bild')
->disk('local')
->size('100%')
->extraImgAttributes([
'class' => 'rounded-md'
])
->visibility('private'),
TextColumn::make('desc') TextColumn::make('desc')
->label('Beskrivning') ->label('Beskrivning')
->sortable() ->sortable()
->searchable() ->searchable(),
->weight(FontWeight::Bold) ImageColumn::make('image')
->size(TextColumn\TextColumnSize::Large), ->label('Bild')
Panel::make([ ->disk('local')
Stack::make([ ->visibility('private'),
TextColumn::make('players') TextColumn::make('players')
->label('Antal spelare') ->label('Antal spelare')
->sortable() ->sortable(),
->icon('heroicon-m-users'),
TextColumn::make('play_time') TextColumn::make('play_time')
->label('Speltid') ->label('Speltid')
->sortable() ->sortable(),
->icon('heroicon-m-clock'),
TextColumn::make('age') TextColumn::make('age')
->label('Ålder') ->label('Ålder')
->sortable() ->sortable(),
->icon('heroicon-m-arrows-right-left'), IconColumn::make('reserved')
])->extraAttributes(['class' => 'space-y-3']) ->label('Tillgängligt')
]) ->falseIcon('heroicon-o-check-badge')
])->extraAttributes(['class' => 'space-y-3']) ->trueIcon('heroicon-o-x-mark')
->falseColor('success')
->trueColor('danger')
->default(false),
]) ])
])
->defaultSort('desc', 'asc')
->contentGrid([
'sm' => 2,
'md' => 3,
'xl' => 4,
])
->filters([ ->filters([
SelectFilter::make('category_id') SelectFilter::make('category_id')
->multiple() ->multiple()
@ -119,38 +90,8 @@ class Reserve extends BasePage implements HasTable
->toggle() ->toggle()
],layout: FiltersLayout::AboveContent) ],layout: FiltersLayout::AboveContent)
->actions([ ->actions([
Action::make('reserve')
->label('Reservera')
->button()
->color('primary')
->form([
TextInput::make('username')
->label('Namn')
->required(),
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]);
Notification::make()
->title('Spelet är reserverat!')
->body('Ett bekräftelsemail har skickats till emailadressen du uppgav. Läs det för mer info om utlämning av spelet.')
->success()
->seconds(10)
->send();
})
->hidden(fn ($record) => $record->reserved),
Action::make('Mer info') Action::make('Mer info')
->modalSubmitAction(false) ->modalSubmitAction(false)
->button()
->color('primary')
->infolist([ ->infolist([
Section::make('Spel') Section::make('Spel')
->schema([ ->schema([
@ -175,10 +116,30 @@ class Reserve extends BasePage implements HasTable
]) ])
->columns(), ->columns(),
]), ]),
Action::make('reserve')
->label('Reservera')
->button()
->color('primary')
->form([
TextInput::make('username')
->label('Namn')
->required(),
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([ ->bulkActions([
]); ]);
} }
} }

View file

@ -23,10 +23,6 @@ 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\Tables\Columns\Layout\Split;
use Filament\Tables\Columns\Layout\Stack;
use Filament\Support\Enums\FontWeight;
use Filament\Tables\Columns\Layout\Panel;
class ReserveditemResource extends Resource class ReserveditemResource extends Resource
@ -77,46 +73,33 @@ class ReserveditemResource extends Resource
return $table return $table
//->query(Reserveditem::withTrashed()) //->query(Reserveditem::withTrashed())
->columns([ ->columns([
Stack::make([
TextColumn::make('item.desc') TextColumn::make('item.desc')
->label('Name') ->label('Name')
->translateLabel() ->translateLabel()
->sortable() ->sortable(),
->weight(FontWeight::Bold)
->size(TextColumn\TextColumnSize::Large),
TextColumn::make('username') TextColumn::make('username')
->label('User') ->label('User')
->translateLabel() ->translateLabel()
->sortable() ->sortable(),
->icon('heroicon-m-user'),
TextColumn::make('email') TextColumn::make('email')
->label('Email') ->label('Email')
->sortable() ->sortable(),
->icon('heroicon-m-envelope'),
TextColumn::make('reserved_date') TextColumn::make('reserved_date')
->label('Reservation date') ->label('Reservation date')
->translateLabel() ->translateLabel()
->sortable() ->sortable(),
->dateTime('Y-m-d')
->icon('heroicon-m-hand-raised'),
TextColumn::make('delivered_date') TextColumn::make('delivered_date')
->label('Delivery date') ->label('Delivery date')
->translateLabel() ->translateLabel()
->sortable() ->sortable(),
->dateTime('Y-m-d')
->icon('heroicon-m-arrow-up-tray')
,
TextColumn::make('return_date') TextColumn::make('return_date')
->label('Return date') ->label('Return date')
->translateLabel() ->translateLabel()
->sortable() ->sortable(),
->dateTime('Y-m-d') TextColumn::make('returned_date')
->icon('heroicon-m-arrow-down-tray') ->label('Returned')
])->extraAttributes(['class' => 'space-y-2']) ->translateLabel()
]) ->sortable(),
->contentGrid([
'md' => 2,
'xl' => 3,
]) ])
->filters([ ->filters([
// //

View file

@ -105,9 +105,8 @@ class ReserveditemResourceUser extends Resource
public static function canViewAny(): bool public static function canViewAny(): bool
{ {
return false; return auth()->user()->is_admin==false;
//return auth()->user()->is_admin==false;
} }
} }

View file

@ -56,6 +56,8 @@ class UserResource extends Resource
->email() ->email()
->required() ->required()
->maxLength(255), ->maxLength(255),
DateTimePicker::make('email_verified_at')
->translateLabel(),
TextInput::make('password') TextInput::make('password')
->translateLabel() ->translateLabel()
->password() ->password()

View file

@ -24,7 +24,6 @@ class User extends Authenticatable
'name', 'name',
'email', 'email',
'password', 'password',
'is_admin'
]; ];
/** /**

View file

@ -39,7 +39,6 @@ class AdminPanelProvider extends PanelProvider
->widgets([ ->widgets([
Widgets\AccountWidget::class, Widgets\AccountWidget::class,
]) ])
->passwordReset()
->middleware([ ->middleware([
EncryptCookies::class, EncryptCookies::class,
AddQueuedCookiesToResponse::class, AddQueuedCookiesToResponse::class,

View file

@ -26,7 +26,7 @@
"Reservation": "Reservation", "Reservation": "Reservation",
"Reservation date": "Reservationsdatum", "Reservation date": "Reservationsdatum",
"Delivery date": "Utlämningsdatum", "Delivery date": "Utlämningsdatum",
"Return date": terlämningsdatum", "Return date": rterlämningsdatum",
"Returned": "Återlämnad", "Returned": "Återlämnad",
"Delivered": "Utlämnad", "Delivered": "Utlämnad",
"Users": "Användare", "Users": "Användare",

View file

@ -6,10 +6,25 @@ use Illuminate\Support\Facades\Route;
use Inertia\Inertia; use Inertia\Inertia;
use App\Filament\Pages\Reserve; use App\Filament\Pages\Reserve;
//Route::get('/', function () {
// return Inertia::render('Welcome', [
// 'canLogin' => Route::has('login'),
// 'canRegister' => Route::has('register'),
// 'laravelVersion' => Application::VERSION,
// 'phpVersion' => PHP_VERSION,
// ]);
//});
Route::group(['domain' => 'boka.vbytes.se'], function(){ //Route::get('/dashboard', function () {
Route::get('/', Reserve::class); // return Inertia::render('Dashboard');
}); //})->middleware(['auth', 'verified'])->name('dashboard');
//Route::middleware('auth')->group(function () {
// Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
// Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
// Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
//});
Route::get('reserve', Reserve::class);
require __DIR__.'/auth.php'; require __DIR__.'/auth.php';