requiredMapping() ->exampleHeader('Plant Name') ->example('Ransar Industries-I') ->label('Plant Name') ->relationship(resolveUsing: 'name') ->rules(['required']), ImportColumn::make('name') ->requiredMapping() ->exampleHeader('Check Point Name') ->example('STP BACKSIDE') ->label('Check Point Name') ->rules(['required']), ImportColumn::make('created_by') ->requiredMapping() ->exampleHeader('Created By') ->example(Filament::auth()->user()->name ?? 'Admin') ->label('Created By') ->rules(['required']), ]; } public function resolveRecord(): ?CheckPointName { $warnMsg = []; $plant = Plant::where('name', $this->data['plant'])->first(); if (!$plant) { $warnMsg[] = "Plant not found"; // '" . $this->data['plant'] . "' } if (Str::length($this->data['name']) < 3) { // || !ctype_alnum($this->data['name']) $warnMsg[] = "Invalid check point name 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 CheckPointName::updateOrCreate([ 'name' => $this->data['name'], 'plant_id' => $plant->id ], [ 'created_by' => $this->data['created_by'] ] ); // // return CheckPointName::firstOrNew([ // // // Update existing records, matching them by `$this->data['column_name']` // // 'email' => $this->data['email'], // // ]); // return new CheckPointName(); } public static function getCompletedNotificationBody(Import $import): string { $body = 'Your check point name 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; } }