prepare("SELECT id FROM transit_orgs WHERE name_ar=? AND country=? LIMIT 1"); $chk->execute([$nameAr, $country]); if ($chk->fetch()) jsonError('Organization already exists', 409); $adminPhoneEnc = $encryptionHelper->encryptData($adminPhone); $contactPhoneRaw = normalizePhone(filterRequest('contact_phone') ?? ''); $contactPhoneEnc = $contactPhoneRaw ? $encryptionHelper->encryptData($contactPhoneRaw) : null; $transit_con->beginTransaction(); try { $transit_con->prepare( "INSERT INTO transit_orgs (type,country,city,name_ar,name_en,contact_phone,contact_email,website,contract_status,trial_ends_at) VALUES (?,?,?,?,?,?,?,?,'trial',?)" )->execute([$type,$country,$city,$nameAr,$nameEn,$contactPhoneEnc, filterRequest('contact_email'),filterRequest('website'),$trialEndsAt]); $orgId = (int)$transit_con->lastInsertId(); $transit_con->prepare( "INSERT INTO transit_org_admins (org_id, name, phone, role) VALUES (?,?,?,?)" )->execute([$orgId, $adminName, $adminPhoneEnc, $adminRole]); $transit_con->commit(); } catch (Throwable $e) { $transit_con->rollBack(); appLog('[TRANSIT][ORG][register] ' . $e->getMessage(), 'ERROR'); jsonError('Failed to create organization', 500); } jsonSuccess(['org_id' => $orgId, 'name_ar' => $nameAr, 'type' => $type, 'country' => $country], 'Organization registered successfully');