'setChecklist', 'checklist-cancelled' => 'handleChecklistCancel', 'checklist-saved' => 'checkListSaved', 'trigger-create' => 'doCreate', ]; public function setChecklist($checklist) { $this->data['checklist'] = $checklist; } public function doCreate() { $this->create(); } public function mount(): void { parent::mount(); session()->forget([ 'last_selected_plant_id', 'last_selected_line', 'last_selected_production', ]); } public function handleChecklistCancel() { $this->skipChecklistValidation = true; $this->showChecklist = false; } protected function mutateFormDataBeforeCreate(array $data): array { if ($this->shouldSkipChecklist) { return $data; } if ($this->checkIfHasCharacteristics($data)) { $this->showChecklist = true; $this->halt(); } return $data; } protected function checkIfHasCharacteristics(array $data) { $plantId = $data['plant_id'] ?? null; $itemCode = $data['item_id'] ?? null; $lineId = $data['line_id'] ?? null; if (!$plantId || !$itemCode || !$lineId) { return false; } $item = \App\Models\Item::where('code', $itemCode) ->where('plant_id', $plantId) ->first(); if (!$item) { $this->existingRecords = collect(); return false; } $this->existingRecords = ProductCharacteristicsMaster::where('plant_id', $plantId) ->where('item_id', $item->id) ->where('line_id', $lineId) ->get(); } public function checkListSaved() { $this->showChecklist = false; $plantId = $this->data['plant_id'] ?? null; $lineId = $this->data['line_id'] ?? null; $productionOrder = $this->data['production_order'] ?? null; return redirect()->to( static::getResource()::getUrl('create', [ 'plant_id' => $this->data['plant_id'] ?? null, 'line_id' => $this->data['line_id'] ?? null, 'production_order' => $this->data['production_order'] ?? null, ]) ); } protected function beforeCreate(): void { $errors = []; if (!empty($this->data['validationError'])) { $errors['validationError'] = ['Fix the errors before submitting.']; } if (!empty($this->data['pack_slip_motor_error'])) { $errors['pack_slip_motor_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['pack_slip_pump_error'])) { $errors['pack_slip_pump_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['pack_slip_pumpset_error'])) { $errors['pack_slip_pumpset_error'] = ['Fix the errors before submitting.']; } //..name plate if (!empty($this->data['name_plate_motor_error'])) { $errors['name_plate_motor_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['name_plate_pump_error'])) { $errors['name_plate_pump_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['name_plate_pumpset_error'])) { $errors['name_plate_pumpset_error'] = ['Fix the errors before submitting.']; } //..tube sticker if (!empty($this->data['tube_sticker_motor_error'])) { $errors['tube_sticker_motor_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['tube_sticker_pump_error'])) { $errors['tube_sticker_pump_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['tube_sticker_pumpset_error'])) { $errors['tube_sticker_pumpset_error'] = ['Fix the errors before submitting.']; } //..warranty if (!empty($this->data['warranty_card_error'])) { $errors['warranty_card_error'] = ['Fix the errors before submitting.']; } //..part validations if (!empty($this->data['part_validation1_error'])) { $errors['part_validation1_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['part_validation2_error'])) { $errors['part_validation2_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['part_validation3_error'])) { $errors['part_validation3_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['part_validation4_error'])) { $errors['part_validation4_error'] = ['Fix the errors before submitting.']; } if (!empty($this->data['part_validation5_error'])) { $errors['part_validation5_error'] = ['Fix the errors before submitting.']; } if (!empty($errors)) { throw ValidationException::withMessages($errors); } $this->checkExisting(); $checklist = $this->data['data']['checklist'] ?? []; if (count($this->existingRecords) > 0){ $this->showChecklist = true; $this->halt(); } else{ $this->showChecklist = false; } } public function checkExisting() { $plant_id = $this->data['plant_id'] ?? null; $item_code = $this->data['item_id'] ?? null; $line_id = $this->data['line_id'] ?? null; $item = \App\Models\Item::where('code', $item_code)->where('plant_id', $plant_id)->first(); if (!$item) { $this->existingRecords = collect(); return; } $item_id = $item->id; $this->existingRecords = ProductCharacteristicsMaster::where('plant_id', $plant_id) ->where('item_id', $item_id) ->where('line_id', $line_id) ->get(); } protected function afterCreate(): void { // Get the value from the hidden field 'plant' $plant = $this->form->getState()['plant'] ?? null; $line = $this->form->getState()['line'] ?? null; $production = $this->form->getState()['production'] ?? null; // $this->skipChecklistValidation = false; // $this->showChecklist = false; // $this->checklist = []; // $this->form->fill(); // reset checklist $this->checklist = []; $this->skipChecklistValidation = false; $this->showChecklist = false; $this->form->fill([]); $this->data = []; $this->resetValidation(); $this->resetErrorBag(); $this->form->fill([ 'plant_id' => null, 'line_id' => null, 'production_order' => null, ]); // $this->dispatch('focus-item-id'); session()->flash('focus_item_id_after_redirect', true); logger('Focus flag set in session'); if ($plant) { session(['last_selected_plant_id' => $plant]); } if ($line) { session(['last_selected_line' => $line]); } if ($production) { session(['last_selected_production' => $production]); } } protected function getRedirectUrl(): string { //return $this->getResource()::getUrl('create'); // Stay on Create Page after savin return $this->getResource()::getUrl('create', [ 'plant_id' => $this->data['plant_id'] ?? null, 'line_id' => $this->data['line_id'] ?? null, 'production_order' => $this->data['production_order'] ?? null, ]); } }