requiredMapping() ->exampleHeader('Plant Name') ->example('Ransar Industries-I') ->label('Plant Name') ->relationship(resolveUsing: 'name') ->rules(['required']), ImportColumn::make('checkPointNames1') ->requiredMapping() ->exampleHeader('Check Point 1') ->example('STP BACKSIDE') ->label('Check Point 1') ->relationship(resolveUsing: 'name') ->rules(['required']), ImportColumn::make('checkPointNames2') ->requiredMapping() ->exampleHeader('Check Point 2') ->example('CANTEEN') ->label('Check Point 2') ->relationship(resolveUsing: 'name') ->rules(['required']), ImportColumn::make('sequence_number') ->requiredMapping() ->exampleHeader('Sequence Number') ->example('1') ->label('Sequence Number') ->integer() ->rules(['required']), ImportColumn::make('time_lapse') ->requiredMapping() ->exampleHeader('Time Lapse') ->example('1') ->label('Time Lapse') ->integer() ->rules(['required']), ImportColumn::make('time_lapse_cushioning') ->requiredMapping() ->exampleHeader('Time Lapse Cushioning') ->example('1') ->label('Time Lapse Cushioning') ->integer() ->rules(['required']), ImportColumn::make('created_by') ->requiredMapping() ->exampleHeader('Created By') ->example(Filament::auth()->user()->name ?? 'Admin') ->label('Created By') ->rules(['required']), ]; } public function resolveRecord(): ?CheckPointTime { $warnMsg = []; $plant = Plant::where('name', $this->data['plant'])->first(); $checkPointNames1 = null; $checkPointNames2 = null; if (!$plant) { $warnMsg[] = "Plant not found"; // '" . $this->data['plant'] . "' } else { $checkPointNames1 = CheckPointName::where('name', $this->data['checkPointNames1'])->first(); if (!$checkPointNames1) { $warnMsg[] = "Check point 1 not found"; } else { $checkPointNames2 = CheckPointName::where('name', $this->data['checkPointNames2'])->first(); if (!$checkPointNames2) { $warnMsg[] = "Check point 2 not found"; } else { if ($checkPointNames1->id === $checkPointNames2->id) { $warnMsg[] = "Check point 1 and 2 can't be the same"; } } } } if (Str::length($this->data['sequence_number']) < 1 || !is_numeric($this->data['sequence_number']) || $this->data['sequence_number'] <= 0) { $warnMsg[] = "Invalid sequence number found"; } if (Str::length($this->data['time_lapse']) < 1 || !is_numeric($this->data['time_lapse']) || $this->data['time_lapse'] <= 0) { $warnMsg[] = "Invalid time lapse found"; } if (Str::length($this->data['time_lapse_cushioning']) < 1 || !is_numeric($this->data['time_lapse_cushioning']) || $this->data['time_lapse_cushioning'] <= 0) { $warnMsg[] = "Invalid time lapse cushioning found"; } $createdBy = $this->data['created_by']; if (Str::length($createdBy) < 3) { // || !ctype_alnum($createdBy) $warnMsg[] = "Invalid created by name found"; } if (!empty($warnMsg)) { throw new RowImportFailedException(implode(', ', $warnMsg)); } return CheckPointTime::updateOrCreate([ 'plant_id' => $plant->id, 'check_point1_id' => $checkPointNames1->id, 'check_point2_id' => $checkPointNames2->id, 'sequence_number' => $this->data['sequence_number'] ], [ 'time_lapse' => $this->data['time_lapse'], 'time_lapse_cushioning' => $this->data['time_lapse_cushioning'], 'created_by' => $this->data['created_by'] ] ); // // return CheckPointTime::firstOrNew([ // // // Update existing records, matching them by `$this->data['column_name']` // // 'email' => $this->data['email'], // // ]); // return new CheckPointTime(); } public static function getCompletedNotificationBody(Import $import): string { $body = 'Your check point time import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.'; if ($failedRowsCount = $import->getFailedRowsCount()) { $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.'; } return $body; } }