From 75d87cda29848c9a6741737a042bbded094807bc Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Wed, 14 Jan 2026 10:56:14 +0530 Subject: [PATCH] Added view rights against plant on view report and Updated alignments on resource --- .../Resources/QualityValidationResource.php | 1754 ++++++++--------- 1 file changed, 853 insertions(+), 901 deletions(-) diff --git a/app/Filament/Resources/QualityValidationResource.php b/app/Filament/Resources/QualityValidationResource.php index e0bc91a..8a418a8 100644 --- a/app/Filament/Resources/QualityValidationResource.php +++ b/app/Filament/Resources/QualityValidationResource.php @@ -5,7 +5,6 @@ namespace App\Filament\Resources; use App\Filament\Exports\QualityValidationExporter; use App\Filament\Imports\QualityValidationImporter; use App\Filament\Resources\QualityValidationResource\Pages; -use App\Filament\Resources\QualityValidationResource\RelationManagers; // use App\Jobs\SendInvalidQualityMailJob; use App\Mail\InvalidQualityMail; use App\Models\AlertMailRule; @@ -16,30 +15,23 @@ use App\Models\QualityValidation; use App\Models\StickerMaster; // use App\Models\User; // use App\Notifications\StatusUpdated; -use Carbon\Carbon; -use Closure; use Filament\Facades\Filament; use Filament\Forms; -use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\DateTimePicker; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Actions\ExportAction; use Filament\Tables\Actions\ImportAction; -use Filament\Tables\Filters\SelectFilter; +use Filament\Tables\Filters\Filter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\Relationship; use Illuminate\Database\Eloquent\SoftDeletingScope; -use Filament\Tables\Filters\Filter; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Validation\ValidationException; -use Filament\Notifications\Notification; use Illuminate\Support\Facades\Mail; -use Storage; class QualityValidationResource extends Resource { @@ -50,6 +42,7 @@ class QualityValidationResource extends Resource protected static ?string $navigationGroup = 'Display'; public $isSubmitted = false; + public $data = []; public static function form(Form $form): Form @@ -62,6 +55,7 @@ class QualityValidationResource extends Resource ->reactive() ->options(function (callable $get) { $userHas = Filament::auth()->user()->plant_id; + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); }) ->afterStateUpdated(function (callable $set, callable $get, $state) { @@ -77,20 +71,19 @@ class QualityValidationResource extends Resource $set('plant', $state); $pId = $get('plant_id'); - if (!$pId) { + if (! $pId) { $set('pqPlantError', 'Please select a plant first.'); - } - else { + } else { $set('pqPlantError', null); } $pId = $get('line_id'); - if (!$pId) { + if (! $pId) { $set('pqLineError', null); } }) ->required() - //->default(fn () => request()->query('plant_id')) + // ->default(fn () => request()->query('plant_id')) ->default(fn ($get) => $get('plant') ?? session('last_selected_plant_id')) ->extraAttributes(fn ($get) => [ 'class' => $get('pqPlantError') ? 'border-red-500' : '', @@ -106,15 +99,14 @@ class QualityValidationResource extends Resource ->required() ->options(function (callable $get) { $plantId = $get('plant_id'); - if (!$plantId) - { + if (! $plantId) { return []; } return Line::where('plant_id', $plantId) - ->where('type', 'FG Line') // Filter by type - ->pluck('name', 'id') - ->toArray(); + ->where('type', 'FG Line') // Filter by type + ->pluck('name', 'id') + ->toArray(); }) ->afterStateUpdated(function (callable $set, callable $get, $state) { $set('item_id', null); @@ -123,7 +115,7 @@ class QualityValidationResource extends Resource $set('line', $state); $pId = $get('line_id'); - if (!$pId) { + if (! $pId) { $set('pqLineError', 'Please select a line.'); } else { $set('pqLineError', null); @@ -151,17 +143,14 @@ class QualityValidationResource extends Resource ->reactive() ->readOnly(fn (callable $get) => $get('item_id')) ->afterStateUpdated(function (callable $set, callable $get, ?string $state) { - if(!is_numeric($get('production_order')) || !preg_match('/^[1-9][0-9]{6,13}$/', $get('production_order'))) - { - $set('prodOrdError', "Must be a numeric value with 7 to 14 digits."); + if (! is_numeric($get('production_order')) || ! preg_match('/^[1-9][0-9]{6,13}$/', $get('production_order'))) { + $set('prodOrdError', 'Must be a numeric value with 7 to 14 digits.'); $set('production_order', null); $set('item_id', null); $set('sticker_master_id', null); $set('uom', null); $set('serial_number', null); - } - else - { + } else { $set('prodOrdError', null); $set('production_order', $state); $set('production', $state); @@ -224,28 +213,25 @@ class QualityValidationResource extends Resource $set('show_validation_image', false); $set('validation1_image_url', null); - if (!$pId) { + if (! $pId) { $set('pqLineError', 'Please select a line.'); } else { $set('pqLineError', null); } $pOrder = $get('production_order'); - if (!$pOrder) - { + if (! $pOrder) { $set('prodOrdError', "Production Order can't be empty."); $set('production_order', null); $set('part_validation_type', null); $set('show_validation_image', false); $set('validation1_image_url', null); - } - else - { + } else { $set('prodOrdError', null); } $serialFields = [ - 'serial_number_motor_qr', 'serial_number_pump_qr', 'serial_number_pumpset_qr', 'pack_slip_motor_qr', 'pack_slip_pump_qr', 'pack_slip_pumpset_qr', 'name_plate_motor_qr', 'name_plate_pump_qr', 'name_plate_pumpset_qr', 'tube_sticker_motor_qr', 'tube_sticker_pump_qr', 'tube_sticker_pumpset_qr', 'warranty_card_qr' + 'serial_number_motor_qr', 'serial_number_pump_qr', 'serial_number_pumpset_qr', 'pack_slip_motor_qr', 'pack_slip_pump_qr', 'pack_slip_pumpset_qr', 'name_plate_motor_qr', 'name_plate_pump_qr', 'name_plate_pumpset_qr', 'tube_sticker_motor_qr', 'tube_sticker_pump_qr', 'tube_sticker_pumpset_qr', 'warranty_card_qr', ]; $set('serial_number', null); @@ -253,22 +239,23 @@ class QualityValidationResource extends Resource $serialnumber = ['serial_number_motor_qr', 'serial_number_pump_qr', 'serial_number_pumpset_qr']; $partValidationColumns = [ - 'part_validation1', 'part_validation2', 'part_validation3', 'part_validation4', 'part_validation5' + 'part_validation1', 'part_validation2', 'part_validation3', 'part_validation4', 'part_validation5', ]; foreach ($serialFields as $field) { - $set($field . '_visible', false); + $set($field.'_visible', false); $set($field, null); } foreach ($partValidationColumns as $column) { - $set($column . '_visible', false); + $set($column.'_visible', false); $set($column, null); } // Proceed with validation logic for new scanned QR code - if (!$state || trim($state) == '') { + if (! $state || trim($state) == '') { $set('validationError', null); + return; } @@ -279,10 +266,11 @@ class QualityValidationResource extends Resource $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; } - if (!preg_match('/^[a-zA-Z0-9]{6,}+\|[1-9][a-zA-Z0-9]{8,}+(\|)?$/', $state)) { + if (! preg_match('/^[a-zA-Z0-9]{6,}+\|[1-9][a-zA-Z0-9]{8,}+(\|)?$/', $state)) { // if (strpos($state, '|') == false) { // $set('validationError', 'Scan valid QR code. (Ex: Item_Code|Serial_Number)'); // $set('item_id', null); @@ -292,47 +280,46 @@ class QualityValidationResource extends Resource // } // else // { - $splits = explode('|', $state); - $iCode = trim($splits[0]); - $sNumber = isset($splits[1]) ? trim($splits[1]) : null; + $splits = explode('|', $state); + $iCode = trim($splits[0]); + $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { - $set('validationError', 'Item code must contain alpha-numeric values.'); - $set('part_validation_type', null); - $set('show_validation_image', false); - $set('part_validation_type_options', []); - $set('validation1_image_url', null); - return; - } - else if (strlen($iCode) < 6) { - $set('validationError', 'Item code must be at least 6 digits.'); - $set('part_validation_type', null); - $set('show_validation_image', false); - $set('part_validation_type_options', []); - $set('validation1_image_url', null); - return; - } - else if (!ctype_alnum($sNumber)) { - $set('validationError', 'Serial Number must contain alpha-numeric values.'); - $set('part_validation_type', null); - $set('show_validation_image', false); - $set('part_validation_type_options', []); - $set('validation1_image_url', null); - return; - } - else if (strlen($sNumber) < 9) { - $set('validationError', 'Serial Number must be at least 9 digits.'); - $set('part_validation_type', null); - $set('show_validation_image', false); - $set('part_validation_type_options', []); - $set('validation1_image_url', null); - return; - } + if (! ctype_alnum($iCode)) { + $set('validationError', 'Item code must contain alpha-numeric values.'); + $set('part_validation_type', null); + $set('show_validation_image', false); + $set('part_validation_type_options', []); + $set('validation1_image_url', null); + + return; + } elseif (strlen($iCode) < 6) { + $set('validationError', 'Item code must be at least 6 digits.'); + $set('part_validation_type', null); + $set('show_validation_image', false); + $set('part_validation_type_options', []); + $set('validation1_image_url', null); + + return; + } elseif (! ctype_alnum($sNumber)) { + $set('validationError', 'Serial Number must contain alpha-numeric values.'); + $set('part_validation_type', null); + $set('show_validation_image', false); + $set('part_validation_type_options', []); + $set('validation1_image_url', null); + + return; + } elseif (strlen($sNumber) < 9) { + $set('validationError', 'Serial Number must be at least 9 digits.'); + $set('part_validation_type', null); + $set('show_validation_image', false); + $set('part_validation_type_options', []); + $set('validation1_image_url', null); + + return; + } // } - } - else - { + } else { $set('validationError', null); } @@ -353,61 +340,60 @@ class QualityValidationResource extends Resource $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; - } - else if (!ctype_alnum($itemCode)) { + } elseif (! ctype_alnum($itemCode)) { $set('validationError', 'Item Code should contain alpha-numeric values.'); $set('item_id', null); $set('part_validation_type', null); $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; - } - else if ($serialNumber == '') { + } elseif ($serialNumber == '') { $set('validationError', 'Waiting for full QR scan...'); + return; - } - else if (strlen($serialNumber) < 9) { + } elseif (strlen($serialNumber) < 9) { $set('validationError', 'Serial Number must be at least 9 digits.'); $set('part_validation_type', null); $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; - } - else if (!ctype_alnum($serialNumber)) { + } elseif (! ctype_alnum($serialNumber)) { $set('validationError', 'Serial Number should contain alpha-numeric values.'); $set('item_id', null); $set('part_validation_type', null); $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; - } - else - { + } else { $set('validationError', null); } $plantId = $get('plant_id'); // Get selected plant - if (!$plantId) { + if (! $plantId) { $set('validationError', 'Please select a plant first.'); $set('item_id', null); $set('part_validation_type', null); $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; } // Check if the item exists for the selected plant $stickerMaster = StickerMaster::where('plant_id', $plantId)->whereHas('item', function ($query) use ($itemCode) { - $query->where('code', $itemCode); - })->first(); + $query->where('code', $itemCode); + })->first(); - - if (!$stickerMaster) { + if (! $stickerMaster) { $set('validationError', 'Item code does not exist in master data.'); $set('sticker_master_id', null); $set('uom', null); @@ -416,11 +402,10 @@ class QualityValidationResource extends Resource $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; - } - else - { - if (!$stickerMaster->item->uom) { + } else { + if (! $stickerMaster->item->uom) { $set('validationError', "Item code does not have 'UOM' in master data."); $set('sticker_master_id', null); $set('uom', null); @@ -428,11 +413,10 @@ class QualityValidationResource extends Resource $set('part_validation_type', null); $set('show_validation_image', false); $set('validation1_image_url', null); + return; - } - else if(!is_numeric($get('production_order')) || !preg_match('/^[1-9][0-9]{6,13}$/', $get('production_order'))) - { - $set('prodOrdError', "Must be a numeric value."); + } elseif (! is_numeric($get('production_order')) || ! preg_match('/^[1-9][0-9]{6,13}$/', $get('production_order'))) { + $set('prodOrdError', 'Must be a numeric value.'); $set('item_id', null); $set('sticker_master_id', null); $set('uom', null); @@ -441,6 +425,7 @@ class QualityValidationResource extends Resource $set('show_validation_image', false); $set('part_validation_type_options', []); $set('validation1_image_url', null); + return; } @@ -458,6 +443,7 @@ class QualityValidationResource extends Resource if ($userInput != null && $userInput != $expectedValue) { $set('validationError', "Invalid input for $field. Expected: $expectedValue"); + return; // Stop execution if any validation fails } } @@ -475,19 +461,19 @@ class QualityValidationResource extends Resource // } // })->exists(); - - if ($serialExists && !$get('id')) { + if ($serialExists && ! $get('id')) { $set('validationError', 'Serial number already exists in quality validation.'); - //$set('item_id', "$itemCode|$previousSerialNumber"); - // $set('item_id', null); + // $set('item_id', "$itemCode|$previousSerialNumber"); + // $set('item_id', null); $set('sticker_master_id', null); $set('uom', null); $set('serial_number', null); + return; } // Clear validation error if all inputs match - $set('validationError', null); + $set('validationError', null); // $visibleColumns = []; // foreach ($serialFields as $column) { @@ -505,30 +491,30 @@ class QualityValidationResource extends Resource foreach ($serialFields as $column) { - $colFld = $column; + $colFld = $column; if (str_ends_with($colFld, '_qr')) { $colFld = substr($colFld, 0, -3); } if ($stickerMaster->$colFld != null) { - $set($column . '_visible', true); + $set($column.'_visible', true); } else { - $set($column . '_visible', false); + $set($column.'_visible', false); } } foreach ($partValidationColumns as $column) { if ($stickerMaster->$column != null) { - $set($column . '_visible', true); + $set($column.'_visible', true); } else { - $set($column . '_visible', false); + $set($column.'_visible', false); } } foreach ($serialnumber as $field) { if ($get("{$field}_visible")) { $set($field, $serialNumber); - $colFld = $field; + $colFld = $field; if (str_ends_with($colFld, '_qr')) { $colFld = substr($colFld, 0, -3); } @@ -540,36 +526,38 @@ class QualityValidationResource extends Resource // Find item based on scanned code $item = Item::where('code', $itemCode) - ->where('plant_id', $plantId)->first(); + ->where('plant_id', $plantId)->first(); - if (!$item) { + if (! $item) { $set('part_validation_type_options', []); + return; } // Find sticker master $sticker = StickerMaster::where('plant_id', $plantId) - ->where('item_id', $item->id) - ->first(); + ->where('item_id', $item->id) + ->first(); - if (!$sticker) { + if (! $sticker) { $set('part_validation_type_options', []); + return; } // Build dynamic options $options = []; - if (!empty($sticker->part_validation1)) { + if (! empty($sticker->part_validation1)) { $options['part_validation1'] = 'Part Validation 1'; } - if (!empty($sticker->part_validation2)) { + if (! empty($sticker->part_validation2)) { $options['part_validation2'] = 'Part Validation 2'; } - if (!empty($sticker->part_validation3)) { + if (! empty($sticker->part_validation3)) { $options['part_validation3'] = 'Part Validation 3'; } - if (!empty($sticker->part_validation4)) { + if (! empty($sticker->part_validation4)) { $options['part_validation4'] = 'Part Validation 4'; } @@ -663,59 +651,61 @@ class QualityValidationResource extends Resource $set('show_validation_image', false); $set('validation1_image_url', null); }) - ->visible(fn ($get) => !empty($get('part_validation_type_options'))) + ->visible(fn ($get) => ! empty($get('part_validation_type_options'))) ->suffixAction( - Forms\Components\Actions\Action::make('toggleValidationImage') - ->icon(fn (callable $get) => $get('show_validation_image') ? 'heroicon-o-eye-slash' : 'heroicon-o-eye') - ->tooltip('View Validation Image') - ->action(function (callable $get, $set) { + Forms\Components\Actions\Action::make('toggleValidationImage') + ->icon(fn (callable $get) => $get('show_validation_image') ? 'heroicon-o-eye-slash' : 'heroicon-o-eye') + ->tooltip('View Validation Image') + ->action(function (callable $get, $set) { - $currentState = $get('show_validation_image'); - $set('show_validation_image', !$currentState); + $currentState = $get('show_validation_image'); + $set('show_validation_image', ! $currentState); - if ($currentState == true) { - $set('validation1_image_url', null); - return; - } + if ($currentState == true) { + $set('validation1_image_url', null); - $partvalidationType = $get('part_validation_type'); - $plantId1 = $get('plant_id'); + return; + } - $plantCode1 = Plant::where('id', $plantId1)->value('code'); + $partvalidationType = $get('part_validation_type'); + $plantId1 = $get('plant_id'); - $itemState = $get('item_id'); - $parts = explode('|', $itemState); - $itemCode = trim($parts[0]); + $plantCode1 = Plant::where('id', $plantId1)->value('code'); - $itemId1 = Item::where('code', $itemCode) - ->where('plant_id', $plantId1) - ->first(); + $itemState = $get('item_id'); + $parts = explode('|', $itemState); + $itemCode = trim($parts[0]); - $itemId2 = $itemId1?->id; + $itemId1 = Item::where('code', $itemCode) + ->where('plant_id', $plantId1) + ->first(); - $sticker = StickerMaster::where('plant_id', $plantId1) - ->where('item_id', $itemId2) - ->first(); + $itemId2 = $itemId1?->id; - if (!$sticker) { - Notification::make() - ->title('Sticker Master Missing') - ->body('No Sticker Master found for selected Plant & Item.') - ->danger() - ->send(); - return; - } + $sticker = StickerMaster::where('plant_id', $plantId1) + ->where('item_id', $itemId2) + ->first(); - $value = $sticker->{$partvalidationType}; - $fileName = "{$value}.png"; + if (! $sticker) { + Notification::make() + ->title('Sticker Master Missing') + ->body('No Sticker Master found for selected Plant & Item.') + ->danger() + ->send(); - $imageUrl = route('part.validation.image', [ - 'filename' => $fileName - ]); + return; + } - $set('validation1_image_url', $imageUrl); - }) - ), + $value = $sticker->{$partvalidationType}; + $fileName = "{$value}.png"; + + $imageUrl = route('part.validation.image', [ + 'filename' => $fileName, + ]); + + $set('validation1_image_url', $imageUrl); + }) + ), // Forms\Components\Actions::make([ // Forms\Components\Actions\Action::make('openValidation') @@ -737,7 +727,6 @@ class QualityValidationResource extends Resource // $plantCode1 = Plant::where('id', $plantId1)->value('code'); - // $itemState = $get('item_id'); // $parts = explode('|', $itemState); @@ -783,12 +772,12 @@ class QualityValidationResource extends Resource // ->visible(fn ($get) => !empty($get('part_validation_type_options'))), Forms\Components\Hidden::make('validation1_image_url') - ->reactive(), + ->reactive(), Forms\Components\View::make('components.part-validation-error-icon') - ->statePath('validation1_image_url') // bind state directly - ->visible(fn ($get) => $get('show_validation_image') == true) - ->reactive(), + ->statePath('validation1_image_url') // bind state directly + ->visible(fn ($get) => $get('show_validation_image') == true) + ->reactive(), Forms\Components\Hidden::make('serial_number') ->required(), @@ -798,8 +787,8 @@ class QualityValidationResource extends Resource Forms\Components\TextInput::make('serial_number_motor_qr') ->label('Serial Number Motor') ->reactive() - ->readOnly(fn (callable $get) => !$get('id')) - ->hidden(fn (callable $get) => !$get('serial_number_motor_qr_visible')) // Controls visibility + ->readOnly(fn (callable $get) => ! $get('id')) + ->hidden(fn (callable $get) => ! $get('serial_number_motor_qr_visible')) // Controls visibility ->default(''), Forms\Components\Hidden::make('serial_number_pump'), @@ -808,7 +797,7 @@ class QualityValidationResource extends Resource ->label('Serial Number Pump') ->reactive() ->required() - ->hidden(fn (callable $get) => !$get('serial_number_pump_qr_visible')) + ->hidden(fn (callable $get) => ! $get('serial_number_pump_qr_visible')) ->default('') ->afterStateUpdated(function (callable $set, callable $get, ?string $state) { @@ -816,67 +805,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('serial_number_pump_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('serial_number_pump_error', 'Serial number does not match.'); $set('serial_number_pump_qr', null); + return; - } - else { + } else { $set('serial_number_pump_error', null); $set('serial_number_pump_qr', $serialNumber); $set('serial_number_pump', '1'); + return; } } if (strlen($state) < 9) { $set('serial_number_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('serial_number_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('serial_number_pump_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('serial_number_pump_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('serial_number_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('serial_number_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('serial_number_pump_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('serial_number_pump_error', null); } @@ -898,30 +885,30 @@ class QualityValidationResource extends Resource $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) - { + if ($itemCode != $expectedItemCode) { $set('serial_number_pump_error', 'Item code does not match.'); + return; } - $set('serial_number_pump_qr', $serialNumber); - $set('serial_number_pump', '1'); + $set('serial_number_pump_qr', $serialNumber); + $set('serial_number_pump', '1'); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('serial_number_pump_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('serial_number_pump_error', 'Serial number does not match.'); $set('serial_number_pump_qr', null); + return; - } - else { + } else { $set('serial_number_pump_error', null); $set('serial_number_pump_qr', $serialNumber); $set('serial_number_pump', '1'); @@ -930,23 +917,23 @@ class QualityValidationResource extends Resource ->extraAttributes(fn ($get) => [ 'class' => $get('serial_number_pump_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('serial_number_pump_error') ? $get('serial_number_pump_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('serial_number_pump_error') ? $get('serial_number_pump_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('serial_number_pumpset'), Forms\Components\TextInput::make('serial_number_pumpset_qr') ->label('Serial Number PumpSet') ->reactive() - ->readOnly(fn (callable $get) => !$get('id')) - ->hidden(fn (callable $get) => !$get('serial_number_pumpset_qr_visible')) + ->readOnly(fn (callable $get) => ! $get('id')) + ->hidden(fn (callable $get) => ! $get('serial_number_pumpset_qr_visible')) ->default(''), Forms\Components\Hidden::make('pack_slip_motor'), Forms\Components\TextInput::make('pack_slip_motor_qr') ->label('Pack Slip Motor') - ->hidden(fn (callable $get) => !$get('pack_slip_motor_qr_visible')) + ->hidden(fn (callable $get) => ! $get('pack_slip_motor_qr_visible')) ->default('') ->reactive() ->required() @@ -956,67 +943,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('pack_slip_motor_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('pack_slip_motor_error', 'Serial number does not match.'); $set('pack_slip_motor_qr', null); + return; - } - else { + } else { $set('pack_slip_motor_error', null); $set('pack_slip_motor_qr', $serialNumber); $set('pack_slip_motor', '1'); + return; } } if (strlen($state) < 9) { $set('pack_slip_motor_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('pack_slip_motor_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('pack_slip_motor_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('pack_slip_motor_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('pack_slip_motor_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('pack_slip_motor_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('pack_slip_motor_error', 'Scan valid QR code'); + return; - } - else - { + } else { $set('pack_slip_motor_error', null); } @@ -1034,52 +1019,51 @@ class QualityValidationResource extends Resource // $get('serial_number_pumpset_qr_visible') ? trim((string) $get('serial_number_pumpset')) : null, // ]); - $visibleSerialNumber = $get('serial_number'); + $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('pack_slip_motor_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('pack_slip_motor_error', 'Item code does not match.'); - $set('pack_slip_motor_qr', $serialNumber); + return; + } - $set('pack_slip_motor', '1'); + $set('pack_slip_motor_qr', $serialNumber); + $set('pack_slip_motor', '1'); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('pack_slip_motor_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('pack_slip_motor_error', 'Serial number does not match.'); $set('pack_slip_motor_qr', null); + return; - } - else { + } else { $set('pack_slip_motor_error', null); $set('pack_slip_motor_qr', $serialNumber); $set('pack_slip_motor', '1'); } - }) - - ->extraAttributes(fn ($get) => [ - 'class' => $get('pack_slip_motor_error') ? 'border-red-500' : '', - ]) - ->hint(fn ($get) => $get('pack_slip_motor_error') ? $get('pack_slip_motor_error') : null) - ->hintColor('danger'), + }) + ->extraAttributes(fn ($get) => [ + 'class' => $get('pack_slip_motor_error') ? 'border-red-500' : '', + ]) + ->hint(fn ($get) => $get('pack_slip_motor_error') ? $get('pack_slip_motor_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('pack_slip_pump'), Forms\Components\TextInput::make('pack_slip_pump_qr') ->label('Pack Slip Pump') - ->hidden(fn (callable $get) => !$get('pack_slip_pump_qr_visible')) + ->hidden(fn (callable $get) => ! $get('pack_slip_pump_qr_visible')) ->default('') ->required() ->reactive() @@ -1089,67 +1073,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('pack_slip_pump_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('pack_slip_pump_error', 'Serial number does not match.'); $set('pack_slip_pump_qr', null); + return; - } - else { + } else { $set('pack_slip_pump_error', null); $set('pack_slip_pump_qr', $serialNumber); $set('pack_slip_pump', '1'); + return; } } if (strlen($state) < 9) { $set('pack_slip_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('pack_slip_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('pack_slip_pump_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('pack_slip_pump_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('pack_slip_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('pack_slip_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('pack_slip_pump_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('pack_slip_pump_error', null); } @@ -1168,47 +1150,48 @@ class QualityValidationResource extends Resource // ]); $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('pack_slip_pump_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('pack_slip_pump_error', 'Item code does not match.'); - $set('pack_slip_pump_qr', $serialNumber); - $set('pack_slip_pump', '1'); + return; + } + + $set('pack_slip_pump_qr', $serialNumber); + $set('pack_slip_pump', '1'); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('pack_slip_pump_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('pack_slip_pump_error', 'Serial number does not match.'); $set('pack_slip_pump_qr', null); + return; - } - else { + } else { $set('pack_slip_pump_error', null); $set('pack_slip_pump_qr', $serialNumber); $set('pack_slip_pump', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('pack_slip_pump_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('pack_slip_pump_error') ? $get('pack_slip_pump_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('pack_slip_pump_error') ? $get('pack_slip_pump_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('pack_slip_pumpset'), Forms\Components\TextInput::make('pack_slip_pumpset_qr') ->label('Pack Slip PumpSet') - ->hidden(fn (callable $get) => !$get('pack_slip_pumpset_qr_visible')) + ->hidden(fn (callable $get) => ! $get('pack_slip_pumpset_qr_visible')) ->default('') ->required() ->reactive() @@ -1218,67 +1201,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('pack_slip_pumpset_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('pack_slip_pumpset_error', 'Serial number does not match.'); $set('pack_slip_pumpset_qr', null); + return; - } - else { + } else { $set('pack_slip_pumpset_error', null); $set('pack_slip_pumpset_qr', $serialNumber); $set('pack_slip_pumpset', '1'); + return; } } if (strlen($state) < 9) { $set('pack_slip_pumpset_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('pack_slip_pumpset_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('pack_slip_pumpset_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('pack_slip_pumpset_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('pack_slip_pumpset_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('pack_slip_pumpset_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('pack_slip_pumpset_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('pack_slip_pumpset_error', null); } @@ -1298,48 +1279,49 @@ class QualityValidationResource extends Resource $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('pack_slip_pumpset_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('pack_slip_pumpset_error', 'Item code does not match.'); - $set('pack_slip_pumpset_qr', $serialNumber); - $set('pack_slip_pumpset', '1'); + return; + } + + $set('pack_slip_pumpset_qr', $serialNumber); + $set('pack_slip_pumpset', '1'); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('pack_slip_pumpset_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('pack_slip_pumpset_error', 'Serial number does not match.'); $set('pack_slip_pumpset_qr', null); + return; - } - else { + } else { $set('pack_slip_pumpset_error', null); $set('pack_slip_pumpset_qr', $serialNumber); $set('pack_slip_pumpset', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('pack_slip_pumpset_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('pack_slip_pumpset_error') ? $get('pack_slip_pumpset_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('pack_slip_pumpset_error') ? $get('pack_slip_pumpset_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('name_plate_motor'), Forms\Components\TextInput::make('name_plate_motor_qr') ->label('Name Plate Motor') - ->hidden(fn (callable $get) => !$get('name_plate_motor_qr_visible')) + ->hidden(fn (callable $get) => ! $get('name_plate_motor_qr_visible')) ->default('') ->required() ->reactive() @@ -1349,67 +1331,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('name_plate_motor_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('name_plate_motor_error', 'Serial number does not match.'); $set('name_plate_motor_qr', null); + return; - } - else { + } else { $set('name_plate_motor_error', null); $set('name_plate_motor_qr', $serialNumber); $set('name_plate_motor', '1'); + return; } } if (strlen($state) < 9) { $set('name_plate_motor_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('name_plate_motor_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('name_plate_motor_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('name_plate_motor_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('name_plate_motor_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('name_plate_motor_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('name_plate_motor_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('name_plate_motor_error', null); } @@ -1428,47 +1408,48 @@ class QualityValidationResource extends Resource // ]); $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('name_plate_motor_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('name_plate_motor_error', 'Item code does not match.'); - $set('name_plate_motor_error', $serialNumber); + return; + } + + $set('name_plate_motor_error', $serialNumber); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('name_plate_motor_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('name_plate_motor_error', 'Serial number does not match.'); $set('name_plate_motor_qr', null); + return; - } - else { + } else { $set('name_plate_motor_error', null); $set('name_plate_motor_qr', $serialNumber); $set('name_plate_motor', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('name_plate_motor_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('name_plate_motor_error') ? $get('name_plate_motor_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('name_plate_motor_error') ? $get('name_plate_motor_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('name_plate_pump'), Forms\Components\TextInput::make('name_plate_pump_qr') ->label('Name Plate Pump') - ->hidden(fn (callable $get) => !$get('name_plate_pump_qr_visible')) + ->hidden(fn (callable $get) => ! $get('name_plate_pump_qr_visible')) ->default('') ->required() ->reactive() @@ -1478,67 +1459,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('name_plate_pump_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('name_plate_pump_error', 'Serial number does not match.'); $set('name_plate_pump_qr', null); + return; - } - else { + } else { $set('name_plate_pump_error', null); $set('name_plate_pump_qr', $serialNumber); $set('name_plate_pump', '1'); + return; } } if (strlen($state) < 9) { $set('name_plate_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('name_plate_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('name_plate_pump_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('name_plate_pump_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('name_plate_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('name_plate_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('name_plate_pump_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('name_plate_pump_error', null); } @@ -1557,47 +1536,48 @@ class QualityValidationResource extends Resource // ]); $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('name_plate_pump_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('name_plate_pump_error', 'Item code does not match.'); - $set('name_plate_pump_error', $serialNumber); + return; + } + + $set('name_plate_pump_error', $serialNumber); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('name_plate_pump_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('name_plate_pump_error', 'Serial number does not match.'); $set('name_plate_pump_qr', null); + return; - } - else { + } else { $set('name_plate_pump_error', null); $set('name_plate_pump_qr', $serialNumber); $set('name_plate_pump', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('name_plate_pump_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('name_plate_pump_error') ? $get('name_plate_pump_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('name_plate_pump_error') ? $get('name_plate_pump_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('name_plate_pumpset'), Forms\Components\TextInput::make('name_plate_pumpset_qr') ->label('Name Plate PumpSet') - ->hidden(fn (callable $get) => !$get('name_plate_pumpset_qr_visible')) + ->hidden(fn (callable $get) => ! $get('name_plate_pumpset_qr_visible')) ->default('') ->required() ->reactive() @@ -1607,67 +1587,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('name_plate_pumpset_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('name_plate_pumpset_error', 'Serial number does not match.'); $set('name_plate_pumpset_qr', null); + return; - } - else { + } else { $set('name_plate_pumpset_error', null); $set('name_plate_pumpset_qr', $serialNumber); $set('name_plate_pumpset', '1'); + return; } } if (strlen($state) < 9) { $set('name_plate_pumpset_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('name_plate_pumpset_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('name_plate_pumpset_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('name_plate_pumpset_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('name_plate_pumpset_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('name_plate_pumpset_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('name_plate_pumpset_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('name_plate_pumpset_error', null); } @@ -1686,36 +1664,37 @@ class QualityValidationResource extends Resource // ]); $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('name_plate_pumpset_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('name_plate_pumpset_error', 'Item code does not match.'); - $set('name_plate_pumpset_error', $serialNumber); + return; + } + + $set('name_plate_pumpset_error', $serialNumber); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('name_plate_pumpset_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('name_plate_pumpset_error', 'Serial number does not match.'); $set('name_plate_pumpset_qr', null); + return; - } - else { + } else { $set('name_plate_pumpset_error', null); $set('name_plate_pumpset_qr', $serialNumber); $set('name_plate_pumpset', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('name_plate_pumpset_error') ? 'border-red-500' : '', ]) @@ -1726,7 +1705,7 @@ class QualityValidationResource extends Resource Forms\Components\TextInput::make('tube_sticker_motor_qr') ->label('Tube Sticker Motor') - ->hidden(fn (callable $get) => !$get('tube_sticker_motor_qr_visible')) + ->hidden(fn (callable $get) => ! $get('tube_sticker_motor_qr_visible')) ->default('') ->required() ->reactive() @@ -1737,7 +1716,7 @@ class QualityValidationResource extends Resource // $mPorder = $get('production_order'); // $mPlantId = $get('plant_id'); - //$plant = Plant::find($mPlantId); + // $plant = Plant::find($mPlantId); // $plantCodePart4 = $plant?->code; // $mlineId = $get('line_id'); @@ -1747,67 +1726,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('tube_sticker_motor_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('tube_sticker_motor_error', 'Serial number does not match.'); $set('tube_sticker_motor_qr', null); + return; - } - else { + } else { $set('tube_sticker_motor_error', null); $set('tube_sticker_motor_qr', $serialNumber); $set('tube_sticker_motor', '1'); + return; } } if (strlen($state) < 9) { $set('tube_sticker_motor_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('tube_sticker_motor_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('tube_sticker_motor_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('tube_sticker_motor_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('tube_sticker_motor_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('tube_sticker_motor_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('tube_sticker_motor_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('tube_sticker_motor_error', null); } @@ -1826,25 +1803,26 @@ class QualityValidationResource extends Resource // ]); $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('tube_sticker_motor_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('tube_sticker_motor_error', 'Item code does not match.'); - $set('tube_sticker_motor_error', $serialNumber); + return; + } + + $set('tube_sticker_motor_error', $serialNumber); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('tube_sticker_motor_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('tube_sticker_motor_error', 'Serial number does not match.'); // $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); @@ -1865,26 +1843,26 @@ class QualityValidationResource extends Resource // \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); // } $set('tube_sticker_motor_qr', null); + return; - } - else { + } else { $set('tube_sticker_motor_error', null); $set('tube_sticker_motor_qr', $serialNumber); $set('tube_sticker_motor', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('tube_sticker_motor_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('tube_sticker_motor_error') ? $get('tube_sticker_motor_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('tube_sticker_motor_error') ? $get('tube_sticker_motor_error') : null) + ->hintColor('danger'), - Forms\Components\Hidden::make('tube_sticker_pump'), + Forms\Components\Hidden::make('tube_sticker_pump'), - Forms\Components\TextInput::make('tube_sticker_pump_qr') + Forms\Components\TextInput::make('tube_sticker_pump_qr') ->label('Tube Sticker Pump') - ->hidden(fn (callable $get) => !$get('tube_sticker_pump_qr_visible')) + ->hidden(fn (callable $get) => ! $get('tube_sticker_pump_qr_visible')) ->default('') ->required() ->reactive() @@ -1912,71 +1890,69 @@ class QualityValidationResource extends Resource // $mPlantName = $mailData['plant_name']; // $emails = $mailData['emails']; - //$mUserName = Filament::auth()->user()->name; + // $mUserName = Filament::auth()->user()->name; if (empty($state)) { $set('tube_sticker_pump_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('tube_sticker_pump_error', 'Serial number does not match.'); $set('tube_sticker_pump_qr', null); + return; - } - else { + } else { $set('tube_sticker_pump_error', null); $set('tube_sticker_pump_qr', $serialNumber); $set('tube_sticker_pump', '1'); + return; } } if (strlen($state) < 9) { $set('tube_sticker_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('tube_sticker_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('tube_sticker_pump_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('tube_sticker_pump_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('tube_sticker_pump_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('tube_sticker_pump_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('tube_sticker_pump_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('tube_sticker_pump_error', null); } @@ -1999,6 +1975,7 @@ class QualityValidationResource extends Resource if ($itemCode != $expectedItemCode) { $set('tube_sticker_pump_error', 'Item code does not match.'); + return; } @@ -2007,13 +1984,13 @@ class QualityValidationResource extends Resource // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('tube_sticker_pump_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('tube_sticker_pump_error', 'Serial number does not match.'); $set('tube_sticker_pump_qr', null); // $user = User::where('name', $mUserName)->first(); @@ -2022,7 +1999,6 @@ class QualityValidationResource extends Resource // $user->notify(new StatusUpdated($state)); // } - // $currentUser = Filament::auth()->user(); // if ($currentUser) { @@ -2032,28 +2008,25 @@ class QualityValidationResource extends Resource // $livewire->dispatch('refreshFilamentNotifications'); // } + // Notification::make() + // ->title('Status Updated') + // ->body("Serial number scanned: $state") + // ->danger() + // ->sendToDatabase($currentUser); - // Notification::make() - // ->title('Status Updated') - // ->body("Serial number scanned: $state") - // ->danger() - // ->sendToDatabase($currentUser); + // $user->notify(new StatusUpdated($state)); - //$user->notify(new StatusUpdated($state)); + // Notification::send($user, new StatusUpdated($state)); - //Notification::send($user, new StatusUpdated($state)); - - - //dd($user); + // dd($user); // $user->notify(new StatusUpdated($state)); // Inside a Filament page or resource - //$this->notify('success', "Serial number scanned: $state"); + // $this->notify('success', "Serial number scanned: $state"); // dispatch(new SendInvalidQualityMailJob( // $state, $mPorder, $mPlantId, $mlineId, $mUserName, 'InvalidTubeStickerPump' // ))->afterResponse(); - // $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); // $mPlantName = $mailData['plant_name']; @@ -2073,25 +2046,24 @@ class QualityValidationResource extends Resource // } return; - } - else { + } else { $set('tube_sticker_pump_error', null); $set('tube_sticker_pump_qr', $serialNumber); $set('tube_sticker_pump', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('tube_sticker_pump_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('tube_sticker_pump_error') ? $get('tube_sticker_pump_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('tube_sticker_pump_error') ? $get('tube_sticker_pump_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('tube_sticker_pumpset'), Forms\Components\TextInput::make('tube_sticker_pumpset_qr') ->label('Tube Sticker PumpSet') - ->hidden(fn (callable $get) => !$get('tube_sticker_pumpset_qr_visible')) + ->hidden(fn (callable $get) => ! $get('tube_sticker_pumpset_qr_visible')) ->default('') ->required() ->reactive() @@ -2102,7 +2074,7 @@ class QualityValidationResource extends Resource $mPorder = $get('production_order'); $mPlantId = $get('plant_id'); - //$plant = Plant::find($mPlantId); + // $plant = Plant::find($mPlantId); // $plantCodePart4 = $plant?->code; $mlineId = $get('line_id'); @@ -2112,67 +2084,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('tube_sticker_pumpset_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('tube_sticker_pumpset_error', 'Serial number does not match.'); $set('tube_sticker_pumpset_qr', null); + return; - } - else { + } else { $set('tube_sticker_pumpset_error', null); $set('tube_sticker_pumpset_qr', $serialNumber); $set('tube_sticker_pumpset', '1'); + return; } } if (strlen($state) < 9) { $set('tube_sticker_pumpset_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('tube_sticker_pumpset_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('tube_sticker_pumpset_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('tube_sticker_pumpset_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('tube_sticker_pumpset_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('tube_sticker_pumpset_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('tube_sticker_pumpset_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('tube_sticker_pumpset_error', null); } @@ -2181,8 +2151,8 @@ class QualityValidationResource extends Resource $itemCode = trim($parts[0]); $serialNumber = trim($parts[1]); - // $serialNumber = preg_replace('/\/[MmPpCc]$/', '', $serialNumber); // Remove - $serialNumber = preg_replace('/\/[MmPpCc]$/', '', $serialNumber); // Remove + // $serialNumber = preg_replace('/\/[MmPpCc]$/', '', $serialNumber); // Remove + $serialNumber = preg_replace('/\/[MmPpCc]$/', '', $serialNumber); // Remove // Retrieve visible serial numbers // $visibleSerialNumbers = array_filter([ // $get('serial_number_motor_qr_visible') ? trim((string) $get('serial_number_motor')) : null, @@ -2191,27 +2161,28 @@ class QualityValidationResource extends Resource // ]); $visibleSerialNumber = $get('serial_number'); - //dd($parts); + // dd($parts); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('tube_sticker_pumpset_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('tube_sticker_pumpset_error', 'Item code does not match.'); - $set('tube_sticker_pumpset_error', $serialNumber); + return; + } + + $set('tube_sticker_pumpset_error', $serialNumber); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('tube_sticker_pumpset_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('tube_sticker_pumpset_error', 'Serial number does not match.'); // $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); @@ -2231,26 +2202,26 @@ class QualityValidationResource extends Resource // \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); // } $set('tube_sticker_pumpset_qr', null); + return; - } - else { + } else { $set('tube_sticker_pumpset_error', null); $set('tube_sticker_pumpset_qr', $serialNumber); $set('tube_sticker_pumpset', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('tube_sticker_pumpset_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('tube_sticker_pumpset_error') ? $get('tube_sticker_pumpset_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('tube_sticker_pumpset_error') ? $get('tube_sticker_pumpset_error') : null) + ->hintColor('danger'), Forms\Components\Hidden::make('warranty_card'), Forms\Components\TextInput::make('warranty_card_qr') ->label('Warranty Card') - ->hidden(fn (callable $get) => !$get('warranty_card_qr_visible')) + ->hidden(fn (callable $get) => ! $get('warranty_card_qr_visible')) ->default('') ->required() ->reactive() @@ -2260,67 +2231,65 @@ class QualityValidationResource extends Resource if (empty($state)) { $set('warranty_card_error', null); + return; } - if (strpos($state, '|') == false) - { - if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) - { + if (strpos($state, '|') == false) { + if (preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $state)) { $visibleSerialNumber = $get('serial_number'); $serialNumber = $state; - if ($visibleSerialNumber != $serialNumber) - { + if ($visibleSerialNumber != $serialNumber) { $set('warranty_card_error', 'Serial number does not match.'); $set('warranty_card_qr', null); + return; - } - else { + } else { $set('warranty_card_error', null); $set('warranty_card_qr', $serialNumber); $set('warranty_card', '1'); + return; } } if (strlen($state) < 9) { $set('warranty_card_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($state)) { + } elseif (! ctype_alnum($state)) { $set('warranty_card_error', 'Serial Number must contain alpha-numeric values.'); + return; } - } - else if (strpos($state, '|') == true && !preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) - { + } elseif (strpos($state, '|') == true && ! preg_match('/^([a-zA-Z0-9]{6,})\|([1-9][a-zA-Z0-9]{8,})(?:\/[MmPpCc])?\|?$/', $state)) { $splits = explode('|', $state); $iCode = trim($splits[0]); $sNumber = isset($splits[1]) ? trim($splits[1]) : null; - if (!ctype_alnum($iCode)) { + if (! ctype_alnum($iCode)) { $set('warranty_card_error', 'Item code must contain alpha-numeric values.'); + return; - } - else if (strlen($iCode) < 6) { + } elseif (strlen($iCode) < 6) { $set('warranty_card_error', 'Item code must be at least 6 digits.'); + return; - } - else if (strlen($sNumber) < 9) { + } elseif (strlen($sNumber) < 9) { $set('warranty_card_error', 'Serial Number must be at least 9 digits.'); + return; - } - else if (!ctype_alnum($sNumber)) { + } elseif (! ctype_alnum($sNumber)) { $set('warranty_card_error', 'Serial Number must contain alpha-numeric values.'); + return; } $set('warranty_card_error', 'Scan valid QR code.'); + return; - } - else - { + } else { $set('warranty_card_error', null); } @@ -2340,44 +2309,45 @@ class QualityValidationResource extends Resource $visibleSerialNumber = $get('serial_number'); - $expectedItemCode = trim((string) $get('item_id')); + $expectedItemCode = trim((string) $get('item_id')); - if ($itemCode != $expectedItemCode) { - $set('warranty_card_error', 'Item code does not match.'); - return; - } + if ($itemCode != $expectedItemCode) { + $set('warranty_card_error', 'Item code does not match.'); - $set('warranty_card_error', $serialNumber); + return; + } + + $set('warranty_card_error', $serialNumber); // $isMatch = in_array($serialNumber, $visibleSerialNumbers, true); $isMatch = ($visibleSerialNumber == $serialNumber); - if (!$serialNumber || trim($serialNumber) == '') { + if (! $serialNumber || trim($serialNumber) == '') { $set('warranty_card_error', null); + return; } - if (!$isMatch) - { + if (! $isMatch) { $set('warranty_card_error', 'Serial number does not match.'); $set('warranty_card_qr', null); + return; - } - else { + } else { $set('warranty_card_error', null); $set('warranty_card_qr', $serialNumber); $set('warranty_card', '1'); } - }) + }) ->extraAttributes(fn ($get) => [ 'class' => $get('warranty_card_error') ? 'border-red-500' : '', ]) - ->hint(fn ($get) => $get('warranty_card_error') ? $get('warranty_card_error') : null) - ->hintColor('danger'), + ->hint(fn ($get) => $get('warranty_card_error') ? $get('warranty_card_error') : null) + ->hintColor('danger'), Forms\Components\TextInput::make('part_validation1') - ->hidden(fn (callable $get) => !$get('part_validation1_visible')) + ->hidden(fn (callable $get) => ! $get('part_validation1_visible')) ->default('') ->reactive() ->required() @@ -2395,14 +2365,13 @@ class QualityValidationResource extends Resource $mLine = Line::find($mlineId); $mLinePart = $mLine?->name; - $stickerMasterId = $get('sticker_master_id'); - if (!$stickerMasterId) { + if (! $stickerMasterId) { return; } $stickerMaster = StickerMaster::find($stickerMasterId); - if (!$stickerMaster) { + if (! $stickerMaster) { return; } @@ -2410,18 +2379,16 @@ class QualityValidationResource extends Resource if ($state == null || trim($state) == '') { $set('part_validation1_error', null); + return; } - if ($state == $expectedValue) - { + if ($state == $expectedValue) { $set('part_validation1_error', null); - } - else - { - $set('part_validation1_error', "Invalid input for part validation 1."); + } else { + $set('part_validation1_error', 'Invalid input for part validation 1.'); - //.Mail + // .Mail $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); @@ -2429,20 +2396,17 @@ class QualityValidationResource extends Resource $emails = $mailData['emails']; $mUserName = Filament::auth()->user()->name; - if (!empty($emails)) - { - //Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); + if (! empty($emails)) { + // Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); Mail::to($emails)->send( new InvalidQualityMail($state, $mPorder, $mPlantName, $mLinePart, $mUserName, 'InvalidPartNumber') ); - } - else - { + } else { \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); } $set('part_validation1', null); - $fileName = $expectedValue . ".png"; // or .jpg based on your file + $fileName = $expectedValue.'.png'; // or .jpg based on your file $fullPath = storage_path("app/private/uploads/PartValidation/{$fileName}"); // dd($fullPath); @@ -2455,13 +2419,14 @@ class QualityValidationResource extends Resource if (file_exists($fullPath)) { $imageUrl = route('part.validation.image', [ // 'plant' => $plantCodePart1, - 'filename' => $fileName + 'filename' => $fileName, ]); } else { - $imageUrl = asset("images/not_found.png"); + $imageUrl = asset('images/not_found.png'); } $set('part_validation1_error_image', $imageUrl); + return; } }) @@ -2473,14 +2438,13 @@ class QualityValidationResource extends Resource Forms\Components\Hidden::make('part_validation1_error_image'), - Forms\Components\View::make('components.part-validation1-error-icon') ->visible(fn ($get) => $get('part_validation1_error') != null) ->statePath('part_validation1_error_image') ->reactive(), Forms\Components\TextInput::make('part_validation2') - ->hidden(fn (callable $get) => !$get('part_validation2_visible')) + ->hidden(fn (callable $get) => ! $get('part_validation2_visible')) ->default('') ->required() ->reactive() @@ -2498,12 +2462,12 @@ class QualityValidationResource extends Resource $mLinePart = $mLine?->name; $stickerMasterId = $get('sticker_master_id'); - if (!$stickerMasterId) { + if (! $stickerMasterId) { return; } $stickerMaster = StickerMaster::find($stickerMasterId); - if (!$stickerMaster) { + if (! $stickerMaster) { return; } @@ -2511,36 +2475,31 @@ class QualityValidationResource extends Resource if ($state == null || trim($state) == '') { $set('part_validation2_error', null); + return; } - if ($state == $expectedValue) - { + if ($state == $expectedValue) { $set('part_validation2_error', null); - } - else - { - $set('part_validation2_error', "Invalid input for part validation 2."); + } else { + $set('part_validation2_error', 'Invalid input for part validation 2.'); $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); $mPlantName = $mailData['plant_name']; $emails = $mailData['emails']; $mUserName = Filament::auth()->user()->name; - if (!empty($emails)) - { - //Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); + if (! empty($emails)) { + // Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); Mail::to($emails)->send( - new InvalidQualityMail($state, $mPorder, $mPlantName,$mLinePart, $mUserName, 'InvalidPartNumber2') + new InvalidQualityMail($state, $mPorder, $mPlantName, $mLinePart, $mUserName, 'InvalidPartNumber2') ); - } - else - { + } else { \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); } $set('part_validation2', null); - $fileName = $expectedValue . ".png"; // or .jpg based on your file + $fileName = $expectedValue.'.png'; // or .jpg based on your file $fullPath = storage_path("app/private/uploads/PartValidation/{$plantCodePart2}/{$fileName}"); // if (!file_exists($fullPath)) { @@ -2555,10 +2514,11 @@ class QualityValidationResource extends Resource // Generate URL through custom route $imageUrl = route('part.validation.image', [ 'plant' => $plantCodePart2, - 'filename' => $fileName + 'filename' => $fileName, ]); $set('part_validation2_error_image', $imageUrl); + return; } }) @@ -2578,14 +2538,14 @@ class QualityValidationResource extends Resource ->reactive(), Forms\Components\TextInput::make('part_validation3') - ->hidden(fn (callable $get) => !$get('part_validation3_visible')) + ->hidden(fn (callable $get) => ! $get('part_validation3_visible')) ->default('') ->required() ->reactive() ->afterStateUpdated(function (callable $set, callable $get, ?string $state) { $stickerMasterId = $get('sticker_master_id'); - $mPorder = $get('production_order'); + $mPorder = $get('production_order'); $mPlantId = $get('plant_id'); $plant = Plant::find($mPlantId); @@ -2596,51 +2556,44 @@ class QualityValidationResource extends Resource $mLine = Line::find($mlineId); $mLinePart = $mLine?->name; - - if (!$stickerMasterId) { + if (! $stickerMasterId) { return; } $stickerMaster = StickerMaster::find($stickerMasterId); - if (!$stickerMaster) - { + if (! $stickerMaster) { return; } if ($state == null || trim($state) == '') { $set('part_validation3_error', null); + return; } $expectedValue = $stickerMaster->part_validation3; - if ($state == $expectedValue) - { + if ($state == $expectedValue) { $set('part_validation3_error', null); - } - else - { - $set('part_validation3_error', "Invalid input for part validation 3."); + } else { + $set('part_validation3_error', 'Invalid input for part validation 3.'); $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); $mPlantName = $mailData['plant_name']; $emails = $mailData['emails']; $mUserName = Filament::auth()->user()->name; - if (!empty($emails)) - { - //Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); + if (! empty($emails)) { + // Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); Mail::to($emails)->send( - new InvalidQualityMail($state, $mPorder, $mPlantName,$mLinePart, $mUserName, 'InvalidPartNumber3') + new InvalidQualityMail($state, $mPorder, $mPlantName, $mLinePart, $mUserName, 'InvalidPartNumber3') ); - } - else - { + } else { \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); } $set('part_validation3', null); - $fileName = $expectedValue . ".png"; // or .jpg based on your file - //$fullPath = storage_path("app/private/uploads/PartValidation/{$plantCodePart3}/{$fileName}"); + $fileName = $expectedValue.'.png'; // or .jpg based on your file + // $fullPath = storage_path("app/private/uploads/PartValidation/{$plantCodePart3}/{$fileName}"); // if (!file_exists($fullPath)) { // Notification::make() @@ -2654,10 +2607,11 @@ class QualityValidationResource extends Resource // Generate URL through custom route $imageUrl = route('part.validation.image', [ 'plant' => $plantCodePart3, - 'filename' => $fileName + 'filename' => $fileName, ]); $set('part_validation2_error_image', $imageUrl); + return; } }) @@ -2677,7 +2631,7 @@ class QualityValidationResource extends Resource ->reactive(), Forms\Components\TextInput::make('part_validation4') - ->hidden(fn (callable $get) => !$get('part_validation4_visible')) + ->hidden(fn (callable $get) => ! $get('part_validation4_visible')) ->default('') ->required() ->reactive() @@ -2694,55 +2648,50 @@ class QualityValidationResource extends Resource $mLine = Line::find($mlineId); $mLinePart = $mLine?->name; - if (!$stickerMasterId) { + if (! $stickerMasterId) { return; } $stickerMaster = StickerMaster::find($stickerMasterId); - if (!$stickerMaster) { + if (! $stickerMaster) { return; } $expectedValue = $stickerMaster->part_validation4; - // If input is empty, reset the error + // If input is empty, reset the error if ($state == null || trim($state) == '') { $set('part_validation4_error', null); + return; } - if ($state == $expectedValue) - { + if ($state == $expectedValue) { $set('part_validation4_error', null); - } - else - { - $set('part_validation4_error', "Invalid input for part validation 4."); + } else { + $set('part_validation4_error', 'Invalid input for part validation 4.'); $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); $mPlantName = $mailData['plant_name']; $emails = $mailData['emails']; $mUserName = Filament::auth()->user()->name; - if (!empty($emails)) - { - //Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); + if (! empty($emails)) { + // Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType)); Mail::to($emails)->send( - new InvalidQualityMail($state, $mPorder, $mPlantName,$mLinePart, $mUserName, 'InvalidPartNumber4') + new InvalidQualityMail($state, $mPorder, $mPlantName, $mLinePart, $mUserName, 'InvalidPartNumber4') ); - } - else - { + } else { \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); } $set('part_validation4', null); - $fileName = $expectedValue . ".png"; // or .jpg based on your file + $fileName = $expectedValue.'.png'; // or .jpg based on your file $fullPath = storage_path("app/private/uploads/PartValidation/{$plantCodePart4}/{$fileName}"); // Generate URL through custom route $imageUrl = route('part.validation.image', [ 'plant' => $plantCodePart4, - 'filename' => $fileName + 'filename' => $fileName, ]); $set('part_validation4_error_image', $imageUrl); @@ -2766,7 +2715,7 @@ class QualityValidationResource extends Resource ->reactive(), Forms\Components\TextInput::make('part_validation5') - ->hidden(fn (callable $get) => !$get('part_validation5_visible')) + ->hidden(fn (callable $get) => ! $get('part_validation5_visible')) ->default('') ->required() ->reactive() @@ -2776,20 +2725,21 @@ class QualityValidationResource extends Resource $mPorder = $get('production_order'); $mPlantId = $get('plant_id'); - if (!$stickerMasterId) { + if (! $stickerMasterId) { return; } $stickerMaster = StickerMaster::find($stickerMasterId); - if (!$stickerMaster) { + if (! $stickerMaster) { return; } $expectedValue = $stickerMaster->part_validation5; - // If input is empty, reset the error + // If input is empty, reset the error if ($state == null || trim($state) == '') { $set('part_validation5_error', null); + return; } @@ -2813,35 +2763,29 @@ class QualityValidationResource extends Resource // $set('part_validation5', null); // return; // } - if ($state == $expectedValue) - { + if ($state == $expectedValue) { $set('part_validation5_error', null); - } - else if (strpos($state, '/') != false) - { + } elseif (strpos($state, '/') != false) { $parts = explode('/', $state); - if (count($parts) >= 2) - { + if (count($parts) >= 2) { $segmentToValidate = $parts[1]; if ($segmentToValidate == $expectedValue) { $set('part_validation5_error', null); $set('part_validation5', $segmentToValidate); } else { - $set('part_validation5_error', "Invalid input for part validation 5."); + $set('part_validation5_error', 'Invalid input for part validation 5.'); $set('part_validation5', null); + return; } - } - else - { - $set('part_validation5_error', "Invalid input format for part validation 5."); + } else { + $set('part_validation5_error', 'Invalid input format for part validation 5.'); $set('part_validation5', null); + return; } - } - else - { - $set('part_validation5_error', "Invalid input for part validation 5."); + } else { + $set('part_validation5_error', 'Invalid input for part validation 5.'); // $mailData = \App\Filament\Resources\QualityValidationResource::getMailData($mPlantId); // $mPlantName = $mailData['plant_name']; @@ -2859,6 +2803,7 @@ class QualityValidationResource extends Resource // \Log::warning("No recipients found for plant {$mPlantName}, module Serial, rule invalid_serial."); // } $set('part_validation5', null); + return; } @@ -2885,11 +2830,11 @@ class QualityValidationResource extends Resource ->pluck('email') ->toArray(); - if (!empty($globalEmails)) { + if (! empty($globalEmails)) { return [ - 'plant_id' => 0, + 'plant_id' => 0, 'plant_name' => 'All Plants', - 'emails' => $globalEmails, + 'emails' => $globalEmails, ]; } @@ -2903,9 +2848,9 @@ class QualityValidationResource extends Resource ->toArray(); return [ - 'plant_id' => $plantId, + 'plant_id' => $plantId, 'plant_name' => $mPlantName, - 'emails' => $emails, + 'emails' => $emails, ]; } @@ -2924,6 +2869,7 @@ class QualityValidationResource extends Resource $paginator = $livewire->getTableRecords(); $perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10; $currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1; + return ($currentPage - 1) * $perPage + $rowLoop->iteration; }), Tables\Columns\TextColumn::make('plant.name') @@ -3056,207 +3002,214 @@ class QualityValidationResource extends Resource ->filters([ - Tables\Filters\TrashedFilter::make(), - Filter::make('advanced_filters') - ->label('Advanced Filters') - ->form([ - Select::make('Plant') - ->label('Select Plant') - ->nullable() - // ->options(function () { - // return Plant::pluck('name', 'id'); - // }) - ->options(function (callable $get) { - $userHas = Filament::auth()->user()->plant_id; - return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); - }) - ->reactive() - ->afterStateUpdated(function ($state, callable $set, callable $get) { - $set('sticker_master_id', null); - $set('sap_msg_status', null); - $set('Line', null); - $set('operator_id', null); - }), - Select::make('Line') - ->label('Select Line') - ->nullable() - ->options(function (callable $get) { - $plantId = $get('Plant'); - if (!$plantId) - { - return []; - } + Tables\Filters\TrashedFilter::make(), + Filter::make('advanced_filters') + ->label('Advanced Filters') + ->form([ + Select::make('Plant') + ->label('Select Plant') + ->nullable() + // ->options(function () { + // return Plant::pluck('name', 'id'); + // }) + ->options(function (callable $get) { + $userHas = Filament::auth()->user()->plant_id; - return Line::where('plant_id', $plantId) - ->where('type', 'FG Line') // Filter by type - ->pluck('name', 'id') - ->toArray(); - }) - ->reactive() - ->afterStateUpdated(function ($state, callable $set, callable $get) { - $set('sticker_master_id', null); - $set('sap_msg_status', null); - $set('operator_id', null); - }), - TextInput::make('production_order') - ->label('Production Order') - ->placeholder('Enter Production Order'), - TextInput::make('serial_number') - ->label('Serial Number') - ->placeholder(placeholder: 'Enter Serial Number'), - Select::make('sticker_master_id') - ->label('Search by Item Code') - ->nullable() - ->options(function (callable $get) { - $pId = $get('Plant'); - return Item::whereHas('stickerMasters', function ($query) use ($pId) { - if ($pId) { - $query->where('plant_id', $pId); + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); + }) + ->reactive() + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $set('sticker_master_id', null); + $set('sap_msg_status', null); + $set('Line', null); + $set('operator_id', null); + }), + Select::make('Line') + ->label('Select Line') + ->nullable() + ->options(function (callable $get) { + $plantId = $get('Plant'); + if (! $plantId) { + return []; } - $query->whereHas('qualityValidations'); - })->pluck('code', 'id'); - }) - ->searchable() - ->reactive(), - Select::make('sap_msg_status') - ->label('Select SAP Message Status') - ->nullable() - ->options(function (callable $get) { - $plantId = $get('Plant'); - if (!$plantId ) { - return QualityValidation::whereNotNull('sap_msg_status')->select('sap_msg_status')->distinct()->pluck('sap_msg_status', 'sap_msg_status'); - } - else { - return QualityValidation::where('plant_id', $plantId)->whereNotNull('sap_msg_status')->select('sap_msg_status')->distinct()->pluck('sap_msg_status', 'sap_msg_status'); - } - }) - // ->options(QualityValidation::whereNotNull('sap_msg_status')->select('sap_msg_status')->distinct()->pluck('sap_msg_status', 'sap_msg_status')) - ->reactive(), - Select::make('operator_id') - ->label('Created By') - ->nullable() - ->options(function (callable $get) { - $plantId = $get('Plant'); - $lineId = $get('Line'); - if (!$plantId && !$lineId) - { - return QualityValidation::whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id'); - } - else if ($plantId && !$lineId) - { - return QualityValidation::where('plant_id', $plantId)->whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id'); - } - else// if ($plantId && $lineId) - { - return QualityValidation::where('plant_id', $plantId)->where('line_id', $lineId)->whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id'); - } - }) - ->searchable() - ->reactive(), - DateTimePicker::make(name: 'created_from') - ->label('Created From') - ->placeholder(placeholder: 'Select From DateTime') - ->reactive() - ->native(false), - DateTimePicker::make('created_to') - ->label('Created To') - ->placeholder(placeholder: 'Select To DateTime') - ->reactive() - ->native(false), - ]) - ->query(function ($query, array $data) { - // Hide all records initially if no filters are applied - if (empty($data['Plant']) && empty($data['production_order']) && empty($data['serial_number']) && empty($data['sap_msg_status']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['operator_id']) && empty($data['sticker_master_id'])) { - return $query->whereRaw('1 = 0'); - } + return Line::where('plant_id', $plantId) + ->where('type', 'FG Line') // Filter by type + ->pluck('name', 'id') + ->toArray(); + }) + ->reactive() + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $set('sticker_master_id', null); + $set('sap_msg_status', null); + $set('operator_id', null); + }), + TextInput::make('production_order') + ->label('Production Order') + ->placeholder('Enter Production Order'), + TextInput::make('serial_number') + ->label('Serial Number') + ->placeholder(placeholder: 'Enter Serial Number'), + Select::make('sticker_master_id') + ->label('Search by Item Code') + ->nullable() + ->options(function (callable $get) { + $pId = $get('Plant'); - if (!empty($data['Plant'])) { - $query->where('plant_id', $data['Plant']); - } + return Item::whereHas('stickerMasters', function ($query) use ($pId) { + if ($pId) { + $query->where('plant_id', $pId); + } + $query->whereHas('qualityValidations'); + })->pluck('code', 'id'); + }) + ->searchable() + ->reactive(), + Select::make('sap_msg_status') + ->label('Select SAP Message Status') + ->nullable() + ->options(function (callable $get) { + $plantId = $get('Plant'); - if (!empty($data['Line'])) { - $query->where('line_id', $data['Line']); - } - - if (!empty($data['production_order'])) { - $query->where('production_order', $data['production_order']); - } - - if (!empty($data['serial_number'])) { - $query->where('serial_number', $data['serial_number']); - } - - if (!empty($data['sap_msg_status'])) { - $query->where('sap_msg_status', $data['sap_msg_status']); - } - - if (!empty($data['created_from'])) { - $query->where('created_at', '>=', $data['created_from']); - } - - if (!empty($data['created_to'])) { - $query->where('created_at', '<=', $data['created_to']); - } - - if (!empty($data['operator_id'])) { - $query->where('operator_id', $data['operator_id']); - } - - if (!empty($data['sticker_master_id'])) { - $stickerMasterIds = StickerMaster::where('item_id', $data['sticker_master_id']) - ->pluck('id') - ->toArray(); - - if (!empty($stickerMasterIds)) { - $query->whereIn('sticker_master_id', $stickerMasterIds); + if (! $plantId) { + return QualityValidation::whereNotNull('sap_msg_status')->select('sap_msg_status')->distinct()->pluck('sap_msg_status', 'sap_msg_status'); + } else { + return QualityValidation::where('plant_id', $plantId)->whereNotNull('sap_msg_status')->select('sap_msg_status')->distinct()->pluck('sap_msg_status', 'sap_msg_status'); + } + }) + // ->options(QualityValidation::whereNotNull('sap_msg_status')->select('sap_msg_status')->distinct()->pluck('sap_msg_status', 'sap_msg_status')) + ->reactive(), + Select::make('operator_id') + ->label('Created By') + ->nullable() + ->options(function (callable $get) { + $plantId = $get('Plant'); + $lineId = $get('Line'); + if (! $plantId && ! $lineId) { + return QualityValidation::whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id'); + } elseif ($plantId && ! $lineId) { + return QualityValidation::where('plant_id', $plantId)->whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id'); + } else { // if ($plantId && $lineId) + return QualityValidation::where('plant_id', $plantId)->where('line_id', $lineId)->whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id'); + } + }) + ->searchable() + ->reactive(), + DateTimePicker::make(name: 'created_from') + ->label('Created From') + ->placeholder(placeholder: 'Select From DateTime') + ->reactive() + ->native(false), + DateTimePicker::make('created_to') + ->label('Created To') + ->placeholder(placeholder: 'Select To DateTime') + ->reactive() + ->native(false), + ]) + ->query(function ($query, array $data) { + // Hide all records initially if no filters are applied + if (empty($data['Plant']) && empty($data['production_order']) && empty($data['serial_number']) && empty($data['sap_msg_status']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['operator_id']) && empty($data['sticker_master_id'])) { + return $query->whereRaw('1 = 0'); } - } - //$query->orderBy('created_at', 'asc'); - }) - ->indicateUsing(function (array $data) { - $indicators = []; + if (! empty($data['Plant'])) { + $query->where('plant_id', $data['Plant']); + } else { + $userHas = Filament::auth()->user()->plant_id; - if (!empty($data['Plant'])) { - $indicators[] = 'Plant: ' . Plant::where('id', $data['Plant'])->value('name'); - } + if ($userHas && strlen($userHas) > 0) { + return $query->whereRaw('1 = 0'); + } + } - if (!empty($data['Line'])) { - $indicators[] = 'Line: ' . Line::where('id', $data['Line'])->value('name'); - } + if (! empty($data['Line'])) { + $query->where('line_id', $data['Line']); + } - if (!empty($data['production_order'])) { - $indicators[] = 'Production Order: ' . $data['production_order']; - } + if (! empty($data['production_order'])) { + $query->where('production_order', $data['production_order']); + } - if (!empty($data['serial_number'])) { - $indicators[] = 'Serial Number: ' . $data['serial_number']; - } + if (! empty($data['serial_number'])) { + $query->where('serial_number', $data['serial_number']); + } - if (!empty($data['sticker_master_id'])) { - $itemCode = Item::find($data['sticker_master_id'])->code ?? 'Unknown'; - $indicators[] = 'Item Codes: ' . $itemCode; - } + if (! empty($data['sap_msg_status'])) { + $query->where('sap_msg_status', $data['sap_msg_status']); + } - if (!empty($data['sap_msg_status'])) { - $indicators[] = 'SAP Message Status: ' . $data['sap_msg_status']; - } + if (! empty($data['created_from'])) { + $query->where('created_at', '>=', $data['created_from']); + } - if (!empty($data['operator_id'])) { - $indicators[] = 'Created By: ' . $data['operator_id']; - } + if (! empty($data['created_to'])) { + $query->where('created_at', '<=', $data['created_to']); + } - if (!empty($data['created_from'])) { - $indicators[] = 'From: ' . $data['created_from']; - } + if (! empty($data['operator_id'])) { + $query->where('operator_id', $data['operator_id']); + } - if (!empty($data['created_to'])) { - $indicators[] = 'To: ' . $data['created_to']; - } + if (! empty($data['sticker_master_id'])) { + $stickerMasterIds = StickerMaster::where('item_id', $data['sticker_master_id']) + ->pluck('id') + ->toArray(); - return $indicators; - }) + if (! empty($stickerMasterIds)) { + $query->whereIn('sticker_master_id', $stickerMasterIds); + } + } + + // $query->orderBy('created_at', 'asc'); + }) + ->indicateUsing(function (array $data) { + $indicators = []; + + if (! empty($data['Plant'])) { + $indicators[] = 'Plant: '.Plant::where('id', $data['Plant'])->value('name'); + } else { + $userHas = Filament::auth()->user()->plant_id; + + if ($userHas && strlen($userHas) > 0) { + return 'Plant: Choose plant to filter records.'; + } + } + + if (! empty($data['Line'])) { + $indicators[] = 'Line: '.Line::where('id', $data['Line'])->value('name'); + } + + if (! empty($data['production_order'])) { + $indicators[] = 'Production Order: '.$data['production_order']; + } + + if (! empty($data['serial_number'])) { + $indicators[] = 'Serial Number: '.$data['serial_number']; + } + + if (! empty($data['sticker_master_id'])) { + $itemCode = Item::find($data['sticker_master_id'])->code ?? 'Unknown'; + $indicators[] = 'Item Codes: '.$itemCode; + } + + if (! empty($data['sap_msg_status'])) { + $indicators[] = 'SAP Message Status: '.$data['sap_msg_status']; + } + + if (! empty($data['operator_id'])) { + $indicators[] = 'Created By: '.$data['operator_id']; + } + + if (! empty($data['created_from'])) { + $indicators[] = 'From: '.$data['created_from']; + } + + if (! empty($data['created_to'])) { + $indicators[] = 'To: '.$data['created_to']; + } + + return $indicators; + }), ]) ->filtersFormMaxHeight('280px') ->actions([ @@ -3266,9 +3219,9 @@ class QualityValidationResource extends Resource ->bulkActions([ Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - Tables\Actions\ForceDeleteBulkAction::make(), - Tables\Actions\RestoreBulkAction::make(), + Tables\Actions\DeleteBulkAction::make(), + Tables\Actions\ForceDeleteBulkAction::make(), + Tables\Actions\RestoreBulkAction::make(), ]), ]) ->headerActions([ @@ -3276,20 +3229,19 @@ class QualityValidationResource extends Resource ->label('Import Quality Validations') ->color('warning') ->importer(QualityValidationImporter::class) - ->visible(function() { + ->visible(function () { return Filament::auth()->user()->can('view import quality validation'); }), ExportAction::make() ->label('Export Quality Validations') ->color('warning') ->exporter(QualityValidationExporter::class) - ->visible(function() { + ->visible(function () { return Filament::auth()->user()->can('view export quality validation'); }), ]); } - // public static function mutateFormDataBeforeCreate(array $data): array // { // $user =Filament::auth()->user();