Update targeting logic in trigger_campaign.php to fallback to parsing phone prefixes instead of relying solely on passenger_opening_locations

This commit is contained in:
Hamza-Ayed
2026-06-30 21:30:28 +03:00
parent fdd09d8f35
commit bd13cbb905

View File

@@ -67,13 +67,28 @@ try {
$smsBody = $aiCampaign['sms_body'] ?? 'اشتقنا لك! عد إلينا ووفر أكثر مع الرمز الترويجي الخاص بك.'; $smsBody = $aiCampaign['sms_body'] ?? 'اشتقنا لك! عد إلينا ووفر أكثر مع الرمز الترويجي الخاص بك.';
// 5. Target Passengers in the specified country // 5. Target Passengers in the specified country
// Check passenger_opening_locations for target audiences // Since phone numbers are encrypted, we fetch all passengers, decrypt, and filter by country prefix.
$sqlTarget = "SELECT DISTINCT l.passenger_id $sqlTarget = "SELECT id AS passenger_id, phone FROM passengers";
FROM passenger_opening_locations l
WHERE l.country_code = :country";
$stmtTarget = $con->prepare($sqlTarget); $stmtTarget = $con->prepare($sqlTarget);
$stmtTarget->execute([':country' => strtoupper($countryCode)]); $stmtTarget->execute();
$targets = $stmtTarget->fetchAll(PDO::FETCH_ASSOC); $allPassengers = $stmtTarget->fetchAll(PDO::FETCH_ASSOC);
$targets = [];
foreach ($allPassengers as $p) {
$decryptedPhone = $encryptionHelper->decryptData($p['phone']);
if (!$decryptedPhone) continue;
$cleanPhone = preg_replace('/[^0-9]/', '', $decryptedPhone);
$pCountry = '';
if (strpos($cleanPhone, '962') === 0 || strpos($cleanPhone, '07') === 0) $pCountry = 'JO';
elseif (strpos($cleanPhone, '963') === 0 || (strpos($cleanPhone, '09') === 0 && strlen($cleanPhone) == 10)) $pCountry = 'SY';
elseif (strpos($cleanPhone, '20') === 0 || (strpos($cleanPhone, '01') === 0 && strlen($cleanPhone) == 11)) $pCountry = 'EG';
elseif (strpos($cleanPhone, '964') === 0) $pCountry = 'IQ';
if ($pCountry === strtoupper($countryCode)) {
$targets[] = ['passenger_id' => $p['passenger_id'], 'decrypted_phone' => $decryptedPhone];
}
}
$sentFcm = 0; $sentFcm = 0;
$sentSms = 0; $sentSms = 0;