changes to sms packages and option to create user

This commit is contained in:
Simon Pocrnjič
2025-11-06 21:54:07 +01:00
parent ad8e0d5cee
commit 1395b72ae8
102 changed files with 1386 additions and 319 deletions
+44 -5
View File
@@ -1237,7 +1237,9 @@ private function simulateGenericRoot(
$entity['country'] = $val('address.country') ?? null;
break;
case 'phone':
$entity['nu'] = $val('phone.nu') ?? null;
$rawNu = $val('phone.nu') ?? null;
// Strip all non-numeric characters from phone number
$entity['nu'] = $rawNu !== null ? preg_replace('/[^0-9]/', '', (string) $rawNu) : null;
break;
case 'email':
$entity['value'] = $val('email.value') ?? null;
@@ -1246,6 +1248,11 @@ private function simulateGenericRoot(
$entity['title'] = $val('client_case.title') ?? null;
$entity['status'] = $val('client_case.status') ?? null;
break;
case 'case_object':
$entity['name'] = $val('case_object.name') ?? null;
$entity['description'] = $val('case_object.description') ?? null;
$entity['type'] = $val('case_object.type') ?? null;
break;
}
if ($verbose) {
@@ -1313,7 +1320,8 @@ private function genericIdentityCandidates(string $root, callable $val): array
case 'phone':
$nu = $val('phone.nu');
if ($nu) {
$norm = preg_replace('/\D+/', '', (string) $nu) ?? '';
// Strip all non-numeric characters from phone number
$norm = preg_replace('/[^0-9]/', '', (string) $nu) ?? '';
return $norm ? ['nu:'.$norm] : [];
}
@@ -1346,6 +1354,20 @@ private function genericIdentityCandidates(string $root, callable $val): array
}
return [];
case 'case_object':
$ref = $val('case_object.reference');
$name = $val('case_object.name');
$ids = [];
if ($ref) {
// Normalize reference (remove spaces)
$normRef = preg_replace('/\s+/', '', trim((string) $ref));
$ids[] = 'ref:'.$normRef;
}
if ($name) {
$ids[] = 'name:'.mb_strtolower(trim((string) $name));
}
return $ids;
default:
return [];
}
@@ -1366,7 +1388,8 @@ private function loadExistingGenericIdentities(string $root): array
case 'phone':
foreach (\App\Models\Person\PersonPhone::query()->pluck('nu') as $p) {
if ($p) {
$set['nu:'.preg_replace('/\D+/', '', (string) $p)] = true;
// Strip all non-numeric characters from phone number
$set['nu:'.preg_replace('/[^0-9]/', '', (string) $p)] = true;
}
}
break;
@@ -1391,6 +1414,18 @@ private function loadExistingGenericIdentities(string $root): array
}
}
break;
case 'case_object':
foreach (\App\Models\CaseObject::query()->get(['reference', 'name']) as $rec) {
if ($rec->reference) {
// Normalize reference (remove spaces)
$normRef = preg_replace('/\s+/', '', trim((string) $rec->reference));
$set['ref:'.$normRef] = true;
}
if ($rec->name) {
$set['name:'.mb_strtolower(trim((string) $rec->name))] = true;
}
}
break;
}
} catch (\Throwable) {
// swallow and return what we have
@@ -1411,6 +1446,7 @@ private function modelClassForGeneric(string $root): ?string
'activity' => \App\Models\Activity::class,
'client' => \App\Models\Client::class,
'client_case' => \App\Models\ClientCase::class,
'case_object' => \App\Models\CaseObject::class,
][$root] ?? null;
}
@@ -1563,7 +1599,8 @@ private function simulateGenericRootMulti(
} elseif ($root === 'phone') {
$nu = $groupVals('phone', 'nu')[$g] ?? null;
if ($nu) {
$norm = preg_replace('/\D+/', '', (string) $nu) ?? '';
// Strip all non-numeric characters from phone number
$norm = preg_replace('/[^0-9]/', '', (string) $nu) ?? '';
if ($norm) {
$identityCandidates = ['nu:'.$norm];
}
@@ -1615,7 +1652,9 @@ private function simulateGenericRootMulti(
if ($root === 'email') {
$entity['value'] = $groupVals('email', 'value')[$g] ?? null;
} elseif ($root === 'phone') {
$entity['nu'] = $groupVals('phone', 'nu')[$g] ?? null;
$rawNu = $groupVals('phone', 'nu')[$g] ?? null;
// Strip all non-numeric characters from phone number
$entity['nu'] = $rawNu !== null ? preg_replace('/[^0-9]/', '', (string) $rawNu) : null;
} elseif ($root === 'address') {
$entity['address'] = $groupVals('address', 'address')[$g] ?? null;
$entity['country'] = $groupVals('address', 'country')[$g] ?? null;