<?php 
include "/www/wwwroot/bilspro/config/connect.php";
// include "../config/connect.php";
// Ambil data dari tabel setting_mikrotik
$stmt = $pdo->prepare("SELECT id, hsa FROM setting_mikrotik WHERE hsa != ''");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

if ($rows) {
    foreach ($rows as $row) {
        $id = $row['id'];
        $hsa = $row['hsa'];

        // Ambil data pelanggan berdasarkan id_setting_mikrotik
        $stmtPel = $pdo->prepare("SELECT id, voucher, durasi FROM v_ganerate_voucher WHERE id_setting_mikrotik = :id AND active_time IS NULL");
        $stmtPel->bindValue(':id', $id);
        $stmtPel->execute();
        $pel = $stmtPel->fetchAll(PDO::FETCH_ASSOC);

        // Proses setiap data voucher
        foreach ($pel as $key) {
            $voucher = $key['voucher'];
            $durasi = $key['durasi'];

            if (preg_match("/" . preg_quote($voucher, '/') . "/i", $hsa)) {
                // Cari nama awalan dan ambil bagian data setelahnya
                $cari00 = stristr($hsa, $voucher);
                // Ambil data hingga tanda '|'
                $cari02 = strtok($cari00, "|");
                // Rubah ke array
                $data = explode("_", $cari02);
                
                // Pastikan ada cukup elemen di $data
                if (count($data) < 2) {
                    continue; // Lewati jika tidak ada cukup data
                }

                // Hapus titik dan periksa format tanggal
                $modifiedDateTime = str_replace('.', ' ', trim($data[1]));
                echo "Voucher: " . $data[0] . "<br>";

                if (substr($modifiedDateTime, 0, 4) == date('Y')) {
                    $activetime = $modifiedDateTime;
                } else {
                    $date = date_create_from_format("M/d/Y H:i:s", $modifiedDateTime);
                    if ($date !== false) {
                        $activetime = date_format($date, "Y-m-d H:i:s");
                    } else {
                        echo "Format tanggal tidak valid: $modifiedDateTime<br>";
                        continue; // Lewati iterasi jika format tidak valid
                    }
                }

                echo "Aktif => " . $activetime . "<br>";
                
                if (substr($durasi, -1) == 'H') {
                    $inter = "PT" . $durasi; // Untuk durasi dalam jam
                } elseif (substr($durasi, -1) == 'D') {
                    $inter = "P" . $durasi; // Untuk durasi dalam hari
                } elseif(substr($durasi, -1) == 'M') {
                    $inter = "P" . $durasi;
                } else {
                    // Tangani kasus jika format durasi tidak valid
                    echo "Format durasi tidak valid.<br>";
                    $inter = null; // Atau tentukan nilai default
                }
                
                // Menggunakan DateInterval untuk menambahkan durasi
                $Tgl = new DateTime($activetime);
                $interval = new DateInterval($inter); // Durasi dalam jam
                $Tgl->add($interval); 
                $Expaired = $Tgl->format('Y-m-d H:i:s');

                echo "Expaired => " . $Expaired . "<br>";
                
                $stmtUpdate = $pdo->prepare("UPDATE ganerate_voucher SET active_time = :active_time, expaired_time = :expaired_time WHERE id = :idgen");
                $stmtUpdate->execute([
                    ':active_time' => $activetime,
                    ':expaired_time' => $Expaired,
                    ':idgen' => $key['id']
                ]);
            }
        }
    }
} else {
    echo "No data found.<br>";
}
?>