Updated IReserved Item: Model, Resource, Migration

This commit is contained in:
Anna-Sara Sélea 2025-02-26 20:06:31 +01:00
parent eaf954d7ff
commit 2aff888fd0
7 changed files with 45 additions and 49 deletions

View file

@ -9,11 +9,14 @@ use App\Models\Item;
use Filament\Forms; use Filament\Forms;
use Filament\Forms\Form; use Filament\Forms\Form;
use Filament\Resources\Resource; use Filament\Resources\Resource;
use Filament\Resources\Get;
use Filament\Tables; use Filament\Tables;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope; use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Forms\Components\Section; use Filament\Forms\Components\Section;
use Filament\Forms\Components\Radio;
use Filament\Support\Enums\IconPosition;
class ReserveditemResource extends Resource class ReserveditemResource extends Resource
@ -22,7 +25,7 @@ class ReserveditemResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-archive-box-x-mark'; protected static ?string $navigationIcon = 'heroicon-o-archive-box-x-mark';
protected static ?string $modelLabel = 'Reserved items'; protected static ?string $modelLabel = 'Reservations';
protected static ?string $title = 'Reserve an item'; protected static ?string $title = 'Reserve an item';
@ -30,21 +33,12 @@ class ReserveditemResource extends Resource
{ {
return $form return $form
->schema([ ->schema([
Forms\Components\Select::make('item_id') Forms\Components\TextInput::make('username')
->label('Choose item to reserve') ->label('Name')
->relationship( ->default(null),
name: 'item', Forms\Components\TextInput::make('email')
titleAttribute: 'desc', ->label('Email')
modifyQueryUsing: fn ($query) => $query->where('can_be_loaned', true)->where('reserved', false) ->default(null),
)
->required()
->disabledOn('edit')
->hiddenOn('edit'),
//Forms\Components\TextInput::make('user_id')
// ->label('Användare')
// ->default(auth()->id())
// ->disabledOn(['edit', 'create'])
// ->hiddenOn('edit'),
Section::make('') Section::make('')
->schema([ ->schema([
Forms\Components\Toggle::make('delivered'), Forms\Components\Toggle::make('delivered'),
@ -65,6 +59,9 @@ class ReserveditemResource extends Resource
Tables\Columns\TextColumn::make('username') Tables\Columns\TextColumn::make('username')
->label('User') ->label('User')
->sortable(), ->sortable(),
Tables\Columns\TextColumn::make('email')
->label('Email')
->sortable(),
Tables\Columns\TextColumn::make('reserved_date') Tables\Columns\TextColumn::make('reserved_date')
->label('Reservation date') ->label('Reservation date')
->sortable(), ->sortable(),
@ -82,12 +79,15 @@ class ReserveditemResource extends Resource
// //
]) ])
->actions([ ->actions([
Tables\Actions\EditAction::make(), Tables\Actions\EditAction::make()
->button()
->icon('heroicon-m-pencil-square')
->iconPosition(IconPosition::After),
]) ])
->bulkActions([ ->bulkActions([
Tables\Actions\BulkActionGroup::make([ // Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(), // Tables\Actions\DeleteBulkAction::make(),
]), // ]),
]); ]);
} }
@ -107,12 +107,13 @@ class ReserveditemResource extends Resource
]; ];
} }
public static function getWidgets(): array
{
return [ public static function canCreate(): bool
ItemResource\Widgets\ItemsOverview::class, {
]; return false;
} }
public static function canViewAny(): bool public static function canViewAny(): bool
{ {

View file

@ -18,9 +18,12 @@ class CreateReserveditem extends CreateRecord
protected function handleRecordCreation(array $data): Model protected function handleRecordCreation(array $data): Model
{ {
$data['user_id'] = auth()->id(); if(!$data['username']) {
$data['username'] = auth()->user()->name; $data['user_id'] = auth()->id();
$data['reserved_date'] = Carbon::now(); $data['username'] = auth()->user()->name;
$data['email'] = auth()->user()->email;
}
$data['reserved_date'] = Carbon::now();
if ($data['delivered']) if ($data['delivered'])
{ {
@ -49,10 +52,5 @@ class CreateReserveditem extends CreateRecord
return $this->getResource()::getUrl('index'); return $this->getResource()::getUrl('index');
} }
protected function getFooterWidgets(): array
{
return [
ItemResource\Widgets\ItemsOverview::class,
];
}
} }

View file

@ -16,7 +16,7 @@ class EditReserveditem extends EditRecord
protected function getHeaderActions(): array protected function getHeaderActions(): array
{ {
return [ return [
Actions\DeleteAction::make(), //Actions\DeleteAction::make(),
]; ];
} }
@ -51,4 +51,9 @@ class EditReserveditem extends EditRecord
{ {
return $this->getResource()::getUrl('index'); return $this->getResource()::getUrl('index');
} }
public function getHeading(): string
{
return 'Edit: ' . Item::where('id', $this->getRecord()->item_id)->pluck('desc')->first();
}
} }

View file

@ -94,12 +94,7 @@ class ReserveditemResourceUser extends Resource
]; ];
} }
public static function getWidgets(): array
{
return [
ItemResource\Widgets\ItemsOverview::class,
];
}
public static function canViewAny(): bool public static function canViewAny(): bool
{ {

View file

@ -42,10 +42,5 @@ class CreateReserveditemUser extends CreateRecord
Item::where('id', $record->item_id)->update(['reserved' => true]); Item::where('id', $record->item_id)->update(['reserved' => true]);
} }
protected function getFooterWidgets(): array
{
return [
ItemResource\Widgets\ItemsOverview::class,
];
}
} }

View file

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

View file

@ -18,6 +18,7 @@ return new class extends Migration
$table->foreignId('item_id')->constrained('items')->cascadeOnDelete(); $table->foreignId('item_id')->constrained('items')->cascadeOnDelete();
$table->integer('user_id')->nullable(); $table->integer('user_id')->nullable();
$table->string('username')->nullable(); $table->string('username')->nullable();
$table->string('email')->nullable();
$table->timestamp('reserved_date')->nullable(); $table->timestamp('reserved_date')->nullable();
$table->timestamp('delivered_date')->nullable(); $table->timestamp('delivered_date')->nullable();
$table->timestamp('return_date')->nullable(); $table->timestamp('return_date')->nullable();