116 lines
5.3 KiB
PHP
116 lines
5.3 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\ImportEntity;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class ImportEntitySeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$defs = [
|
|
[
|
|
'key' => 'person',
|
|
'canonical_root' => 'person',
|
|
'label' => 'Person',
|
|
'fields' => ['first_name', 'last_name', 'full_name', 'gender', 'birthday', 'tax_number', 'social_security_number', 'description'],
|
|
'field_aliases' => [
|
|
'dob' => 'birthday',
|
|
'date_of_birth' => 'birthday',
|
|
'name' => 'full_name',
|
|
],
|
|
'aliases' => ['person'],
|
|
'rules' => [
|
|
['pattern' => '/^(ime|first\s*name|firstname)\b|\bime\b/i', 'field' => 'first_name'],
|
|
['pattern' => '/^(priimek|last\s*name|lastname)\b|\bpriimek\b/i', 'field' => 'last_name'],
|
|
['pattern' => '/^(naziv|ime\s+in\s+priimek|full\s*name|name)\b|\bnaziv\b/i', 'field' => 'full_name'],
|
|
['pattern' => '/^(davcna|davčna|tax|tax\s*number|tin)\b/i', 'field' => 'tax_number'],
|
|
['pattern' => '/^(emso|emšo|ssn|social|social\s*security)\b/i', 'field' => 'social_security_number'],
|
|
['pattern' => '/^(spol|gender)\b/i', 'field' => 'gender'],
|
|
['pattern' => '/^(rojstvo|datum\s*rojstva|dob|birth|birthday|date\s*of\s*birth)\b/i', 'field' => 'birthday'],
|
|
['pattern' => '/^(komentar|opis|opomba|comment|description|note)\b/i', 'field' => 'description'],
|
|
],
|
|
'ui' => ['order' => 1],
|
|
],
|
|
[
|
|
'key' => 'person_addresses',
|
|
'canonical_root' => 'address',
|
|
'label' => 'Person Addresses',
|
|
'fields' => ['address', 'country', 'type_id', 'description'],
|
|
'aliases' => ['address', 'person_addresses'],
|
|
'rules' => [
|
|
['pattern' => '/^(naslov|ulica|address)\b/i', 'field' => 'address'],
|
|
['pattern' => '/^(drzava|država|country)\b/i', 'field' => 'country'],
|
|
],
|
|
'ui' => ['order' => 2],
|
|
],
|
|
[
|
|
'key' => 'person_phones',
|
|
'canonical_root' => 'phone',
|
|
'label' => 'Person Phones',
|
|
'fields' => ['nu', 'country_code', 'type_id', 'description'],
|
|
'field_aliases' => ['number' => 'nu'],
|
|
'aliases' => ['phone', 'person_phones'],
|
|
'rules' => [
|
|
['pattern' => '/^(telefon|tel\.?|gsm|mobile|phone|kontakt)\b/i', 'field' => 'nu'],
|
|
],
|
|
'ui' => ['order' => 3],
|
|
],
|
|
[
|
|
'key' => 'emails',
|
|
'canonical_root' => 'email',
|
|
'label' => 'Emails',
|
|
'fields' => ['value', 'is_primary', 'label'],
|
|
'field_aliases' => ['email' => 'value'],
|
|
'aliases' => ['email', 'emails'],
|
|
'rules' => [
|
|
['pattern' => '/^(email|e-?mail|mail)\b/i', 'field' => 'value'],
|
|
],
|
|
'ui' => ['order' => 4],
|
|
],
|
|
[
|
|
'key' => 'contracts',
|
|
'canonical_root' => 'contract',
|
|
'label' => 'Contracts',
|
|
'fields' => ['reference', 'start_date', 'end_date', 'description', 'type_id', 'client_case_id'],
|
|
'aliases' => ['contract', 'contracts', 'contracs'],
|
|
'rules' => [
|
|
['pattern' => '/^(sklic|reference|ref)\b/i', 'field' => 'reference'],
|
|
['pattern' => '/^(od|from|start|zacetek|začetek)\b/i', 'field' => 'start_date'],
|
|
['pattern' => '/^(do|to|end|konec)\b/i', 'field' => 'end_date'],
|
|
['pattern' => '/^(komentar|opis|opomba|comment|description|note)\b/i', 'field' => 'description'],
|
|
],
|
|
'ui' => ['order' => 5],
|
|
],
|
|
[
|
|
'key' => 'accounts',
|
|
'canonical_root' => 'account',
|
|
'label' => 'Accounts',
|
|
'fields' => ['reference', 'initial_amount', 'balance_amount', 'contract_id', 'contract_reference', 'type_id', 'active', 'description'],
|
|
'aliases' => ['account', 'accounts'],
|
|
'rules' => [
|
|
['pattern' => '/^(dolg|znesek|amount|saldo|balance|debt)\b/i', 'field' => 'balance_amount'],
|
|
['pattern' => '/^(sklic|reference|ref)\b/i', 'field' => 'reference'],
|
|
],
|
|
'ui' => ['order' => 6],
|
|
],
|
|
[
|
|
'key' => 'client_cases',
|
|
'canonical_root' => 'client_case',
|
|
'label' => 'Client Cases',
|
|
'fields' => ['client_ref'],
|
|
'aliases' => ['client_case', 'client_cases', 'case', 'primeri', 'primer'],
|
|
'rules' => [
|
|
['pattern' => '/^(client\s*ref|client_ref|case\s*ref|case_ref|primer|primeri|zadeva)\b/i', 'field' => 'client_ref'],
|
|
],
|
|
'ui' => ['order' => 7],
|
|
],
|
|
];
|
|
|
|
foreach ($defs as $d) {
|
|
ImportEntity::updateOrCreate(['key' => $d['key']], $d);
|
|
}
|
|
}
|
|
}
|