File: //home/posscale/www/printmanager/app/Filament/Resources/ModelResource.php
<?php
namespace App\Filament\Resources;
use App\Enums\ColourEnum;
use App\Enums\PageSizeEnum;
use App\Enums\TonerorinkEnum;
use App\Enums\TypeEnum;
use App\Filament\Resources\ModelResource\Pages;
use App\Filament\Resources\ModelResource\RelationManagers;
use App\Models\Make;
use App\Models\Models;
use Filament\Forms;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class ModelResource extends Resource
{
use Forms\Concerns\InteractsWithForms;
protected static ?string $model = Models::class;
protected static ?string $navigationIcon = 'heroicon-o-cube';
protected static ?string $navigationGroup = "Printer Parts";
protected static ?int $navigationSort = 5;
public static function canViewAny(): bool
{
if (app()->request->getHost() === env('APP_CENTRAL_DOMAIN')) {
return true;
}
return false;
}
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->label('Model')->required(true),
Select::make('make_id')
->label('Make')
->options(Make::all()->pluck('name', 'id'))
->searchable(),
Select::make('type')
->label('Type')
->options(TypeEnum::options())
->native(false)
->required(true) ->preload(),
Select::make('colour')
->label('Colour')
->native(false)
->options(ColourEnum::options()) ->required(true),
Select::make('pagesize')
->label('Page Size')
->options(PageSizeEnum::options())
->native(false)
->required(true),
Select::make('tonerorink')
->label('Toner Or Ink')
->native(false)
->options(TonerorinkEnum::options())->required(true),
TextInput::make('numslots')->integer()->label('Num Slots')->required(true),
TextInput::make('tonerinkcolors')->label('Toner Ink Colors')->required(true),
TextInput::make('optionalaccessories')->label('Optional Accessories')->required(true),
TextInput::make('drum_unit')->label('Drum Unit')->required(true),
TextInput::make('fuser_unit')->label('Fuser Unit')->required(true),
TextInput::make('paper_tray')->label('Paper Tray')->required(true),
TextInput::make('paper_feed_rollers')->label('Paper Feed Rollers')->required(true),
TextInput::make('duplex_unit')->label('Duplex Unit')->required(true),
TextInput::make('transfer_belt')->label('Transfer Belt')->required(true),
TextInput::make('toner_discreptions')->label('Toner Discreptions')->required(true),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name')->sortable()->searchable(),
TextColumn::make('make.name'),
TextColumn::make('type'),
TextColumn::make('colour'),
TextColumn::make('pagesize'),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\DeleteBulkAction::make(),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListModels::route('/'),
'create' => Pages\CreateModel::route('/create'),
'edit' => Pages\EditModel::route('/{record}/edit'),
];
}
}