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] . "
";
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
";
continue; // Lewati iterasi jika format tidak valid
}
}
echo "Aktif => " . $activetime . "
";
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.
";
$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 . "
";
$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.
";
}
?>