mirror of
https://github.com/anna-sara/filament_inventory
synced 2025-10-27 10:37:13 +01:00
Compare commits
No commits in common. "d348f893d6f7a5b1781bdda0d3d870456bf69406" and "8a9c2f1b0e5e4d709d32e6adefeb52626d258a92" have entirely different histories.
d348f893d6
...
8a9c2f1b0e
8 changed files with 100 additions and 142 deletions
|
|
@ -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([
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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([
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ class User extends Authenticatable
|
||||||
'name',
|
'name',
|
||||||
'email',
|
'email',
|
||||||
'password',
|
'password',
|
||||||
'is_admin'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
2
lang/vendor/filament-panels/sv.json
vendored
2
lang/vendor/filament-panels/sv.json
vendored
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue