diff --git a/backend/Admin/marketing/trigger_campaign.php b/backend/Admin/marketing/trigger_campaign.php index eb579c8f..cc415080 100644 --- a/backend/Admin/marketing/trigger_campaign.php +++ b/backend/Admin/marketing/trigger_campaign.php @@ -67,13 +67,28 @@ try { $smsBody = $aiCampaign['sms_body'] ?? 'اشتقنا لك! عد إلينا ووفر أكثر مع الرمز الترويجي الخاص بك.'; // 5. Target Passengers in the specified country - // Check passenger_opening_locations for target audiences - $sqlTarget = "SELECT DISTINCT l.passenger_id - FROM passenger_opening_locations l - WHERE l.country_code = :country"; + // Since phone numbers are encrypted, we fetch all passengers, decrypt, and filter by country prefix. + $sqlTarget = "SELECT id AS passenger_id, phone FROM passengers"; $stmtTarget = $con->prepare($sqlTarget); - $stmtTarget->execute([':country' => strtoupper($countryCode)]); - $targets = $stmtTarget->fetchAll(PDO::FETCH_ASSOC); + $stmtTarget->execute(); + $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; $sentSms = 0;