diff --git a/app/Filament/Resources/StickerMasterResource.php b/app/Filament/Resources/StickerMasterResource.php index e04b823ee..ece635f7c 100644 --- a/app/Filament/Resources/StickerMasterResource.php +++ b/app/Filament/Resources/StickerMasterResource.php @@ -13,6 +13,8 @@ use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; +use Filament\Notifications\Notification; + class StickerMasterResource extends Resource { @@ -34,7 +36,27 @@ class StickerMasterResource extends Resource ->nullable() ->disabled(fn (Get $get) => !empty($get('id'))) //disable in edit if user try to change ->afterStateUpdated(fn (callable $set) => - $set('item_id', null) & $set('item_description', null) + $set('item_id', null) & //when plant changed remove all the data which is in text input box + $set('item_description', null) & + $set('item_error', null) & + $set('part_validation1', null) & + $set('part_validation2', null) & + $set('part_validation3', null) & + $set('part_validation4', null) & + $set('part_validation5', null) & + $set('serial_number_motor', false) & + $set('serial_number_pump', false) & + $set('serial_number_pumpset', false) & + $set('pack_slip_motor', false) & + $set('pack_slip_pump', false) & + $set('pack_slip_pumpset', false) & + $set('name_plate_motor', false) & + $set('name_plate_pump', false) & + $set('name_plate_pumpset', false) & + $set('tube_sticker_motor', false) & + $set('tube_sticker_pump', false) & + $set('tube_sticker_pumpset', false) & + $set('warranty_card', false) ) ->required(), @@ -56,10 +78,31 @@ class StickerMasterResource extends Resource ->disabled(fn (Get $get) => !empty($get('id'))) ->live(debounce: 500) // Enable live updates ->afterStateUpdated(function ($state, callable $set, callable $get) { + $plantId = $get('plant_id'); $itemId = $get('item_id'); - // Ensure `item_id` is not cleared + //If plant_id is changed or empty, reset everything + if (blank($plantId)) { + $set('item_id', null); + $set('item_error', null); + $set('item_description', null); + return; + } + + if (blank($itemId)) { + $set('item_error', null); + $set('item_description', null); + return; + } + + $availableItems = \App\Models\Item::where('plant_id', $plantId)->exists(); + if (!$availableItems) { + $set('item_error', null); + return; + } + + // Ensure `item_id` is not cleared if (!$plantId || !$itemId) { $set('item_description', null); return; @@ -76,7 +119,17 @@ class StickerMasterResource extends Resource $set('item_description', null); } - }), + $duplicateSticker = StickerMaster::where('plant_id', $plantId) + ->where('item_id', $itemId) + ->exists(); + $set('item_error', $duplicateSticker ? 'Item Code already exists for the selected plant.' : null); + }) + ->extraAttributes(fn ($get) => [ + 'class' => $get('item_error') ? 'border-red-500' : '', + ]) + ->hint(fn ($get) => $get('item_error') ? $get('item_error') : null) + ->hintColor('danger'), + Forms\Components\TextInput::make('item_description') ->label('Description')