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.
"; } ?>