<?php

// Konfigurasi koneksi database
require_once 'config.php';

date_default_timezone_set('Asia/Makassar'); 

$now = strtotime('now');
$allowedTime = strtotime('21:00');

// ⏰ Batasi hanya boleh jalan setelah 21:00 WITA
if ($now < $allowedTime) {
    exit("⏰ Script hanya boleh jalan setelah 21:00 WITA.\n");
}

// 📌 Cegah lebih dari 1x sehari
$today = date('Y-m-d');
$flagDir = __DIR__ . '/flags';
if (!is_dir($flagDir)) {
    mkdir($flagDir, 0777, true);
}
$flagFile = $flagDir . '/laporan-' . $today . '.lock';

if (file_exists($flagFile)) {
    exit("✅ Laporan sudah dikirim hari ini.\n");
}


// Periksa koneksi
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}

function runQuery($conn, $query)
{
    $result = $conn->query($query);
    if ($result === false) {
        die("Error: " . $conn->error);
    }
    return $result;
}

// Mengambil token API Fonnte dan nomor telepon dari database
$settingsResult = runQuery($conn, "SELECT api_fonnte, phone, title FROM tbl_settings LIMIT 1");
$settingsRow = $settingsResult->fetch_assoc();
$apiToken = $settingsRow['api_fonnte'];
$phoneNumbers = $settingsRow['phone'];
$title = $settingsRow['title'];

// Mengambil nomor telepon dan memisahkannya dengan koma
$phoneNumbersArray = explode(',', $phoneNumbers);


$tanggal_hari_ini = date("Y-m-d");

// ======== Query Laporan Penjualan ========
$sql_penjualan = "SELECT j.jual_total, j.jual_tipe_bayar 
                  FROM tbl_jual j
                  WHERE DATE(j.jual_tanggal) = '$tanggal_hari_ini'";

$result_penjualan = $conn->query($sql_penjualan);

$totalPenjualan = 0;
$totalCash = 0;
$totalKredit = 0;

if ($result_penjualan->num_rows > 0) {
    while ($row = $result_penjualan->fetch_assoc()) {
        $totalPenjualan += $row["jual_total"];
        if ($row["jual_tipe_bayar"] === "CASH") {
            $totalCash += $row["jual_total"];
        } else {
            $totalKredit += $row["jual_total"];
        }
    }
}

// ======== Query Laporan Piutang Baru ========
$sql_piutang = "SELECT pel.pelanggan_nama, p.piutang_total 
                FROM tbl_piutang p
                JOIN tbl_pelanggan pel ON p.piutang_pelanggan_id = pel.pelanggan_id
                WHERE DATE(p.created_at) = '$tanggal_hari_ini'";

$result_piutang = $conn->query($sql_piutang);

$totalPiutang = 0;
$detailPiutang = "";

if ($result_piutang->num_rows > 0) {
    while ($row = $result_piutang->fetch_assoc()) {
        $totalPiutang += $row["piutang_total"];
        $detailPiutang .= "- *" . $row["pelanggan_nama"] . "*: Rp " . number_format($row["piutang_total"], 0, ',', '.') . "\n";
    }
} else {
    $detailPiutang = "Tidak ada piutang baru hari ini.\n";
}

// ======== Query Laporan Angsuran Piutang ========
$sql_angsuran = "SELECT pel.pelanggan_nama, dp.d_piutang_angsuran 
                 FROM tbl_detail_piutang dp
                 JOIN tbl_piutang p ON dp.d_piutang_id = p.piutang_id
                 JOIN tbl_pelanggan pel ON p.piutang_pelanggan_id = pel.pelanggan_id
                 WHERE dp.d_piutang_tanggal = CURDATE()";

$result_angsuran = $conn->query($sql_angsuran);

$totalAngsuran = 0;
$detailAngsuran = "";

if ($result_angsuran->num_rows > 0) {
    while ($row = $result_angsuran->fetch_assoc()) {
        $totalAngsuran += $row["d_piutang_angsuran"];
        $detailAngsuran .= "- *" . $row["pelanggan_nama"] . "*: Rp " . number_format($row["d_piutang_angsuran"], 0, ',', '.') . "\n";
    }
} else {
    $detailAngsuran = "-\n";
}

// ======== Query Laporan Pengeluaran ========
$sql_pengeluaran = "SELECT deskripsi, total FROM tbl_pengeluaran WHERE DATE(tanggal) = CURDATE()";
$result_pengeluaran = $conn->query($sql_pengeluaran);

$totalPengeluaran = 0;
$detailPengeluaran = "";

if ($result_pengeluaran->num_rows > 0) {
    while ($row = $result_pengeluaran->fetch_assoc()) {
        $totalPengeluaran += $row["total"];
        $detailPengeluaran .= "- *" . $row["deskripsi"] . "*: Rp " . number_format($row["total"], 0, ',', '.') . "\n";
    }
} else {
    $detailPengeluaran = "-\n";
}

// Tutup koneksi database
$conn->close();

if ($totalPenjualan == 0 && $totalPiutang == 0 && $totalAngsuran == 0 && $totalPengeluaran == 0) {
    $pesan = "📊 *Laporan $title ($tanggal_hari_ini)* 📊\n\n";
    $pesan .= "🚫 Tidak ada transaksi hari ini.\n";
} else {
    // ======== Format Pesan WhatsApp ========
    $pesan = "📊 *Laporan penjualan $title ($tanggal_hari_ini)* 📊\n\n";

    $pesan .= "🔹 *Penjualan:*\n";
    $pesan .= "   - 💰 Total Penjualan: Rp " . number_format($totalPenjualan, 0, ',', '.') . "\n";
    $pesan .= "   - 🏦 Cash: Rp " . number_format($totalCash, 0, ',', '.') . "\n";
    $pesan .= "   - 📑 Kredit: Rp " . number_format($totalKredit, 0, ',', '.') . "\n\n";

    $pesan .= "📝 *Piutang Baru:*\n";
    $pesan .= "   - 🏷 Total Piutang: Rp " . number_format($totalPiutang, 0, ',', '.') . "\n";
    $pesan .= $detailPiutang . "\n";

    $pesan .= "💳 *Angsuran Piutang:*\n";
    $pesan .= "   - 💵 Total Angsuran: Rp " . number_format($totalAngsuran, 0, ',', '.') . "\n";
    $pesan .= $detailAngsuran . "\n";

    $pesan .= "📉 *Pengeluaran:*\n";
    $pesan .= "   - 🏦 Total Pengeluaran: Rp " . number_format($totalPengeluaran, 0, ',', '.') . "\n";
    $pesan .= $detailPengeluaran . "\n";

    $pesan .= "\n✅ Terima kasih!";
}



// ======== Kirim ke WhatsApp menggunakan API Fonnte ========
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.fonnte.com/send',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => array(
        'target' => implode(',', $phoneNumbersArray), // Ganti dengan nomor tujuan
        'message' => $pesan,
        'delay' => '50',
        'countryCode' => '62', // Kode negara
    ),
    CURLOPT_HTTPHEADER => array(
        'Authorization: ' . $apiToken // Ganti dengan token Fonnte Anda
    ),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;

file_put_contents($flagFile, "done");
