Auto-provision Meet workspaces for Care video visit scheduling.
Deploy Ladill Meet / deploy (push) Successful in 1m34s

Care appointments can create Meet rooms for accounts that have never opened Meet, matching the Sales Centre provisioning path.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-12 14:14:19 +00:00
co-authored by Cursor
parent da8d64045b
commit 2a29c89f74
2 changed files with 8 additions and 6 deletions
@@ -33,7 +33,7 @@ class ServiceRoomController extends Controller
{ {
$validated = $this->validateRoomPayload($request); $validated = $this->validateRoomPayload($request);
if (($validated['source']['app'] ?? '') === 'sales_centre') { if (in_array(($validated['source']['app'] ?? ''), ['sales_centre', 'care'], true)) {
$this->salesCentreWorkspace->ensureHost($validated); $this->salesCentreWorkspace->ensureHost($validated);
} }
@@ -181,7 +181,7 @@ class ServiceRoomController extends Controller
return Organization::findOrFail($validated['organization_id']); return Organization::findOrFail($validated['organization_id']);
} }
if (($validated['source']['app'] ?? '') === 'sales_centre') { if (in_array(($validated['source']['app'] ?? ''), ['sales_centre', 'care'], true)) {
$host = User::where('public_id', $validated['host_user_ref'])->firstOrFail(); $host = User::where('public_id', $validated['host_user_ref'])->firstOrFail();
return $this->salesCentreWorkspace->ensureOrganization($host); return $this->salesCentreWorkspace->ensureOrganization($host);
@@ -23,7 +23,9 @@ class SalesCentreWorkspaceProvisioner
return User::updateOrCreate( return User::updateOrCreate(
['public_id' => $publicId], ['public_id' => $publicId],
[ [
'name' => trim((string) ($validated['host_name'] ?? '')) ?: 'Sales representative', 'name' => trim((string) ($validated['host_name'] ?? '')) ?: (
($validated['source']['app'] ?? '') === 'care' ? 'Care practitioner' : 'Sales representative'
),
'email' => $this->resolveEmail($publicId, $validated['host_email'] ?? null), 'email' => $this->resolveEmail($publicId, $validated['host_email'] ?? null),
], ],
); );
@@ -40,7 +42,7 @@ class SalesCentreWorkspaceProvisioner
return $existing; return $existing;
} }
$label = trim($host->name) !== '' ? $host->name.' workspace' : 'Sales workspace'; $label = trim($host->name) !== '' ? $host->name.' workspace' : 'Ladill Meet workspace';
$organization = Organization::create([ $organization = Organization::create([
'owner_ref' => $ref, 'owner_ref' => $ref,
@@ -49,8 +51,8 @@ class SalesCentreWorkspaceProvisioner
'timezone' => config('app.timezone', 'Africa/Accra'), 'timezone' => config('app.timezone', 'Africa/Accra'),
'settings' => [ 'settings' => [
'onboarded' => true, 'onboarded' => true,
'org_type' => 'sales', 'org_type' => 'suite',
'provisioned_by' => 'sales_centre', 'provisioned_by' => 'suite_service_api',
], ],
]); ]);