requiredMapping() ->exampleHeader('Plant Code') ->example('1000') ->label('Plant Code') ->relationship(resolveUsing: 'code') ->rules(['required']), ImportColumn::make('name') ->requiredMapping() ->exampleHeader('Guard Name') ->example('Shivaram') ->label('Guard Name') ->rules(['required']), ImportColumn::make('identification1') ->requiredMapping() ->exampleHeader('Identification 1') ->example('1234567890123456') ->label('Identification 1') ->rules(['required']), ImportColumn::make('identification2') ->requiredMapping() ->exampleHeader('Identification 2') ->example('') ->label('Identification 2'), ImportColumn::make('created_by') ->requiredMapping() ->exampleHeader('Created By') ->example(Filament::auth()->user()->name ?? 'Admin') ->label('Created By') ->rules(['required']), ]; } public function resolveRecord(): ?GuardName { $warnMsg = []; $plantCod = $this->data['plant']; $plant = null; if (Str::length($plantCod) < 4 || ! is_numeric($plantCod) || ! preg_match('/^[1-9]\d{3,}$/', $plantCod)) { $warnMsg[] = 'Invalid plant code found'; } else { $plant = Plant::where('code', $plantCod)->first(); if (! $plant) { $warnMsg[] = 'Plant not found'; // '" . $plantCod . "' } } if (Str::length($this->data['name']) < 3) { // || !ctype_alnum($this->data['name']) $warnMsg[] = 'Invalid guard name found'; } if (Str::length($this->data['identification1']) < 5) { $warnMsg[] = 'Invalid identification-1 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 GuardName::updateOrCreate([ 'name' => $this->data['name'], 'plant_id' => $plant->id, ], [ 'identification1' => $this->data['identification1'], 'identification2' => $this->data['identification2'], 'created_by' => $this->data['created_by'], ] ); // // return GuardName::firstOrNew([ // // // Update existing records, matching them by `$this->data['column_name']` // // 'email' => $this->data['email'], // // ]); // return new GuardName(); } public static function getCompletedNotificationBody(Import $import): string { $body = 'Your guard 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; } }