diff --git a/app/Filament/User/Resources/ProductResource.php b/app/Filament/User/Resources/ProductResource.php index 499ca8a..785f9bd 100644 --- a/app/Filament/User/Resources/ProductResource.php +++ b/app/Filament/User/Resources/ProductResource.php @@ -52,7 +52,21 @@ class ProductResource extends Resource { ->native(false) ->searchable() ->relationship('recipe', 'name') - ->required(), + ->required() + ->createOptionForm([ + Forms\Components\TextInput::make('name') + ->label('Name') + ->required(), + Forms\Components\Textarea::make('description') + ->label('Beschreibung'), + ]) + ->editOptionForm([ + Forms\Components\TextInput::make('name') + ->label('Name') + ->required(), + Forms\Components\Textarea::make('description') + ->label('Beschreibung'), + ]), Repeater::make('sizes') ->schema([ Select::make('packing_id') @@ -140,6 +154,12 @@ class ProductResource extends Resource { ]); } + public static function getRelations(): array { + return [ + RelationManagers\BatchesRelationManager::class, + ]; + } + public static function getPages(): array { return [ 'index' => Pages\ListProducts::route('/'), diff --git a/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php b/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php new file mode 100644 index 0000000..bf3726e --- /dev/null +++ b/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php @@ -0,0 +1,109 @@ +schema([ + Forms\Components\TextInput::make('lot_number') + ->label('LOT-Nummer') + ->required() + ->unique(ignoreRecord: true) + ->maxLength(255), + + Forms\Components\Select::make('recipe_id') + ->label('Rezeptur') + ->relationship('recipe', 'name') + ->searchable() + ->preload() + ->required(), + + Forms\Components\DatePicker::make('produced_at') + ->label('Produktionsdatum'), + + Forms\Components\DatePicker::make('expires_at') + ->label('Mindesthaltbarkeitsdatum'), + + Forms\Components\Repeater::make('origins') + ->label('Herkunft der Gewürze') + ->relationship() + ->schema([ + Forms\Components\Select::make('spice_id') + ->label('Gewürz') + ->relationship('spice', 'name') + ->searchable() + ->preload() + ->required(), + + Forms\Components\Select::make('supplier_id') + ->label('Lieferant') + ->relationship('supplier', 'name') + ->searchable() + ->preload() + ->nullable(), + + Forms\Components\TextInput::make('origin_country') + ->label('Herkunftsland') + ->maxLength(100), + + Forms\Components\TextInput::make('farmer') + ->label('Landwirt / Betrieb') + ->maxLength(255), + + Forms\Components\Textarea::make('notes') + ->label('Infos zum Gewürz') + ->rows(2) + ->columnSpanFull(), + ]) + ->columns(2) + ->addActionLabel('Gewürz hinzufügen') + ->columnSpanFull(), + ]); + } + + public function table(Table $table): Table + { + return $table + ->recordTitleAttribute('lot_number') + ->columns([ + Tables\Columns\TextColumn::make('lot_number') + ->label('LOT-Nummer') + ->searchable() + ->sortable(), + + Tables\Columns\TextColumn::make('recipe.name') + ->label('Rezeptur'), + + Tables\Columns\TextColumn::make('produced_at') + ->label('Produktion') + ->date('d.m.Y') + ->sortable(), + + Tables\Columns\TextColumn::make('expires_at') + ->label('MHD') + ->date('d.m.Y') + ->sortable(), + ]) + ->defaultSort('produced_at', 'desc') + ->actions([ + Tables\Actions\EditAction::make(), + Tables\Actions\DeleteAction::make(), + ]) + ->headerActions([ + Tables\Actions\CreateAction::make(), + ]); + } +}