<?php
namespace App\Filament\Imports;
use App\Models\Contact;
use App\Models\EventContact;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
class ContactsImporter extends Importer
{
protected static ?string $model = Contact::class;
public static function getColumns(): array
{
return [
ImportColumn::make('name')
->requiredMapping()
->rules(['required', 'max:255']),
ImportColumn::make('surname')
->requiredMapping()
->rules(['required', 'max:255']),
ImportColumn::make('email')
->requiredMapping()
->rules(['required', 'max:255', 'email']),
ImportColumn::make('company')
->requiredMapping()
->rules(['required', 'max:255']),
];
}
public function resolveRecord(): ?Contact
{
$contact = Contact::firstOrNew([
'email' => $this->data['email'],
]);
EventContact::updateOrCreate([
'contact_id' => $contact->id,
'event_id' => $this->options['ownerRecordId'],
]);
return $contact;
}
}
<?php
namespace App\Filament\Imports;
use App\Models\Contact;
use App\Models\EventContact;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
class ContactsImporter extends Importer
{
protected static ?string $model = Contact::class;
public static function getColumns(): array
{
return [
ImportColumn::make('name')
->requiredMapping()
->rules(['required', 'max:255']),
ImportColumn::make('surname')
->requiredMapping()
->rules(['required', 'max:255']),
ImportColumn::make('email')
->requiredMapping()
->rules(['required', 'max:255', 'email']),
ImportColumn::make('company')
->requiredMapping()
->rules(['required', 'max:255']),
];
}
public function resolveRecord(): ?Contact
{
$contact = Contact::firstOrNew([
'email' => $this->data['email'],
]);
EventContact::updateOrCreate([
'contact_id' => $contact->id,
'event_id' => $this->options['ownerRecordId'],
]);
return $contact;
}
}