<?php

require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../config/AppConfig.php';
require_once __DIR__ . '/../classes/Database.php';
require_once __DIR__ . '/../classes/BotHandler.php';

use Config\AppConfig;
use Bot\Database;
use Bot\BotHandler;

// Parse CLI options
$options = getopt("", ["mode:"]);
$mode = $options['mode'] ?? 'morning';

$db = new Database();
$bot = new BotHandler(null, null, null, null);

// Fetch all registered group chats
$chatsQuery = "SELECT lc.*, e.city, e.first_name, e.last_name FROM leader_chats lc JOIN explorers e ON lc.leader_id = e.chat_id";
$chatsResult = $db->dbQuery($chatsQuery);

function getJalaliDate() {
    $jalali = \Config\jdf::gregorian_to_jalali(intval(date('Y')), intval(date('m')), intval(date('d')));
    return sprintf('%04d/%02d/%02d', $jalali[0], $jalali[1], $jalali[2]);
}

function getWeatherInfo($city) {
    if (empty($city)) return ['temp' => 20, 'desc' => 'صاف', 'raw' => 'Sunny'];
    
    $url = "https://wttr.in/" . urlencode($city) . "?format=j1";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    $res = curl_exec($ch);
    curl_close($ch);

    if ($res) {
        $data = json_decode($res, true);
        if (isset($data['current_condition'][0])) {
            $cc = $data['current_condition'][0];
            $temp = intval($cc['temp_C']);
            $desc = $cc['lang_fa'][0]['value'] ?? $cc['weatherDesc'][0]['value'] ?? 'صاف';
            return ['temp' => $temp, 'desc' => $desc, 'raw' => $cc['weatherDesc'][0]['value']];
        }
    }
    return ['temp' => 22, 'desc' => 'نامشخص', 'raw' => 'Clear'];
}

function getQuote() {
    $quotes = [
        ["text" => "طبیعت بهترین درمانگر روح است.", "author" => "سهراب سپهری"],
        ["text" => "در دل هر زمستان، بهاری در حال جوانه زدن است.", "author" => "جبران خلیل جبران"],
        ["text" => "سفر کردن انسان‌ها را فروتن می‌کند؛ زیرا می‌فهمید چقدر در این دنیا کوچک هستید.", "author" => "گوستاو فلوبر"],
        ["text" => "زندگی یا یک ماجراجویی شجاعانه است یا هیچ چیز نیست.", "author" => "هلن کلر"],
        ["text" => "کوهستان‌ها صدا می‌زنند و من باید بروم.", "author" => "جان مویر"],
        ["text" => "طبیعت هیچ‌گاه عجله نمی‌کند، با این حال همه چیز انجام می‌شود.", "author" => "لائو تزو"],
        ["text" => "زمین موسیقی خود را برای کسانی که گوش می‌دهند می‌نوازد.", "author" => "ویلیام شکسپیر"]
    ];
    return $quotes[array_rand($quotes)];
}

$chats = [];
if ($chatsResult) {
    while ($row = $chatsResult->fetch_assoc()) {
        $chats[] = $row;
    }
}

if ($mode === 'morning') {
    $jalaliDate = getJalaliDate();
    foreach ($chats as $chat) {
        $city = $chat['city'] ?? 'تهران';
        $weather = getWeatherInfo($city);
        
        $clothing = "لباس نخی، خنک و کلاه نقاب‌دار";
        if ($weather['temp'] < 15) {
            $clothing = "کاپشن، لباس گرم چندلایه و بادگیر";
        } elseif ($weather['temp'] >= 15 && $weather['temp'] < 25) {
            $clothing = "لباس بهاری راحت همراه با یک سوئیشرت سبک";
        }

        $text = "🌅 <b>سلام و درود! صبح زیبای طبیعت‌گردی بخیر</b> 🍃\n\n";
        $text .= "🗓 <b>امروز:</b> " . $jalaliDate . "\n";
        $text .= "📍 <b>وضعیت آب و هوای " . htmlspecialchars($city) . ":</b> " . htmlspecialchars($weather['desc']) . " (دمای فعلی: " . $weather['temp'] . "°C)\n";
        $text .= "👕 <b>پوشش مناسب امروز:</b> " . $clothing . "\n";
        $text .= "🎒 <b>لوازم پیشنهادی برای تور امروز:</b> کفش کوه‌پیمایی مناسب، عینک آفتابی، ضد آفتاب و بطری آب آشامیدنی.\n\n";
        $text .= "لحظات سرشار از آرامش و هیجان را در آغوش طبیعت برایتان آرزومندیم! 🥾⛰️";

        $bot->sendRequest("sendMessage", [
            "chat_id" => $chat['chat_id'],
            "text" => $text,
            "parse_mode" => "HTML"
        ]);
    }
} elseif ($mode === 'night') {
    $tomorrowGregorian = date('Y-m-d', strtotime('+1 day'));
    $quote = getQuote();

    foreach ($chats as $chat) {
        // Check if there is a tour tomorrow
        $stmt = $db->getConnection()->prepare("SELECT * FROM tours WHERE leader_id = ? AND start_date = ? LIMIT 1");
        $stmt->bind_param("is", $chat['leader_id'], $tomorrowGregorian);
        $stmt->execute();
        $tour = $stmt->get_result()->fetch_assoc();
        $stmt->close();

        $reminder = "🛌 فردا برنامه طبیعت‌گردی رسمی ثبت نشده است. فرصت خوبی برای استراحت و ریکاوری در کنار خانواده است! 🏡✨";
        if ($tour) {
            $reminder = "🏕️ <b>یادآوری برنامه فردا:</b>\n";
            $reminder .= "توران در برنامه «<b>" . htmlspecialchars($tour['title']) . "</b>» همراه ما باشید.\n";
            $reminder .= "📍 <b>مبدا حرکت:</b> " . htmlspecialchars($tour['origin_address']) . "\n";
            $reminder .= "⏰ <b>ساعت حرکت:</b> " . htmlspecialchars($tour['start_time']) . "\n";
            $reminder .= "⚠️ لطفا حداقل ۱۰ دقیقه قبل از ساعت حرکت در محل حاضر باشید.";
        }

        $text = "🌌 <b>شب بخیر همراهان طبیعت‌گرد</b> 🌟\n\n";
        $text .= $reminder . "\n\n";
        $text .= "📝 <b>جمله زیبای امشب:</b>\n";
        $text .= "<blockquote>«" . $quote['text'] . "»</blockquote>\n";
        $text .= "✍️ <i>" . $quote['author'] . "</i>\n\n";
        $text .= "فردا با انرژی مضاعف منتظر ماجراجویی‌های جدید هستیم. شب آرامی داشته باشید 🌙";

        $bot->sendRequest("sendMessage", [
            "chat_id" => $chat['chat_id'],
            "text" => $text,
            "parse_mode" => "HTML"
        ]);
    }
}

echo "Cron run completed successfully for mode: $mode.\n";
