getMessage() . "\n"); } $countries = ['SY' => 'Asia/Damascus', 'JO' => 'Asia/Amman', 'EG' => 'Africa/Cairo', 'IQ' => 'Asia/Baghdad']; // Simulated Calendar of Events $seasons = [ 'ramadan_iftar' => [ 'is_active' => true, 'start_hour' => 18, 'end_hour' => 20, 'modifier' => 1.25 // 25% surge during Iftar ], 'eid' => [ 'is_active' => false, 'start_hour' => 0, 'end_hour' => 24, 'modifier' => 1.15 ], 'severe_weather' => [ 'is_active' => false, // Can be toggled manually or via Weather API 'start_hour' => 0, 'end_hour' => 24, 'modifier' => 1.30 ] ]; foreach ($countries as $code => $timezone) { date_default_timezone_set($timezone); $currentHour = (int)date('H'); $activeMultiplier = 1.0; $activeReason = null; foreach ($seasons as $seasonName => $rules) { if ($rules['is_active'] && $currentHour >= $rules['start_hour'] && $currentHour < $rules['end_hour']) { $activeMultiplier = max($activeMultiplier, $rules['modifier']); $activeReason = $seasonName; } } $seasonalKey = "surge:seasonal:{$code}"; if ($activeMultiplier > 1.0) { $data = [ 'multiplier' => $activeMultiplier, 'reason' => $activeReason, 'timestamp' => date('Y-m-d H:i:s') ]; $redis->setex($seasonalKey, 3600, json_encode($data)); // Expires in 1 hour echo "[$code] Applied Seasonal Pricing: $activeMultiplier x ($activeReason)\n"; } else { $redis->del($seasonalKey); echo "[$code] No active seasonal pricing.\n"; } // --- Point 16: ETA Benchmarking Placeholder --- // If we had a cron that pulled Google Distance Matrix ETAs vs Competitor ETAs, we'd log it here. // echo "[$code] ETA Benchmark recorded.\n"; } echo "Done.\n";