diff --git a/app/Filament/Resources/CharacteristicValueResource.php b/app/Filament/Resources/CharacteristicValueResource.php index 3ff0538..18bc9cd 100644 --- a/app/Filament/Resources/CharacteristicValueResource.php +++ b/app/Filament/Resources/CharacteristicValueResource.php @@ -25,6 +25,7 @@ use Filament\Tables\Filters\Filter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; +use Illuminate\Validation\Rule; use Str; class CharacteristicValueResource extends Resource @@ -41,6 +42,7 @@ class CharacteristicValueResource extends Resource ->schema([ Forms\Components\Select::make('plant_id') ->label('Plant') + ->searchable() ->relationship('plant', 'name') ->options(function (callable $get) { $userHas = Filament::auth()->user()->plant_id; @@ -50,9 +52,14 @@ class CharacteristicValueResource extends Resource ->reactive() ->afterStateUpdated(function ($state, $set, callable $get) { $plantId = $get('plant_id'); - $set('item_id', null); $set('line_id', null); + $set('item_id', null); $set('machine_id', null); + $set('process_order', null); + $set('coil_number', null); + $set('observed_value', null); + $set('status', 'NotOk'); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId) { $set('poPlantError', 'Please select a plant first.'); } @@ -65,6 +72,7 @@ class CharacteristicValueResource extends Resource ->required(), Forms\Components\Select::make('line_id') ->label('Line') + ->searchable() ->options(function (callable $get) { if (! $get('plant_id')) { return []; @@ -78,7 +86,13 @@ class CharacteristicValueResource extends Resource $plantId = $get('plant_id'); $set('item_id', null); $set('machine_id', null); + $set('process_order', null); + $set('coil_number', null); + $set('observed_value', null); + $set('status', 'NotOk'); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId) { + $set('line_id', null); $set('poPlantError', 'Please select a plant first.'); } }) @@ -86,6 +100,7 @@ class CharacteristicValueResource extends Resource ->required(), Forms\Components\Select::make('item_id') ->label('Item') + ->searchable() ->options(function (callable $get) { if (! $get('plant_id') || ! $get('line_id')) { return []; @@ -98,15 +113,21 @@ class CharacteristicValueResource extends Resource ->afterStateUpdated(function ($state, $set, callable $get) { $plantId = $get('plant_id'); $set('machine_id', null); + $set('process_order', null); + $set('coil_number', null); + $set('observed_value', null); + $set('status', 'NotOk'); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId) { + $set('item_id', null); $set('poPlantError', 'Please select a plant first.'); } }) ->reactive() - ->required() - ->searchable(), + ->required(), Forms\Components\Select::make('machine_id') ->label('Machine') + ->searchable() ->options(function (callable $get) { if (! $get('plant_id') || ! $get('line_id') || ! $get('item_id')) { return []; @@ -121,8 +142,11 @@ class CharacteristicValueResource extends Resource $plantId = $get('plant_id'); $set('process_order', null); $set('coil_number', null); - $set('status', null); + $set('observed_value', null); + $set('status', 'NotOk'); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId) { + $set('machine_id', null); $set('poPlantError', 'Please select a plant first.'); } }) @@ -134,8 +158,11 @@ class CharacteristicValueResource extends Resource ->afterStateUpdated(function ($state, $set, callable $get) { $plantId = $get('plant_id'); $set('coil_number', null); - $set('status', null); + $set('observed_value', null); + $set('status', 'NotOk'); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId) { + $set('process_order', null); $set('poPlantError', 'Please select a plant first.'); } }) @@ -145,7 +172,7 @@ class CharacteristicValueResource extends Resource // ->reactive() // ->afterStateUpdated(function ($state, $set, callable $get) { // $plantId = $get('plant_id'); - // $set('status', null); + // $set('status', 'NotOk'); // if (! $plantId) { // $set('poPlantError', 'Please select a plant first.'); // } @@ -153,37 +180,48 @@ class CharacteristicValueResource extends Resource // ->required(), ->label('Coil Number') ->default('0') + ->numeric() ->reactive() ->afterStateUpdated(function ($state, $set, callable $get, $livewire) { $plantId = $get('plant_id'); $processOrder = $get('process_order'); - $coilNo = $get('coil_number'); + // $coilNo = $get('coil_number'); + $set('poPlantError', null); + $set('observed_value', null); + $set('status', 'NotOk'); + $set('coilNumberError', null); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId) { + $set('coil_number', null); $set('poPlantError', 'Please select a plant first.'); } elseif (! $processOrder) { $set('coil_number', null); - $set('poPlantError', null); - } elseif ($coilNo || $coilNo == '0') { - $existing = CharacteristicValue::where('plant_id', $plantId) - ->where('process_order', $processOrder) - ->where('coil_number', $coilNo) - ->first(); - - if ($existing) { - $set('poPlantError', null); - $set('coil_number', null); - $set('coilNumberError', "Duplicate Coil : '{$coilNo}' found!"); - } else { - $set('poPlantError', null); - $set('coilNumberError', null); - } } + // elseif ($coilNo || $coilNo == '0') { + // $existing = CharacteristicValue::where('plant_id', $plantId) + // ->where('process_order', $processOrder) + // ->where('coil_number', $coilNo) + // ->first(); + + // if ($existing && ! $get('id')) { + // // $set('coil_number', null); + // $set('coilNumberError', "Duplicate Coil : '{$coilNo}' found!"); + // } else { + // $set('coilNumberError', null); + // } + // } }) ->extraAttributes(fn ($get) => [ 'class' => $get('coilNumberError') ? 'border-red-500' : '', ]) ->hint(fn ($get) => $get('coilNumberError') ? $get('coilNumberError') : null) ->hintColor('danger') + ->rule(function (callable $get) { + return Rule::unique('characteristic_values', 'coil_number') + ->where('plant_id', $get('plant_id')) + ->where('process_order', $get('process_order')) + ->ignore($get('id')); // Ignore current record during updates + }) ->required(), Forms\Components\TextInput::make('observed_value') ->label('Observed Value') @@ -193,8 +231,10 @@ class CharacteristicValueResource extends Resource $itemId = $get('item_id'); $lineId = $get('line_id'); $machineId = $get('machine_id'); + $set('updated_by', Filament::auth()->user()?->name); if (! $plantId || ! $itemId || ! $lineId || ! $machineId) { + $set('observed_value', null); $set('status', 'NotOk'); return; @@ -260,6 +300,9 @@ class CharacteristicValueResource extends Resource Forms\Components\Hidden::make('updated_by') ->label('Updated By') ->default(Filament::auth()->user()?->name), + Forms\Components\TextInput::make('id') + ->hidden() + ->readOnly(), ]); }