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 (?,?,?,?,?,?,?,?,'active',?)" )->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('[ADMIN][TRANSIT][ORG][create] ' . $e->getMessage(), 'ERROR'); jsonError('Failed to create organization', 500); } jsonSuccess([ 'org_id' => $orgId, 'name_ar' => $nameAr, 'type' => $type, 'country' => $country, ], 'Organization created successfully');