88 lines
3.6 KiB
PHP
88 lines
3.6 KiB
PHP
<?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>";
|
|
}
|
|
?>
|