Add remaining project files (exclude ignored folders)

This commit is contained in:
WD - Dev
2025-07-05 15:11:40 +07:00
parent a96eb2b958
commit b440b80882
4697 changed files with 1365702 additions and 0 deletions
+622
View File
@@ -0,0 +1,622 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Agen Voucher Pascabayar</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Agen</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Mikrotik</label>
<select class="form-control" name="idm" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("setting_mikrotik",$SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Agen</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Nomor Whatsapp</label>
<input type="text" class="form-control" name="nomor" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Email Agen</label>
<input type="email" class="form-control" name="email" required="required">
</div>
<div class="form-group">
<label>Kode Agen</label>
<input type="text" class="form-control" name="kode" required="required">
</div>
<div class="form-group">
<label>Alamat</label>
<textarea class="form-control" rows="4" name="alamat" required="required"></textarea>
</div>
</div>
</div>
<a class="btn btn-link" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Option Form Tambahan
</a>
<div class="collapse" id="collapseExample">
<div class="card-body">
<label>Pilih Voucher Agen</label>
<div class="row">
<?php
$List->set_list("profile_paket", $SqlDataWHId. "AND status = '1'");
foreach ($List->get_list() as $key => $value):
//Kumpulkan semua ID
$ids_menu[] = $value['id'];
?>
<div class="col-md-4">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" value="<?php echo $value['id']; ?>" name="menu_ids[]" id="flexCheckDefault" checked>
<label class="form-check-label" for="flexCheckDefault">
<?php echo $value['nama'] . " ( Rp. ".number_format($value['harga_paket'])." )"; ?>
</label>
</div>
</div>
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$difference = array_diff($ids_menu, $_POST['menu_ids']);
if (empty($difference)) {
$paket_list = NULL;
} else {
$paket_list = implode(', ', $_POST['menu_ids']);
}
// Format nomor WhatsApp
if (substr($_POST['nomor'], 0, 2) == '62') {
$handphone = $_POST['nomor'];
} else {
$handphone = '62' . substr($_POST['nomor'], 1);
}
// Cek apakah nomor WhatsApp sudah terdaftar
$stmt = $pdo->prepare("SELECT nomor_whatsapp FROM agen_voucher WHERE nomor_whatsapp = :NoWhatsApp");
$stmt->execute([':NoWhatsApp' => $handphone]);
$ceknomor = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($ceknomor)) {
try {
// Generate password dan hash
$password = $_POST['kode'] . date('is');
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Insert data agen baru
$stmt = $pdo->prepare("INSERT INTO agen_voucher (id_data_server, id_setting_mikrotik, email, nama, alamat, nomor_whatsapp, kode_agen, status, profile, password, jenis_agen,list_paket) VALUES (:id_data_server, :id_setting_mikrotik, :email, :nama, :alamat, :nomor_whatsapp, :kode_agen, 'Aktif', 'member.png', :password, 'Pascabayar', :list_paket)");
$stmt->execute([
':id_data_server' => $_POST['ids'],
':id_setting_mikrotik' => $_POST['idm'],
':email' => $_POST['email'],
':nama' => $_POST['nama'],
':alamat' => $_POST['alamat'],
':nomor_whatsapp' => $handphone,
':kode_agen' => $_POST['kode'],
':password' => $hashedPassword,
':list_paket' => $paket_list
]);
//Kirim Pesan Registrasi Agen
$Pesan = "*Registrasi Agen Voucher*
Nama : ".$_POST['nama']."
Alamat : ".$_POST['alamat']."
Kode Agen : ".$_POST['kode']."
Password : ".$password."
_Registrasi Berhasil..!!_
_==> Pesan Otomatis Sistem <==_";
$Nomor = array($handphone);
$APIwa = new PesanWA();
$APIwa->Send_Pesan($_POST['ids'],'sendMessage',$Nomor,$Pesan);
sweetAlert("Agen telah ditambahkan", "success");
} catch (PDOException $e) {
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
} else {
sweetAlert("Registrasi Gagal.!, Nomor WhatsApp sudah terdaftar", "error");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-3 mb-2">
<form method="post">
<select id="pilihBulan" onchange="fetchDataAgen()" class="form-control form-control-sm">
<?php
$idArray = explode(',', $SvId);
$query = "SELECT generate_time FROM v_detail_agen_pascabayar WHERE id_data_server IN (" . implode(',', array_fill(0, count($idArray), '?')) . ") GROUP BY generate_time ORDER BY generate_time DESC";
$stmt = $pdo->prepare($query);
foreach ($idArray as $index => $id) {
$stmt->bindValue($index + 1, $id, PDO::PARAM_INT); // Bind setiap ID ke parameter
}
$stmt->execute();
$options = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($options as $row) {
$generate_time = $row['generate_time'];
?>
<option value="<?php echo $generate_time; ?>"><?php echo substr(formatIndo($generate_time), 3); ?></option>
<?php } ?>
</select>
</form>
</div>
<div class="col-md-6">
<center>
<p>Akumulasi Keuangan Voucher</p>
</center>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-6">
<!-- small box -->
<div class="small-box bg-info" id="penjualanBox">
<div class="inner">
<h4 id="penjualanValue">0</h4>
<p>Total Penjualan</p>
</div>
<div class="icon">
<i class="ion ion-card"></i>
</div>
</div>
</div>
<div class="col-lg-4 col-6">
<!-- small box -->
<div class="small-box bg-success" id="lunasBox">
<div class="inner">
<h4 id="lunasValue">0</h4>
<p>Total Lunas</p>
</div>
<div class="icon">
<i class="ion ion-card"></i>
</div>
</div>
</div>
<div class="col-lg-4 col-6">
<!-- small box -->
<div class="small-box bg-warning" id="pendingBox">
<div class="inner">
<h4 id="pendingValue">0</h4>
<p>Total Pending</p>
</div>
<div class="icon">
<i class="ion ion-card"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-3 mb-2">
</div>
<div class="col-md-6">
<center>
<p>Akumulasi Voucher</p>
</center>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-info" id="pendingBox">
<div class="inner">
<h4 id="jumtotalValue">0</h4>
<p>Total Voucher</p>
</div>
<div class="icon">
<i class="ion ion-android-wifi"></i>
</div>
</div>
</div>
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-warning" id="pendingBox">
<div class="inner">
<h4 id="jumbelumValue">0</h4>
<p>Belum Aktif</p>
</div>
<div class="icon">
<i class="ion ion-wifi"></i>
</div>
</div>
</div>
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-success" id="pendingBox">
<div class="inner">
<h4 id="jumsedangValue">0</h4>
<p>Sedang Aktif</p>
</div>
<div class="icon">
<i class="ion ion-android-wifi"></i>
</div>
</div>
</div>
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-danger" id="pendingBox">
<div class="inner">
<h4 id="jumsudahValue">0</h4>
<p>Sudah Kedaluarsa</p>
</div>
<div class="icon">
<i class="ion ion-wifi"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<table id="example3" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Mikrotik</th>
<th>Nama Agen</th>
<th>Nomor WhatsApp</th>
<th>Jumlah Transaksi</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_detail_agen_voucher $SqlDataWHId AND jenis_agen = 'Pascabayar'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nama_mikrotik']; ?></td>
<td><?php echo $server['nama'] . ' ('.$server['kode_agen'].')'; ?><br>
<?php
if($server['status'] == 'Aktif') {
echo '<div class="badge badge-success">Aktif</div>';
} else {
echo '<div class="badge badge-danger">Tidak Aktif</div>';
}
?>
</td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td style="max-width: 100px;">Rp. <?php echo substr(number_format($server['saldo']),1); ?></td>
<td>
<?php
// Ambil bulan dan tahun saat ini dalam format Y-m
$now = date('Y-m');
// Persiapkan query untuk mengecek saldo yang tidak sama dengan 0
$stmt = $pdo->prepare("SELECT 1 FROM v_detail_agen_pascabayar WHERE id_agen_voucher = :id_agen_voucher AND generate_time < :now AND saldo != 0 LIMIT 1");
$stmt->bindValue(':id_agen_voucher', $server['id'], PDO::PARAM_INT);
$stmt->bindValue(':now', $now, PDO::PARAM_STR); // Pastikan menggunakan PDO::PARAM_STR untuk tanggal
$stmt->execute();
// Cek apakah ada data yang ditemukan
if ($stmt->fetch()) {
echo '<span class="badge badge-danger">Ada Tunggakan</span>';
} else {
echo '<span class="badge badge-success">Lancar</span>';
}
?>
</td>
<td>
<form method="post">
<a href="?<?php echo encrypt_url('agen_pascabayar_detail|'.$server['id']); ?>" class="btn btn-info btn-sm m-1">Detail</a>
<a type="button" class="btn btn-secondary btn-sm m-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm m-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Agen Voucher</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Mikrotik</label>
<select class="form-control" name="idm" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("setting_mikrotik",$SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_setting_mikrotik']) { echo "selected";} ?> ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Agen</label>
<input type="text" class="form-control" name="nama" required="required" value="<?php echo $server['nama']; ?>">
</div>
<div class="form-group">
<label>Nomor Whatsapp</label>
<input type="text" class="form-control" name="nomor" required="required" value="<?php echo $server['nomor_whatsapp']; ?>">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Email Agen</label>
<input type="email" class="form-control" name="email" required="required" value="<?php echo $server['email']; ?>">
</div>
<div class="form-group">
<label>Kode Agen</label>
<input type="text" class="form-control" name="kode" required="required" value="<?php echo $server['kode_agen']; ?>">
</div>
<div class="form-group">
<label>Alamat</label>
<textarea class="form-control" rows="4" name="alamat" required="required"><?php echo $server['alamat']; ?></textarea>
</div>
</div>
</div>
<a class="btn btn-link" data-toggle="collapse" data-target="#collapseExample<?php echo $server['id'];?>" aria-expanded="false" aria-controls="collapseExample<?php echo $server['id'];?>">
Option Form Tambahan
</a>
<div class="collapse" id="collapseExample<?php echo $server['id'];?>">
<div class="card-body">
<label>Pilih Voucher Agen</label>
<div class="row">
<?php
$data_paket = explode(",", $server['list_paket']);
$List->set_list("profile_paket", $SqlDataWHId . " AND status = '1'");
$ids_menu = [];
foreach ($List->get_list() as $key => $value):
// Kumpulkan semua ID
$ids_menu[] = $value['id'];
if (empty($data_paket[0])) {
$checked = 'checked';
} else {
// Cek apakah ID ada dalam array data_paket
$checked = in_array($value['id'], $data_paket) ? 'checked' : ''; // Memperbaiki typo 'cekcked' menjadi 'checked'
}
?>
<div class="col-md-4">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" value="<?php echo $value['id']; ?>" name="menu_ids[]" id="flexCheck<?php echo $value['id']; ?>" <?php echo $checked; ?>>
<label class="form-check-label" for="flexCheck<?php echo $value['id']; ?>">
<?php echo $value['nama'] . " ( Rp. " . number_format($value['harga_paket']) . " )"; ?>
</label>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$difference = array_diff($ids_menu, $_POST['menu_ids']);
if (empty($difference)) {
$paket_list = NULL;
} else {
$paket_list = implode(', ', $_POST['menu_ids']);
}
$update = mysqli_query($con,"UPDATE agen_voucher SET
id_data_server ='$_POST[ids]',
id_setting_mikrotik ='$_POST[idm]',
email ='$_POST[email]',
nama ='$_POST[nama]',
alamat ='$_POST[alamat]',
nomor_whatsapp ='$_POST[nomor]',
kode_agen ='$_POST[kode]',
list_paket ='$paket_list'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Data agen telah di ubah", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("agen_voucher",$iddata );
}
?>
</div>
</div></div>
<!-- END Modal Edit -->
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<script>
// Fungsi untuk menetapkan bulan saat ini sebagai nilai default di dropdown
function setDefaultMonth() {
// Dapatkan bulan dan tahun saat ini
var now = new Date();
var currentMonth = now.getMonth() + 1; // getMonth() menghasilkan bulan 0-11, jadi kita tambahkan 1
var currentYear = now.getFullYear();
// Format bulan dalam format YYYY-MM
var currentMonthString = currentYear + '-' + (currentMonth < 10 ? '0' + currentMonth : currentMonth);
// Atur nilai default pada dropdown
document.getElementById('pilihBulan').value = currentMonthString;
// Panggil fungsi untuk mengambil data berdasarkan bulan saat ini
fetchDataAgen();
}
// Fungsi untuk mengambil data agen berdasarkan bulan yang dipilih
function fetchDataAgen() {
// Ambil nilai bulan dari dropdown
var bulan = document.getElementById('pilihBulan').value;
// Ambil nilai ID dan generate_time dari server-side (misalnya dari halaman PHP sebelumnya)
var idDataServer = <?php echo $SvId; ?>; // Ganti dengan ID yang sesuai atau ambil dari variabel PHP
var generateTime = bulan; // bulan dalam format YYYY-MM
// Buat request dengan menggunakan XMLHttpRequest
var xhr = new XMLHttpRequest();
xhr.open("GET", "list_data/data_akumulasi_agen_pascabayar.php?id=" + idDataServer + "&tgl=" + generateTime, true);
// Ketika request selesai diproses
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // 4 berarti request telah selesai
if (xhr.status === 200) { // Jika status sukses (200)
// Parse data JSON dari PHP
var response = JSON.parse(xhr.responseText);
// Pastikan data tersedia sebelum mengaksesnya
if (response && response.length > 0) {
// Ambil data dari response (jika ada)
var data = response[0];
// Ambil nilai atau set ke 0 jika tidak ada
var kredit = parseFloat(data.total_kredit) || 0;
var debet = parseFloat(data.total_debet) || 0;
var saldo = parseFloat(data.total_saldo) || 0;
var jumlah_voucher = parseInt(data.total_voucher) || 0;
var jumlah_voucher_belum_aktif = parseInt(data.total_voucher_belum_aktif) || 0;
var jumlah_voucher_aktif = parseInt(data.total_voucher_aktif) || 0;
var jumlah_voucher_expaired = parseInt(data.total_voucher_expaired) || 0;
// Format angka dengan pemisah ribuan
kredit = kredit.toLocaleString();
debet = debet.toLocaleString();
saldo = saldo.toLocaleString();
// Masukkan data ke dalam elemen HTML yang sesuai
document.getElementById('penjualanValue').innerText = "Rp. "+kredit;
document.getElementById('lunasValue').innerText = "Rp. "+debet;
document.getElementById('pendingValue').innerText = "Rp. "+saldo;
document.getElementById('jumtotalValue').innerText = jumlah_voucher.toLocaleString();
document.getElementById('jumbelumValue').innerText = jumlah_voucher_belum_aktif.toLocaleString();
document.getElementById('jumsedangValue').innerText = jumlah_voucher_aktif.toLocaleString();
document.getElementById('jumsudahValue').innerText = jumlah_voucher_expaired.toLocaleString();
} else {
// Jika data tidak ditemukan atau kosong
document.getElementById('result').innerHTML = "Tidak ada data untuk bulan yang dipilih.";
}
} else {
// Jika ada masalah dengan request
document.getElementById('result').innerHTML = "Error: Tidak dapat mengambil data.";
}
}
};
// Kirimkan request
xhr.send();
}
// Panggil fungsi setDefaultMonth saat halaman dimuat
window.onload = setDefaultMonth;
</script>
+437
View File
@@ -0,0 +1,437 @@
<?php
$stmt = $pdo->prepare("SELECT * FROM v_detail_agen_voucher WHERE id = '$page[1]'");
$stmt->execute();
$data = $stmt->fetchAll();
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-info">
<div class="row">
<div class="col-sm-6">
<h5>Detail Agen Voucher</h5>
</div>
<div class="col-sm-6"></div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table class="table table-borderless">
<tbody>
<tr>
<td class="p-1">Status</td>
<td class="p-1">:</td>
<td class="p-1">
<?php
if($data[0]['status'] == 'Aktif') {
echo '<div class="badge badge-success p-2">Aktif</div>';
} else {
echo '<div class="badge badge-danger p-2">Tidak Aktif</div>';
}
?>
</td>
</tr>
<tr>
<td class="p-1">Server</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_server']; ?></td>
</tr>
<tr>
<td class="p-1">Mikrotik</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_mikrotik']; ?></td>
</tr>
<tr>
<td class="p-1">Kode Agen</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['kode_agen']; ?></td>
</tr>
<tr>
<td class="p-1">Email</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['email']; ?></td>
</tr>
<tr>
<td class="p-1">Nama</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama']; ?></td>
</tr>
<tr>
<td class="p-1">Alamat</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['alamat']; ?></td>
</tr>
<tr>
<td class="p-1">Nomor WhatsApp</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nomor_whatsapp']; ?></td>
</tr>
<tr>
<td class="p-1">Last Login</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['last_login']; ?></td>
</tr>
<tr style="border-top: 1px solid #d3d3d3;">
<td class="p-1"><b>Total Transaksi</b></td>
<td class="p-1"><b>:</b></td>
<td class="p-1"><b>Rp. <?php echo substr(number_format($data[0]['saldo']),1); ?></b></td>
</tr>
</tbody>
</table>
<form method="post" enctype="multipart/form-data">
<?php if($data[0]['status'] == "Aktif") { ?>
<input type="submit" name="off" class="btn btn-danger btn-sm m-1" value="Non Aktifkan Agen">
<?php } else { ?>
<input type="submit" name="on" class="btn btn-success btn-sm m-1" value="Aktifkan Agen">
<?php } ?>
</form>
<center>
<h6>Riwayat Transaksi Agen</h6>
</center>
<table class="table table-bordered table-striped table-sm mt-4">
<thead>
<tr>
<th>Bulan</th>
<th>Transaksi</th>
<th>Belum Dibayar</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$nom = 1;
$stmt = $pdo->prepare("SELECT * FROM v_detail_agen_pascabayar WHERE id_agen_voucher = :idagen ORDER BY generate_time DESC");
$stmt->bindValue(':idagen', $page[1], PDO::PARAM_INT);
$stmt->execute();
// Ambil data
$datadetail = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($datadetail as $rows) {
$stmtBayar = $pdo->prepare("SELECT debet, input_time FROM transaksi_agen_voucher WHERE SUBSTR(generate_time, 1, 7) = :generate_time AND id_agen_voucher = :idagen AND (debet IS NOT NULL AND debet != '')");
$stmtBayar->bindValue(':generate_time', substr($rows['generate_time'], 0, 7), PDO::PARAM_STR);
$stmtBayar->bindValue(':idagen', $page[1], PDO::PARAM_INT);
$stmtBayar->execute();
// Ambil data
$datadetailbayar = $stmtBayar->fetchAll(PDO::FETCH_ASSOC);
?>
<tr>
<td><?php echo substr(formatIndo($rows['generate_time']), 3); ?></td>
<td>Rp. <?php echo number_format($rows['kredit']); ?></td>
<td>Rp. <?php echo number_format($rows['saldo']); ?></td>
<td class="text-center">
<?php echo ($rows['kredit'] == $rows['debet']) ? '<span class="badge badge-success">LUNAS</span>' : '<span class="badge badge-danger">PENDING</span>'; ?>
</td>
<td class="text-center">
<a type="button" class="badge badge-info m-1" data-toggle="modal" data-target="#staticBackdrop<?php echo $nom; ?>">Bayar</a>
<a href="#" class="badge badge-secondary m-1" data-toggle="collapse" data-target="#collapse-<?php echo $nom; ?>" aria-expanded="false" aria-controls="collapse-<?php echo $nom; ?>">Detail</a>
</td>
</tr>
<tr class="collapse" id="collapse-<?php echo $nom; ?>">
<td colspan="5" class="p-0">
<i><u><small>Riwayat Pembayaran</small></u></i>
<table class="table-bordered table-sm" width="100%">
<tbody>
<?php foreach ($datadetailbayar as $rowbayar) { ?>
<tr class="bg-white">
<td>=> <?php echo $rowbayar['input_time']; ?></td>
<td>Rp. <?php echo number_format($rowbayar['debet']); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</td>
</tr>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop<?php echo $nom; ?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Bayar Bulan <?php echo substr(formatIndo($rows['generate_time']), 3); ?></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="background-color: rgb(240, 240, 240); text-align: left;">
Total Pembayaran
<h4><b>Rp. <?php echo number_format($rows['saldo']); ?></b></h4>
</div>
<div class="modal-body">
<div class="form-group">
<label>Nominal Pembayaran</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="nominal" required="required">
<i class="text-danger"><small>Tidak boleh melebihi nominal di atas</small></i>
</div>
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
</div>
<div class="modal-footer">
<input type="submit" name="tambah<?php echo $nom; ?>" class="btn btn-primary" value="Bayar">
</div>
</form>
</div>
</div>
</div>
<?php
// Pastikan $nom di-set sebelumnya
if (isset($_POST['tambah' . $nom])) {
// Mengambil nilai nominal dan memfilter hanya angka
$nominal = preg_replace("/[^0-9]/", "", $_POST['nominal']);
// Validasi nominal dan pengecekan lebih lanjut
if ($nominal > $rows['saldo']) {
sweetAlert("Gagal: Nominal melebihi total pembayaran", "error");
} else {
// Ambil waktu saat ini
$waktu = date('Y-m-d H:i:s');
// Keterangan transaksi
$keteranganTransaksi = "Pembayaran agen voucher (" . $data[0]['nama'] . ")";
// Ambil metode pembayaran dari POST
$metode = $_POST['metode'];
try {
// $generate_time = $rows['generate_time'].date('-d');
$generate_time = date('Y-m-t', strtotime($rows['generate_time']));
// Menyimpan transaksi agen voucher
$stmt = $pdo->prepare("INSERT INTO transaksi_agen_voucher (id_data_server, id_agen_voucher, id_ganerate_voucher, debet, keterangan, status, input_time, generate_time) VALUES (:idds, :idagen, '0', :nominal, 'Pembayaran Agen', :jenis, :input_time, :generate_time)");
$stmt->bindParam(':idds', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->bindParam(':idagen', $page[1], PDO::PARAM_INT);
$stmt->bindParam(':nominal', $nominal, PDO::PARAM_INT); // Pastikan nominal di-bind sebagai integer
$stmt->bindParam(':jenis', $_POST['jenis'], PDO::PARAM_STR); // Bind jenis sebagai string
$stmt->bindParam(':input_time', $waktu, PDO::PARAM_STR);
$stmt->bindParam(':generate_time', $generate_time, PDO::PARAM_STR);
$stmt->execute();
// Menyimpan transaksi umum
$sql = "INSERT INTO transaksi (id_data_server, id_user_akses, start_time, keterangan, pemasukan, metode_pembayaran, status)
VALUES (:idds, '0', :start_time, :keterangan, :pemasukan, :metode, 'Pendapatan Hotspot')";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':idds', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->bindParam(':start_time', $waktu, PDO::PARAM_STR);
$stmt->bindParam(':metode', $metode, PDO::PARAM_STR);
$stmt->bindParam(':keterangan', $keteranganTransaksi, PDO::PARAM_STR);
$stmt->bindParam(':pemasukan', $nominal, PDO::PARAM_INT); // Bind nominal sebagai integer
$stmt->execute();
// Mengirim pesan WhatsApp
$Pesan = "Pembayaran Rp." . number_format($nominal) . " Telah kami terima, Terimakasih.
_==> Pesan Otomatis Sistem <==_";
$APIwa = new PesanWA();
$APIwa->Send_Pesan($data[0]['id_data_server'], 'sendMessage', [$data[0]['nomor_whatsapp']], $Pesan);
// Tampilkan pesan sukses
sweetAlert("Proses berhasil", "success");
} catch (PDOException $e) {
// Menangani error dalam eksekusi query
// sweetAlert("Gagal: Terjadi kesalahan pada proses transaksi", "error");
echo "Error: " . $e->getMessage();
}
}
}
$nom++;
}
?>
</tbody>
</table>
</div>
<div class="col-md-6">
<center>
<h6>Riwayat Generate Voucher</h6>
</center>
<div class="card-body">
<div class="mb-1">
<div class="row">
<div class="col-4">
<div class="dropdown dropright">
<a class="btn btn-warning btn-sm dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-expanded="false">
Filter
</a>
<div class="dropdown-menu" style="width: 250px;">
<div class="m-2">
<form id="filter-form">
<div class="form-group m-1">
<label><small>Dari</small></label>
<input type="date" class="form-control form-control-sm" id="start-date" name="start_date">
</div>
<div class="form-group">
<label><small>Sampai</small></label>
<input type="date" class="form-control form-control-sm" id="end-date" name="end_date">
</div>
<button type="button" class="btn btn-primary btn-sm mt-2" id="apply-filter">Terapkan</button>
</form>
</div>
</div>
</div>
</div>
<div class="col-8">
<input type="text" id="search-input" placeholder="Cari..." class="form-control form-control-sm mb-2" style="width: 200px; float: right;">
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped" id="data-table">
<thead>
<tr>
<th>No</th>
<th>Voucher</th>
<th>Harga</th>
<th>Dibuat</th>
<th>Awal Digunakan</th>
<th>Kadaluarsa</th>
</tr>
</thead>
<tbody id="table-body">
<!-- Data akan dimuat di sini -->
</tbody>
</table>
</div>
<div id="loader" style="display:none;">Loading...</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
let offset = 0; // Offset untuk memuat data
const limit = 25; // Jumlah data per permintaan (ubah menjadi 25)
let loading = false;
// Fungsi untuk memuat data
function loadMoreData(searchTerm = '', startDate = '', endDate = '', id = <?php echo "'".$page[1]."'"; ?>) {
if (loading) return; // Jangan panggil lagi jika sedang memuat
loading = true;
$('#loader').show();
$.ajax({
url: 'list_data/list_generate_voucher.php',
type: 'GET',
data: {
offset: offset,
limit: limit, // Menambahkan parameter limit
search: searchTerm,
start_date: startDate,
end_date: endDate,
id: id
},
success: function(response) {
const result = response.data; // Ambil data yang diterima
if (result.length > 0) {
let nomor = offset + 1; // Mulai nomor urut dari offset + 1
result.forEach((voucher) => {
// Menambahkan baris baru ke dalam tabel
let row = `
<tr>
<td>${nomor}</td> <!-- Menampilkan nomor urut -->
<td>${voucher.voucher}</td>
<td style="min-width: 100px;">Rp. ${parseInt(voucher.harga).toLocaleString()}</td>
<td>${voucher.create_time}</td>
<td>${voucher.active_time}</td>
<td>${voucher.expaired_time}</td>
</tr>`;
$('#table-body').append(row);
nomor++; // Increment nomor untuk baris berikutnya
});
offset += result.length; // Update offset setelah data dimuat
} else {
// Jika tidak ada data
$('#loader').hide();
}
$('#loader').hide();
loading = false;
},
error: function() {
$('#loader').hide();
loading = false;
alert('Error loading data');
}
});
}
// Fungsi untuk menangani input pencarian
$('#search-input').on('input', function() {
const searchTerm = $(this).val();
offset = 0; // Reset offset saat pencarian
$('#table-body').empty(); // Kosongkan tabel
loadMoreData(searchTerm, $('#start-date').val(), $('#end-date').val()); // Muat data berdasarkan pencarian dan filter
});
// Fungsi untuk menerapkan filter berdasarkan tanggal
$('#apply-filter').on('click', function() {
const startDate = $('#start-date').val();
const endDate = $('#end-date').val();
offset = 0; // Reset offset saat filter diterapkan
$('#table-body').empty(); // Kosongkan tabel
loadMoreData($('#search-input').val(), startDate, endDate); // Muat data berdasarkan filter
});
// Panggil fungsi saat scroll
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) {
loadMoreData($('#search-input').val(), $('#start-date').val(), $('#end-date').val()); // Panggil dengan parameter pencarian dan filter
}
});
// Muat data pertama kali saat halaman dimuat
$(document).ready(function() {
loadMoreData();
});
</script>
</div>
</div>
</div>
<div id="form-content"></div>
</div>
<div class="card-footer">
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['off'])) {
$status = "Non Aktif";
$stmt = $pdo->prepare("UPDATE agen_voucher SET status = :status WHERE id = :idagen");
$stmt->bindParam(':status', $status);
$stmt->bindParam(':idagen', $page[1], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Agen ".$data[0]['nama']." telah di Non Aktifkan", "success");
}
if (isset($_POST['on'])) {
$status = "Aktif";
$stmt = $pdo->prepare("UPDATE agen_voucher SET status = :status WHERE id = :idagen");
$stmt->bindParam(':status', $status);
$stmt->bindParam(':idagen', $page[1], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Agen ".$data[0]['nama']." telah di Aktifkan", "success");
}
?>
+391
View File
@@ -0,0 +1,391 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Agen Voucher Pascabayar</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Agen</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Mikrotik</label>
<select class="form-control" name="idm" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("setting_mikrotik",$SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Agen</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Nomor Whatsapp</label>
<input type="text" class="form-control" name="nomor" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Email Agen</label>
<input type="email" class="form-control" name="email" required="required">
</div>
<div class="form-group">
<label>Kode Agen</label>
<input type="text" class="form-control" name="kode" required="required">
</div>
<div class="form-group">
<label>Alamat</label>
<textarea class="form-control" rows="4" name="alamat" required="required"></textarea>
</div>
</div>
</div>
<a class="btn btn-link" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Option Form Tambahan
</a>
<div class="collapse" id="collapseExample">
<div class="card-body">
<label>Pilih Voucher Agen</label>
<div class="row">
<?php
$List->set_list("profile_paket", $SqlDataWHId. "AND status = '1'");
foreach ($List->get_list() as $key => $value):
//Kumpulkan semua ID
$ids_menu[] = $value['id'];
?>
<div class="col-md-4">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" value="<?php echo $value['id']; ?>" name="menu_ids[]" id="flexCheckDefault" checked>
<label class="form-check-label" for="flexCheckDefault">
<?php echo $value['nama'] . " ( Rp. ".number_format($value['harga_paket'])." )"; ?>
</label>
</div>
</div>
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$difference = array_diff($ids_menu, $_POST['menu_ids']);
if (empty($difference)) {
$paket_list = NULL;
} else {
$paket_list = implode(', ', $_POST['menu_ids']);
}
// Format nomor WhatsApp
if (substr($_POST['nomor'], 0, 2) == '62') {
$handphone = $_POST['nomor'];
} else {
$handphone = '62' . substr($_POST['nomor'], 1);
}
// Cek apakah nomor WhatsApp sudah terdaftar
$stmt = $pdo->prepare("SELECT nomor_whatsapp FROM agen_voucher WHERE nomor_whatsapp = :NoWhatsApp");
$stmt->execute([':NoWhatsApp' => $handphone]);
$ceknomor = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($ceknomor)) {
try {
// Generate password dan hash
$password = $_POST['kode'] . date('is');
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Insert data agen baru
$stmt = $pdo->prepare("INSERT INTO agen_voucher (id_data_server, id_setting_mikrotik, email, nama, alamat, nomor_whatsapp, kode_agen, status, profile, password, jenis_agen,list_paket) VALUES (:id_data_server, :id_setting_mikrotik, :email, :nama, :alamat, :nomor_whatsapp, :kode_agen, 'Aktif', 'member.png', :password, 'Prabayar', :list_paket)");
$stmt->execute([
':id_data_server' => $_POST['ids'],
':id_setting_mikrotik' => $_POST['idm'],
':email' => $_POST['email'],
':nama' => $_POST['nama'],
':alamat' => $_POST['alamat'],
':nomor_whatsapp' => $handphone,
':kode_agen' => $_POST['kode'],
':password' => $hashedPassword,
':list_paket' => $paket_list
]);
//Kirim Pesan Registrasi Agen
$Pesan = "*Registrasi Agen Voucher*
Nama : ".$_POST['nama']."
Alamat : ".$_POST['alamat']."
Kode Agen : ".$_POST['kode']."
Password : ".$password."
_Registrasi Berhasil..!!_
_==> Pesan Otomatis Sistem <==_";
$Nomor = array($handphone);
$APIwa = new PesanWA();
$APIwa->Send_Pesan($_POST['ids'],'sendMessage',$Nomor,$Pesan);
sweetAlert("Agen telah ditambahkan", "success");
} catch (PDOException $e) {
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
} else {
sweetAlert("Registrasi Gagal.!, Nomor WhatsApp sudah terdaftar", "error");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example3" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Mikrotik</th>
<th>Nama Agen</th>
<th>Kode Agen</th>
<th>Nomor WhatsApp</th>
<th>Saldo</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_detail_agen_voucher $SqlDataWHId AND jenis_agen = 'Prabayar'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nama_mikrotik']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['kode_agen']; ?></td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td style="max-width: 100px;">Rp. <?php echo number_format($server['saldo']); ?></td>
<td>
<?php
if($server['status'] == 'Aktif') {
echo '<div class="badge badge-success p-2">Aktif</div>';
} else {
echo '<div class="badge badge-danger p-2">Tidak Aktif</div>';
}
?>
</td>
<td>
<form method="post">
<a href="?<?php echo encrypt_url('agen_voucher_detail|'.$server['id']); ?>" class="btn btn-info btn-sm m-1">Detail</a>
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Agen Voucher</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Mikrotik</label>
<select class="form-control" name="idm" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("setting_mikrotik",$SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_setting_mikrotik']) { echo "selected";} ?> ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Agen</label>
<input type="text" class="form-control" name="nama" required="required" value="<?php echo $server['nama']; ?>">
</div>
<div class="form-group">
<label>Nomor Whatsapp</label>
<input type="text" class="form-control" name="nomor" required="required" value="<?php echo $server['nomor_whatsapp']; ?>">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Email Agen</label>
<input type="email" class="form-control" name="email" required="required" value="<?php echo $server['email']; ?>">
</div>
<div class="form-group">
<label>Kode Agen</label>
<input type="text" class="form-control" name="kode" required="required" value="<?php echo $server['kode_agen']; ?>">
</div>
<div class="form-group">
<label>Alamat</label>
<textarea class="form-control" rows="4" name="alamat" required="required"><?php echo $server['alamat']; ?></textarea>
</div>
</div>
</div>
<a class="btn btn-link" data-toggle="collapse" data-target="#collapseExample<?php echo $server['id'];?>" aria-expanded="false" aria-controls="collapseExample<?php echo $server['id'];?>">
Option Form Tambahan
</a>
<div class="collapse" id="collapseExample<?php echo $server['id'];?>">
<div class="card-body">
<label>Pilih Voucher Agen</label>
<div class="row">
<?php
$data_paket = explode(",", $server['list_paket']);
$List->set_list("profile_paket", $SqlDataWHId . " AND status = '1'");
$ids_menu = [];
foreach ($List->get_list() as $key => $value):
// Kumpulkan semua ID
$ids_menu[] = $value['id'];
if (empty($data_paket[0])) {
$checked = 'checked';
} else {
// Cek apakah ID ada dalam array data_paket
$checked = in_array($value['id'], $data_paket) ? 'checked' : ''; // Memperbaiki typo 'cekcked' menjadi 'checked'
}
?>
<div class="col-md-4">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" value="<?php echo $value['id']; ?>" name="menu_ids[]" id="flexCheck<?php echo $value['id']; ?>" <?php echo $checked; ?>>
<label class="form-check-label" for="flexCheck<?php echo $value['id']; ?>">
<?php echo $value['nama'] . " ( Rp. " . number_format($value['harga_paket']) . " )"; ?>
</label>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$difference = array_diff($ids_menu, $_POST['menu_ids']);
if (empty($difference)) {
$paket_list = NULL;
} else {
$paket_list = implode(', ', $_POST['menu_ids']);
}
$update = mysqli_query($con,"UPDATE agen_voucher SET
id_data_server ='$_POST[ids]',
id_setting_mikrotik ='$_POST[idm]',
email ='$_POST[email]',
nama ='$_POST[nama]',
alamat ='$_POST[alamat]',
nomor_whatsapp ='$_POST[nomor]',
kode_agen ='$_POST[kode]',
list_paket ='$paket_list'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Data agen telah di ubah", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("agen_voucher",$iddata );
}
?>
</div>
</div>
<!-- END Modal Edit -->
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+332
View File
@@ -0,0 +1,332 @@
<?php
$stmt = $pdo->prepare("SELECT * FROM v_detail_agen_voucher WHERE id = '$page[1]'");
$stmt->execute();
$data = $stmt->fetchAll();
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-info">
<div class="row">
<div class="col-sm-6">
<h5>Detail Agen Voucher</h5>
</div>
<div class="col-sm-6"></div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-5">
<table class="table table-borderless">
<tbody>
<tr>
<td class="p-1">Status</td>
<td class="p-1">:</td>
<td class="p-1">
<?php
if($data[0]['status'] == 'Aktif') {
echo '<div class="badge badge-success p-2">Aktif</div>';
} else {
echo '<div class="badge badge-danger p-2">Tidak Aktif</div>';
}
?>
</td>
</tr>
<tr>
<td class="p-1">Server</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_server']; ?></td>
</tr>
<tr>
<td class="p-1">Mikrotik</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_mikrotik']; ?></td>
</tr>
<tr>
<td class="p-1">Kode Agen</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['kode_agen']; ?></td>
</tr>
<tr>
<td class="p-1">Email</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['email']; ?></td>
</tr>
<tr>
<td class="p-1">Nama</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama']; ?></td>
</tr>
<tr>
<td class="p-1">Alamat</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['alamat']; ?></td>
</tr>
<tr>
<td class="p-1">Nomor WhatsApp</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nomor_whatsapp']; ?></td>
</tr>
<tr>
<td class="p-1">Last Login</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['last_login']; ?></td>
</tr>
<tr style="border-top: 1px solid #d3d3d3;">
<td class="p-1"><b>Saldo</b></td>
<td class="p-1"><b>:</b></td>
<td class="p-1"><b>Rp. <?php echo number_format($data[0]['saldo']); ?></b></td>
</tr>
</tbody>
</table>
<form method="post" enctype="multipart/form-data">
<a type="button" class="btn btn-primary btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah Saldo</a>
<?php if($data[0]['status'] == "Aktif") { ?>
<input type="submit" name="off" class="btn btn-danger btn-sm m-1" value="Non Aktifkan Agen">
<?php } else { ?>
<input type="submit" name="on" class="btn btn-success btn-sm m-1" value="Aktifkan Agen">
<?php } ?>
</form>
</div>
<div class="col-md-7">
<center>
<h6>Riwayat Transaksi Agen</h6>
</center>
<table id="example2" class="table table-bordered table-striped" style="zoom: 85%">
<thead>
<tr>
<th>Waktu</th>
<th>Keterangan</th>
<th>Debet</th>
<th>Kredit</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$chunkSize = 200;
$idagen = $page[1];
// Query untuk menghitung total baris
$stmt = $pdo->prepare("SELECT COUNT(id) FROM v_detail_transaksi_per_agen WHERE id_agen_voucher = :idagen");
$stmt->bindValue(':idagen', $idagen, PDO::PARAM_INT);
$stmt->execute();
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT id, input_time, keterangan, debet, kredit, status, expaired_time FROM v_detail_transaksi_per_agen WHERE id_agen_voucher = :idagen ORDER BY id DESC, input_time DESC LIMIT :limit OFFSET :offset");
$stmt->bindValue(':idagen', $idagen, PDO::PARAM_INT);
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
// Ambil data
$datarow = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($datarow as $row) {
// Format data sesuai kebutuhan
$inputTime = htmlspecialchars($row['input_time']);
$keterangan = htmlspecialchars($row['keterangan']);
$debet = htmlspecialchars($row['debet']);
$kredit = htmlspecialchars($row['kredit']);
$status = htmlspecialchars($row['status']);
$expair = htmlspecialchars($row['expaired_time']);
// Format debet dan kredit
$debetFormatted = $debet ? 'Rp. ' . number_format($debet, 0, ',', '.') : '';
$kreditFormatted = $kredit ? 'Rp. ' . number_format($kredit, 0, ',', '.') : '';
if($keterangan == "Isi Saldo"){ $exp = $inputTime; }
else { $exp = "Create ".$inputTime."<br> Expair ".$expair; }
?>
<tr>
<td><?php echo $exp; ?></td>
<td style="max-width: 300px;"><?php echo $keterangan; ?></td>
<td><?php echo $debetFormatted; ?></td>
<td><?php echo $kreditFormatted; ?></td>
<td>
<?php
if ($row['status'] == '0') {?>
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop<?php echo $row['id']; ?>">NUNGGAK</a>
<?php } elseif ($row['status'] == '1' || $row['status'] == '3') {
//Status transaksi agen 3 itu dari Payment Gateway, dan 1 sudah di bayar langsung
echo "LUNAS";
} else {
echo "SUKSES";
}
?>
</td>
</tr>
<?php
if ($row['status'] == '0') { ?>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop<?php echo $row['id']; ?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Lunasi Saldo</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<center>
<h4><b><?php echo $debetFormatted; ?></b></h4>
</center><hr>
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode1" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
</div>
<div class="modal-footer">
<input type="submit" name="bayar<?php echo $row['id']; ?>" class="btn btn-primary" value="LUNASI">
</div>
</form>
</div>
</div>
</div>
<?php
if (isset($_POST['bayar'.$row['id']])) {
$nominal = $row['debet'];
$waktu = date('Y-m-d H:i:s');
$keteranganTransaksi = "Top Up saldo agen voucher (".$data[0]['nama'].")";
$stmt = $pdo->prepare("UPDATE transaksi_agen_voucher SET status = '1' WHERE id = :idtrx");
$stmt->bindParam(':idtrx', $row['id'], PDO::PARAM_INT);
$stmt->execute();
$sql = "INSERT INTO transaksi (id_data_server, id_user_akses, start_time, keterangan, pemasukan, metode_pembayaran, status) VALUES (:idds, '0', :start_time, :keterangan, :pemasukan, :metode, 'Pendapatan Hotspot')";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':idds', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->bindParam(':start_time', $waktu);
$stmt->bindParam(':keterangan', $keteranganTransaksi);
$stmt->bindParam(':metode', $_POST['metode1']);
$stmt->bindParam(':pemasukan', $nominal);
$stmt->execute();
sweetAlert("Saldo agen ".$data[0]['nama']." sebesar ".$data[0]['debet']." telah LUNAS", "success");
}
}
}} ?>
</tbody>
</table>
</div>
</div>
<div id="form-content"></div>
</div>
<div class="card-footer">
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Saldo</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Jenis Pembayaran</label>
<select class="form-control select2bs4" name="jenis" required="required">
<option value="">Pilih</option>
<option value="1">Bayar Lunas</option>
<option value="0">Bayar Nunggak</option>
</select>
</div>
<div class="form-group">
<label>Nominal</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="nominal" required="required">
</div>
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
</div>
<div class="modal-footer">
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
</div>
</div>
</div>
<?php
if (isset($_POST['tambah'])) {
$nominal = preg_replace("/[^0-9]/","",$_POST['nominal']);
$waktu = date('Y-m-d H:i:s');
$keteranganTransaksi = "Top Up saldo agen voucher (".$data[0]['nama'].")";
$metode = $_POST['metode'];
$stmt = $pdo->prepare("INSERT INTO transaksi_agen_voucher (id_data_server, id_agen_voucher, id_ganerate_voucher, debet, keterangan, status, input_time) VALUES
(:idds, :idagen, '0', :nominal, 'Isi Saldo', :jenis, :input_time)");
$stmt->bindParam(':idds', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->bindParam(':idagen', $page[1], PDO::PARAM_INT);
$stmt->bindParam(':nominal', $nominal);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':input_time', $waktu);
$stmt->execute();
if ($_POST['jenis'] == 1) {
$sql = "INSERT INTO transaksi (id_data_server, id_user_akses, start_time, keterangan, pemasukan, metode_pembayaran, status) VALUES (:idds, '0', :start_time, :keterangan, :pemasukan, :metode, 'Pendapatan Hotspot')";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':idds', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->bindParam(':start_time', $waktu);
$stmt->bindParam(':metode', $metode);
$stmt->bindParam(':keterangan', $keteranganTransaksi);
$stmt->bindParam(':pemasukan', $nominal);
$stmt->execute();
}
$Pesan = "Saldo anda telah bertambah Rp." . number_format($nominal). "
_==> Pesan Otomatis Sistem <==_";
$APIwa = new PesanWA();
$APIwa->Send_Pesan($data[0]['id_data_server'], 'sendMessage', [$data[0]['nomor_whatsapp']], $Pesan);
sweetAlert("Saldo agen ".$data[0]['nama']." telah di tambah", "success");
}
if (isset($_POST['off'])) {
$status = "Non Aktif";
$stmt = $pdo->prepare("UPDATE agen_voucher SET status = :status WHERE id = :idagen");
$stmt->bindParam(':status', $status);
$stmt->bindParam(':idagen', $page[1], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Agen ".$data[0]['nama']." telah di Non Aktifkan", "success");
}
if (isset($_POST['on'])) {
$status = "Aktif";
$stmt = $pdo->prepare("UPDATE agen_voucher SET status = :status WHERE id = :idagen");
$stmt->bindParam(':status', $status);
$stmt->bindParam(':idagen', $page[1], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Agen ".$data[0]['nama']." telah di Aktifkan", "success");
}
?>
+188
View File
@@ -0,0 +1,188 @@
<!-- Main content -->
<section class="content" style="zoom: 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Data Aset</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah Aset</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-danger">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Aset</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Harga Barang</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="harga" required="required">
</div>
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Penyusutan</label>
<input type="text" class="form-control" name="penyusutan" required="required">
</div>
<div class="form-group">
<label>Nilai Residu</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="residu" required="required">
</div>
<div class="form-group">
<label>Tanggal Pembelian</label>
<input type="date" class="form-control" name="pembelian" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$sql = "INSERT INTO aset
(id_data_server, id_user_akses, nama, harga, jumlah, penyusutan, residu, start_time, keterangan)
VALUES (:ids, :userId, :nama, :harga, :jumlah, :penyusutan, :residu, :waktu, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
$harga = preg_replace("/[^0-9]/","",$_POST['harga']);
$residu = preg_replace("/[^0-9]/","",$_POST['residu']);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':harga', $harga);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':penyusutan', $_POST['penyusutan']);
$stmt->bindParam(':residu', $residu);
$stmt->bindParam(':waktu', $_POST['pembelian']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Data Aset telah di tambah", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<?php
$aset1 = mysqli_query($con,"SELECT SUM(jumlah_harga) AS jumlah_harga, SUM(jumlah_residu) AS jumlah_residu, SUM(jumlah_nilai_saat_ini) AS jumlah_nilai_saat_ini FROM v_jumlah_aset $SqlDataWHId");
$aset = mysqli_fetch_assoc($aset1);
?>
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th style="vertical-align: top;">No</th>
<th style="vertical-align: top;">Nama Barang</th>
<th style="vertical-align: top;">Jumlah</th>
<th style="vertical-align: top;">Penyusutan</th>
<th>Harga Barang<br>Rp. <?php echo number_format($aset['jumlah_harga']); ?></th>
<th>Residu<br>Rp. <?php echo number_format($aset['jumlah_residu']); ?></th>
<th>Nilai Saat Ini<br>Rp. <?php echo number_format($aset['jumlah_nilai_saat_ini']); ?></th>
<th style="vertical-align: top;">Tanggal Pembelian</th>
<th style="vertical-align: top;">Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_aset $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 200px;"><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['jumlah']; ?></td>
<td style="max-width: 200px;"><?php echo $server['penyusutan']; ?> Tahun</td>
<td style="max-width: 200px;">Rp. <?php echo number_format($server['harga']); ?></td>
<td style="max-width: 30px;">Rp. <?php echo number_format($server['residu']); ?></td>
<td style="max-width: 30px;">Rp. <?php echo number_format($server['nilai_saat_ini']); ?></td>
<td style="max-width: 30px;"><?php echo $server['start_time']; ?></td>
<td>
<form method="post">
<a href="?<?php echo encrypt_url('barang_aset_detail|'.$server['id']); ?>" class="btn btn-info btn-sm">Detail / Edit</a>
<input type="submit" class="btn btn-danger btn-sm m-1" name="hapus<?php echo $server['id']; ?>" value="Hapus">
</form>
</td>
</tr>
<?php
if (isset($_POST['hapus'.$server['id']])) {
$iddata = $server['id'];
deleteAlert("aset",$iddata );
}
$no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
+149
View File
@@ -0,0 +1,149 @@
<?php
$aserver = mysqli_query($con,"SELECT * FROM v_aset WHERE id = '$page[1]'");
$server = mysqli_fetch_assoc($aserver);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Detail / Edit Aset ( <?php echo $server['nama']; ?> )</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-5">
<label><b>Perhitungan Penyusutan</b></label>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Tahun</th>
<th>Nilai Penyusutan</th>
<th>Nilai Akhir</th>
</tr>
</thead>
<tbody>
<?php
$nilai = ($server['harga'] - $server['residu']) / $server['penyusutan'];
$x = $server['penyusutan'];
$y = $server['penyusutan'];
while ($x >= 0 AND 0 <= $y) {
?>
<tr>
<td>Lebih Dari => <?php
$a = $y-$server['penyusutan'];
echo date('d/m/Y', strtotime('+'.$a.' year', strtotime($server['start_time'])));
?></td>
<td>Rp. <?php echo number_format($nilai * $a); ?></td>
<td>Rp. <?php echo number_format($nilai * $x + $server['residu']); ?></td>
</tr>
<?php $x--; $y++; } ?>
</tbody>
</table>
</div>
<div class="col-md-7">
<form method="post">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected"; } ?>><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<input type="text" class="form-control" name="nama" value="<?php echo $server['nama']; ?>" required="required">
</div>
<div class="form-group">
<label>Harga Barang</label>
<input type="text" class="form-control rupiah" id="rupiah0" value="<?php echo $server['harga']; ?>" name="harga" required="required">
</div>
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control" name="jumlah" value="<?php echo $server['jumlah']; ?>" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Penyusutan</label>
<input type="text" class="form-control" name="penyusutan" value="<?php echo $server['penyusutan']; ?>" required="required">
</div>
<div class="form-group">
<label>Nilai Residu</label>
<input type="text" class="form-control rupiah" id="rupiah0" value="<?php echo $server['residu']; ?>" name="residu" required="required">
</div>
<div class="form-group">
<label>Tanggal Pembelian</label>
<input type="date" class="form-control" name="pembelian" value="<?php echo $server['start_time']; ?>" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"><?php echo $server['keterangan']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="submit" class="btn btn-primary btn-sm" name="edit" value="Simpan">
</div>
</form>
<?php
if (isset($_POST['edit'])) {
$sql = "UPDATE aset SET id_data_server = :ids, id_user_akses = :userId, nama = :nama, harga = :harga, jumlah = :jumlah, penyusutan = :penyusutan, residu = :residu, start_time = :waktu, keterangan = :keterangan WHERE id = :id";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
$harga = preg_replace("/[^0-9]/","",$_POST['harga']);
$residu = preg_replace("/[^0-9]/","",$_POST['residu']);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':harga', $harga);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':penyusutan', $_POST['penyusutan']);
$stmt->bindParam(':residu', $residu);
$stmt->bindParam(':waktu', $_POST['pembelian']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
$stmt->bindParam(':id', $page[1]);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Data Aset telah di ubah", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
</div>
</section>
+506
View File
@@ -0,0 +1,506 @@
<!-- Main content -->
<section class="content" style="zoom: 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Barang di Gudang</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah Barang</a>
<a type="button" class="btn btn-success btn-sm m-1" data-toggle="modal" data-target="#staticTambah">Tambah Stok</a>
<a type="button" class="btn btn-warning btn-sm m-1" data-toggle="modal" data-target="#staticKurangi">Kurangi Stok</a>
<a type="button" class="btn btn-primary btn-sm m-1" data-toggle="modal" data-target="#staticReturn">Return Barang</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-danger">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<option value="Baru">Baru</option>
<option value="Bekas">Bekas</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$waktu = date('Y-m-d H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, jumlah, keterangan)
VALUES (:ids, :userId, :waktu, :nama, 'masuk', :jenis, :jumlah, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Barang telah di tambah", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
<!-- Modal Tambah Stok -->
<div class="modal fade" id="staticTambah" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticTambahLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-success">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Stok Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control dropoption1" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<select class="form-control dropoption2" name="nama" required="required">
<option value="">Pilih</option>
</select>
</div>
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<option value="Baru">Baru</option>
<option value="Bekas">Bekas</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambahstok" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambahstok'])) {
$waktu = date('Y-m-d H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, jumlah, keterangan)
VALUES (:ids, :userId, :waktu, :nama, 'masuk', :jenis, :jumlah, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Stok ".$_POST['nama']." telah bertambah ".$_POST['jumlah'], "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah Stok -->
<!-- Modal Kurangi Stok -->
<div class="modal fade" id="staticKurangi" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticTambahLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-warning">
<h5 class="modal-title" id="staticBackdropLabel">Kurangi Stok Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control dropoption1" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<select class="form-control dropoption2" name="nama" required="required">
<option value="">Pilih</option>
</select>
</div>
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<option value="Baru">Baru</option>
<option value="Bekas">Bekas</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="kurangi" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['kurangi'])) {
$waktu = date('Y-m-d H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, jumlah, keterangan)
VALUES (:ids, :userId, :waktu, :nama, 'keluar', :jenis, :jumlah, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Stok ".$_POST['nama']." telah bertambah ".$_POST['jumlah'], "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Kurangi Stok -->
<!-- Modal Return Stok -->
<div class="modal fade" id="staticReturn" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticTambahLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Return Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control dropoption1" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<select class="form-control dropoption2" name="nama" required="required">
<option value="">Pilih</option>
</select>
</div>
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<option value="Baru">Baru</option>
<option value="Bekas">Bekas</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="return" class="btn btn-primary" value="Return">
</div>
</form>
<?php
if (isset($_POST['return'])) {
$waktu = date('Y-m-d H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, jumlah, keterangan)
VALUES (:ids, :userId, :waktu, :nama, 'return', :jenis, :jumlah, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Stok ".$_POST['nama']." telah bertambah ".$_POST['jumlah'], "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Return Stok -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Barang</th>
<th>Barang Masuk</th>
<th>Barang Keluar</th>
<th>Sisa Barang</th>
<th>Nama Server</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_jumlah_data_gudang_lama $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 200px;"><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['masuk']; ?></td>
<td style="max-width: 200px;"><?php echo $server['keluar']; ?></td>
<td style="max-width: 200px;"><?php echo $server['sisa']; ?></td>
<td style="max-width: 30px;"><?php echo $server['nama_server']; ?></td>
<td>
<a href="?<?php echo encrypt_url('barang_gudang_detail|'.$server['id_data_server'].'|'.$server['nama']); ?>" class="btn btn-info btn-sm">Detail</a>
</td>
</tr>
<?php $no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// Fungsi untuk mengupdate dropdown
function updateDropdown(dropdown, data) {
const firstOption = dropdown.querySelector('option[value=""]');
// Hapus semua opsi kecuali opsi pertama
dropdown.innerHTML = '';
if (firstOption) {
dropdown.appendChild(firstOption.cloneNode(true));
} else {
dropdown.innerHTML = '<option value="">Pilih</option>';
}
// Tambahkan opsi baru dari data server
data.forEach(option => {
const optionElement = document.createElement('option');
optionElement.value = option.nama;
optionElement.textContent = option.nama; // Pastikan label sesuai dengan data dari server
dropdown.appendChild(optionElement);
});
}
// Fungsi untuk mengupdate dropdown2 berdasarkan pilihan dari dropdown1
function updateDropdown2(form, selectedOption) {
const dropoption2 = form.querySelector('.dropoption2');
fetch(`list_data/getItemBarang.php?dropdown=dropoption2&option=${encodeURIComponent(selectedOption)}`)
.then(response => response.json())
.then(data => updateDropdown(dropoption2, data))
.catch(error => console.error('Error fetching dropoption2 data:', error));
}
// Menyiapkan dropdown ketika modal dibuka
document.querySelectorAll('.modal').forEach(modal => {
$(modal).on('shown.bs.modal', function () {
});
});
// Event listener untuk dropdown1
document.addEventListener('change', function(e) {
if (e.target.classList.contains('dropoption1')) {
const form = e.target.closest('form');
updateDropdown2(form, e.target.value);
}
});
});
</script>
+138
View File
@@ -0,0 +1,138 @@
<!-- Main content -->
<section class="content" style="zoom : 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Detail Riwayat Barang ( <?php echo $page[2]; ?> )</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Barang</th>
<th>Jumlah Barang</th>
<th>Status</th>
<th>Waktu</th>
<th>Keterangan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM gudang WHERE id_data_server = '$page[1]' AND nama = '$page[2]'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 200px;"><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['jumlah']; ?></td>
<td style="max-width: 200px;"><?php echo $server['status']; ?></td>
<td style="max-width: 200px;"><?php echo $server['start_time']; ?></td>
<td style="max-width: 30px;"><?php echo $server['keterangan']; ?></td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm m-1" data-toggle="modal" data-target="#staticEdit<?php echo $server['id']; ?>">Edit</a>
<input type="submit" class="btn btn-danger btn-sm m-1" name="hapus<?php echo $server['id']; ?>" value="Hapus">
</form>
</td>
</tr>
<div class="modal fade" id="staticEdit<?php echo $server['id']; ?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Ubah Data Barang ( <?php echo $server['nama']; ?> )</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="Baru" <?php if($server['jenis'] == 'Baru'){echo "selected";} ?>>Baru</option>
<option value="Bekas" <?php if($server['jenis'] == 'Bekas'){echo "selected";} ?>>Bekas</option>
</select>
</div>
<div class="form-group">
<label>Jumlah</label>
<input type="text" value="<?php echo $server['jumlah'] ?>" class="form-control" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"><?php echo $server['keterangan'] ?></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah<?php echo $server['id']; ?>" class="btn btn-primary" value="Simpan">
</div>
</form>
<?php
if (isset($_POST['tambah'.$server['id']])) {
$waktu = date('Y-m-d H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, masuk, keterangan)
VALUES (:ids, :userId, :waktu, :nama, 'masuk', :jenis, :jumlah, :keterangan)";
$sql = "UPDATE gudang SET jenis = :jenis, jumlah = :jumlah, keterangan = :keterangan WHERE id = :id ";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
$stmt->bindParam(':id', $server['id']);
// Execute the statement
$stmt->execute();
sweetAlert("Data telah di Ubah", "success");
} catch (PDOException $e) {
// Handle error
// echo 'Error: ' . $e->getMessage();
sweetAlert($e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
<?php
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("gudang",$iddata );
}
$no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
+14
View File
@@ -0,0 +1,14 @@
<?php
class Pages {
// Properties
public $page;
// Methods
function set_page($page) {
$this->page = $page;
}
function get_page() {
return $this->page;
}
}
?>
+330
View File
@@ -0,0 +1,330 @@
<style>
.table-responsive {
overflow-x: hidden;
}
@media (max-width: 767px) { /* Untuk smartphone */
.hide-on-mobile {
display: none;
}
}
@media (min-width: 768px) and (max-width: 1024px) { /* Untuk tablet */
.hide-on-tablet {
display: none;
}
}
@media (min-width: 1024px) { /* Untuk laptop */
.hide-on-laptop {
display: none;
}
}
</style>
<?php
$stmt = $pdo->prepare("SELECT
SUM(CASE WHEN metode_pembayaran = 'Bank' THEN pemasukan ELSE 0 END) AS pemasukan_bank,
SUM(CASE WHEN metode_pembayaran != 'Bank' THEN pemasukan ELSE 0 END) AS pemasukan_kas
FROM transaksi $SqlDataWHId");
$stmt->execute();
$neraca = $stmt->fetch(PDO::FETCH_ASSOC);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Daftar Akun Transaksi</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#modalPemasukan">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="modalPemasukan" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="modalPemasukanLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="modalPemasukanLabel">Tambah Pemasukan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Jenis</label>
<select class="form-control" name="jenis" required>
<option value="">Piiih</option>
<option value="1">Pemasukan</option>
<option value="2">Pengeluaran</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$input = mysqli_query($con,"INSERT INTO daftar_akun_transaksi (id_data_server, nama, jenis) VALUES ('$_POST[ids]', '$_POST[nama]', '$_POST[jenis]')");
if ($input)
{
sweetAlert("Data akun berhasil di tambah", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-5">
<div class="row">
<div class="col-6">
<h5>Pemasukan</h5>
</div>
<div class="col-6 text-right">
</div>
</div>
<table class="table table-bordered">
<thead>
<tr>
<th>Nama</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$akuntran = mysqli_query($con,"SELECT * FROM daftar_akun_transaksi WHERE jenis = '1' $SqlDataId");
while ($akun = mysqli_fetch_assoc($akuntran))
{
?>
<tr>
<td><?php echo $akun['nama'];?></td>
<td class="text-center">
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(<?php echo $akun['id'];?>)">Edit</button>
<button type="button" class="btn btn-danger btn-sm m-1" onclick="deleteAlert(<?php echo $akun['id'];?>)">Hapus</button>
</td>
</tr>
<?php } ?>
<?php
$akun_pengeluaran = array('Pendapatan PPPOE','Pendapatan Hotspot','Modal Tambahan','Modal Awal');
foreach ($akun_pengeluaran as $key) { ?>
<tr>
<td><?php echo $key; ?></td>
<td class="text-center">
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<div class="col-md-4">
<div class="row">
<div class="col-6">
<h5>Pengeluaran</h5>
</div>
<div class="col-6 text-right">
</div>
</div>
<table class="table table-bordered">
<thead>
<tr>
<th>Nama</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$akun_pengeluaran = array('Bayar Bandwidth','Pajak','Gaji Karyawan','Barang Habis Pakai','Pembayaran Sewa','Admin Bank','Listrik');
foreach ($akun_pengeluaran as $key) { ?>
<tr>
<td><?php echo $key; ?></td>
<td class="text-center">
</td>
</tr>
<?php }
$akuntran = mysqli_query($con,"SELECT * FROM daftar_akun_transaksi WHERE jenis = '2' $SqlDataId");
while ($akun = mysqli_fetch_assoc($akuntran))
{
?>
<tr>
<td><?php echo $akun['nama'];?></td>
<td class="text-center">
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(<?php echo $akun['id']; ?>)">Edit</button>
<button type="button" class="btn btn-danger btn-sm m-1" onclick="deleteAlert(<?php echo $akun['id']; ?>)">Hapus</button>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<div class="col-md-4">
</div>
</div>
</div>
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<!-- Edit Modal -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<form id="editForm" method="post">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="editModalLabel">Edit Pemasukan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<input type="hidden" name="edit_id" id="edit_id">
<div class="form-group">
<label for="serverSelect">Server</label>
<select class="form-control" name="ids" id="serverSelect" required>
<!-- Opsi akan diisi oleh JavaScript -->
</select>
</div>
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" class="form-control" name="nama" id="nama" required>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-warning">Edit</button>
</div>
</form>
</div>
</div>
</div>
<script>
function openEditModal(id) {
// Fetch data menggunakan AJAX untuk ID yang dipilih
fetch(`list_data/akunTransaksi.php?id=${id}`)
.then(response => response.json())
.then(data => {
// Isi kolom formulir
document.getElementById('edit_id').value = data.id;
document.getElementById('nama').value = data.nama;
// Ambil daftar server untuk opsi select
fetch(`list_data/dataServer.php?w=<?php echo $SqlDataWH; ?>`)
.then(response => response.json())
.then(servers => {
const serverSelect = document.getElementById('serverSelect');
serverSelect.innerHTML = ''; // Kosongkan opsi yang ada
servers.forEach(server => {
const option = document.createElement('option');
option.value = server.id;
option.textContent = server.nama_server;
if (server.id == data.id_data_server) {
option.selected = true; // Set opsi yang dipilih
}
serverSelect.appendChild(option);
});
});
// Tampilkan modal
$('#editModal').modal('show');
})
.catch(error => console.error('Error:', error));
}
function deleteAlert(id) {
const form = document.createElement("form");
form.method = "POST";
const input = document.createElement("input");
input.type = "hidden";
input.name = "hapus" + id;
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
</script>
<?php
// Handle edit and delete actions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['edit_id'])) {
try {
// Process edit
$stmt = $pdo->prepare("UPDATE daftar_akun_transaksi SET
id_data_server = :ids,
nama = :nama
WHERE id = :id");
$stmt->execute([
':ids' => $_POST['ids'],
':nama' => $_POST['nama'],
':id' => $_POST['edit_id'],
]);
sweetAlert('Data berhasil diubah', 'success');
} catch (Exception $e) {
sweetAlert('Terjadi kesalahan saat mengedit data: ' . $e->getMessage(), 'error');
}
}
// Ambil data dari tabel untuk keperluan delete
$stmt = $pdo->prepare("SELECT id FROM daftar_akun_transaksi $SqlDataWHId");
$stmt->execute();
$data1 = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Handle delete
foreach ($data1 as $server1) {
if (isset($_POST['hapus' . $server1['id']])) {
$idtrx = $server1['id'];
try {
deleteAlert("daftar_akun_transaksi", $idtrx);
} catch (Exception $e) {
sweetAlert('Terjadi kesalahan saat menghapus data: ' . $e->getMessage(), 'error');
}
}
}
}
?>
+559
View File
@@ -0,0 +1,559 @@
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h4 class="m-0">Dashboard</h4>
</div>
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<?php
// print_r($_SESSION);
$bulan = date('Y-m');
$tahun = date('Y');
$stmt = $pdo->prepare("SELECT
SUM(order_aktif) AS order_aktif
FROM v_jumlah_order_list $SqlDataWHIdM");
$stmt->execute();
$data = $stmt->fetchAll();
$stmt = $pdo->prepare("SELECT
SUM(user_regis) AS user_regis,
SUM(user_aktif) AS user_aktif,
SUM(user_tidak_aktif) AS user_tidak_aktif,
SUM(user_konek) AS user_konek,
SUM(user_diskonek) AS user_diskonek,
SUM(user_hs_regis) AS user_hs_regis,
SUM(user_hs_aktif) AS user_hs_aktif,
SUM(user_hs_tidak_aktif) AS user_hs_tidak_aktif,
SUM(user_hs_konek) AS user_hs_konek,
SUM(user_hs_diskonek) AS user_hs_diskonek
FROM v_jumlah_pelanggan $SqlDataWHIdM");
$stmt->execute();
$datauser = $stmt->fetchAll();
$stmt = $pdo->prepare("SELECT
SUM(pemasukan) AS pemasukan,
SUM(pengeluaran) AS pengeluaran,
SUM(saldo) AS saldo
FROM v_jumlah_transaksi_bulanan WHERE bulan = '$bulan' $SqlDataId");
$stmt->execute();
$jumbulan = $stmt->fetchAll();
$stmt = $pdo->prepare("SELECT
SUM(pemasukan) AS pemasukan,
SUM(pengeluaran) AS pengeluaran,
SUM(saldo) AS saldo
FROM v_jumlah_transaksi_tahunan WHERE tahun = '$tahun' $SqlDataId");
$stmt->execute();
$jumtahun = $stmt->fetchAll();
// if($SvId == '1') {
// $stmt = $pdo->prepare("SELECT SUM(order_aktif) AS order_aktif FROM v_jumlah_order_list ");
// $stmt->execute();
// $data = $stmt->fetchAll();
// $stmt = $pdo->prepare("SELECT
// SUM(user_regis) AS user_regis,
// SUM(user_aktif) AS user_aktif,
// SUM(user_tidak_aktif) AS user_tidak_aktif,
// SUM(user_konek) AS user_konek,
// SUM(user_diskonek) AS user_diskonek
// FROM v_jumlah_pelanggan ");
// $stmt->execute();
// $datauser = $stmt->fetchAll();
// $stmt = $pdo->prepare("SELECT
// SUM(pemasukan) AS pemasukan,
// SUM(pengeluaran) AS pengeluaran,
// SUM(saldo) AS saldo
// FROM v_jumlah_transaksi_bulanan WHERE bulan = '$bulan' ");
// $stmt->execute();
// $jumbulan = $stmt->fetchAll();
// $stmt = $pdo->prepare("SELECT
// SUM(pemasukan) AS pemasukan,
// SUM(pengeluaran) AS pengeluaran,
// SUM(saldo) AS saldo
// FROM v_jumlah_transaksi_tahunan WHERE tahun = '$tahun' ");
// $stmt->execute();
// $jumtahun = $stmt->fetchAll();
// } else {
// $stmt = $pdo->prepare("SELECT * FROM v_jumlah_order_list $SqlDataWHId");
// $stmt->execute();
// $data = $stmt->fetchAll();
// $stmt = $pdo->prepare("SELECT * FROM v_jumlah_pelanggan $SqlDataWHId");
// $stmt->execute();
// $datauser = $stmt->fetchAll();
// $stmt = $pdo->prepare("SELECT * FROM v_jumlah_transaksi_bulanan WHERE bulan = '$bulan' $SqlDataId");
// $stmt->execute();
// $jumbulan = $stmt->fetchAll();
// $stmt = $pdo->prepare("SELECT * FROM v_jumlah_transaksi_tahunan WHERE tahun = '$tahun' $SqlDataId");
// $stmt->execute();
// $jumtahun = $stmt->fetchAll();
// }
// print_r($datauser);
// print_r($_SESSION);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<!-- Small boxes (Stat box) -->
<div class="row">
<div class="col-lg-2 col-6">
<!-- small box -->
<div class="small-box bg-info">
<div class="inner">
<p class="mb-1">List Order</p>
<i class="mb-1">Layanan PPPOE</i>
<h3><?php if(!empty($data[0]['order_aktif'])) { echo $data[0]['order_aktif']; } else { echo "0";} ?></h3>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<i class="mb-1">Layanan Hotspot</i>
<h3><?php if(!empty($data[0]['order_hs_aktif'])) { echo $data[0]['order_hs_aktif']; } else { echo "0";} ?></h3>
<?php } ?>
</div>
<div class="icon">
<i class="ion ion-bag"></i>
</div>
</div>
</div>
<!-- ./col -->
<div class="col-lg-2 col-6">
<!-- small box -->
<div class="small-box bg-warning">
<div class="inner">
<p class="mb-1">On Instalation</p>
<i class="mb-1">Layanan PPPOE</i>
<h3><?php if(!empty($datauser[0]['user_regis'])) { echo $datauser[0]['user_regis']; } else { echo "0";} ?></h3>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<i class="mb-1">Layanan Hotspot</i>
<h3><?php if(!empty($datauser[0]['user_hs_regis'])) { echo $datauser[0]['user_hs_regis']; } else { echo "0";} ?></h3>
<?php } ?>
</div>
<div class="icon">
<i class="ion ion-hammer"></i>
</div>
</div>
</div>
<!-- ./col -->
<div class="col-lg-2 col-6">
<!-- small box -->
<div class="small-box bg-success">
<div class="inner">
<p class="mb-1">Aktif</p>
<i class="mb-1">Layanan PPPOE</i>
<h3><?php if(!empty($datauser[0]['user_aktif'])) { echo $datauser[0]['user_aktif']; } else { echo "0";} ?></h3>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<i class="mb-1">Layanan Hotspot</i>
<h3><?php if(!empty($datauser[0]['user_hs_aktif'])) { echo $datauser[0]['user_hs_aktif']; } else { echo "0";} ?></h3>
<?php } ?>
</div>
<div class="icon">
<i class="ion ion-ios-people"></i>
</div>
</div>
</div>
<!-- ./col -->
<div class="col-lg-2 col-6">
<!-- small box -->
<div class="small-box bg-warning">
<div class="inner">
<p class="mb-1">Tidak Aktif</p>
<i class="mb-1">Layanan PPPOE</i>
<h3><?php if(!empty($datauser[0]['user_tidak_aktif'])) { echo $datauser[0]['user_tidak_aktif']; } else { echo "0";} ?></h3>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<i class="mb-1">Layanan Hotspot</i>
<h3><?php if(!empty($datauser[0]['user_hs_tidak_aktif'])) { echo $datauser[0]['user_hs_tidak_aktif']; } else { echo "0";} ?></h3>
<?php } ?>
</div>
<div class="icon">
<i class="ion ion-ios-people"></i>
</div>
</div>
</div>
<!-- ./col -->
<div class="col-lg-2 col-6">
<!-- small box -->
<div class="small-box bg-success">
<div class="inner">
<p class="mb-1">Connected</p>
<i class="mb-1">Layanan PPPOE</i>
<h3><?php if(!empty($datauser[0]['user_konek'])) { echo $datauser[0]['user_konek']; } else { echo "0";} ?></h3>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<i class="mb-1">Layanan Hotspot</i>
<h3><?php if(!empty($datauser[0]['user_hs_konek'])) { echo $datauser[0]['user_hs_konek']; } else { echo "0";} ?></h3>
<?php } ?>
</div>
<div class="icon">
<i class="ion ion-wifi"></i>
</div>
</div>
</div>
<!-- ./col -->
<div class="col-lg-2 col-6">
<!-- small box -->
<div class="small-box bg-danger">
<div class="inner">
<p class="mb-1">Disconnected</p>
<i class="mb-1">Layanan PPPOE</i>
<h3><?php if(!empty($datauser[0]['user_diskonek'])) { echo $datauser[0]['user_diskonek']; } else { echo "0";} ?></h3>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<i class="mb-1">Layanan Hotspot</i>
<h3><?php if(!empty($datauser[0]['user_hs_diskonek'])) { echo $datauser[0]['user_hs_diskonek']; } else { echo "0";} ?></h3>
<?php } ?>
</div>
<div class="icon">
<i class="ion ion-wifi"></i>
</div>
</div>
</div>
<!-- ./col -->
</div>
<div class="row equal-height">
<?php if(in_array("52", $json_array[52])) { ?>
<div class="col-md-8">
<div class="p-2 border bg-light">
<div class="card" id="reportChartid">
<div class="card-body">
<center>
<h5>Grafik Keuangan Tahunan</h5>
</center>
<label><small>Tahun :</small></label>
<select id="yearSelect">
<option value="2024">2024</option>
<option value="2025" selected>2025</option>
<option value="2026">2026</option>
</select>
<button id="fullscreenBtn" style="float: right;" class="btn btn-sm btn-secondary">Fullscreen</button>
<canvas id="reportChart"></canvas>
</div>
</div>
<div id="accordion">
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<center>
<button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
<h5><b>Akumulasi Laporan Keuangan</b></h5>
</button>
</center>
</h5>
</div>
<div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordion">
<div class="card-body">
<center>
<h5>Akumulasi keuangan bulan ini</h5>
</center>
<div class="row">
<div class="col-md-4">
<div class="card" style="background-color: rgba(76, 175, 80, 0.9);">
<div class="card-body">
<center>
<h6>Pemasukan</h6><hr style="margin: 5px;">
<h4>Rp. <?php echo number_format($jumbulan[0]['pemasukan']); ?></h4>
</center>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" style="background-color: rgba(255, 193, 7, 0.7);">
<div class="card-body">
<center>
<h6>Pengeluaran</h6><hr style="margin: 5px;">
<h4>Rp. <?php echo number_format($jumbulan[0]['pengeluaran']); ?></h4>
</center>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" style="background-color: rgba(23, 162, 184, 0.7);">
<div class="card-body">
<center>
<h6>Saldo</h6><hr style="margin: 5px;">
<h4>Rp. <?php echo number_format($jumbulan[0]['saldo']); ?></h4>
</center>
</div>
</div>
</div>
</div>
<center>
<h5>Akumulasi keuangan tahun ini</h5>
</center>
<div class="row">
<div class="col-md-4">
<div class="card bg-success">
<div class="card-body">
<center>
<h6>Pemasukan</h6><hr style="margin: 5px;">
<h4>Rp. <?php echo number_format($jumtahun[0]['pemasukan']); ?></h4>
</center>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-warning">
<div class="card-body">
<center>
<h6>Pengeluaran</h6><hr style="margin: 5px;">
<h4>Rp. <?php echo number_format($jumtahun[0]['pengeluaran']); ?></h4>
</center>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-info">
<div class="card-body">
<center>
<h6>Saldo</h6><hr style="margin: 5px;">
<h4>Rp. <?php echo number_format($jumtahun[0]['saldo']); ?></h4>
</center>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php } if(in_array("36", $json_array[36])) { ?>
<div class="col-md-4">
<div class="p-2 border bg-light">
<div>
<a href="?<?php echo encrypt_url('maps_marker_topologi'); ?>" class="btn btn-sm btn-block">
<img src="dist/img/maps-monitoring.png" width="100%">
<h6>Maps Monitoring Titik Koordinat Pelanggan</h6>
</a>
<br>
</div>
<div class="card direct-chat direct-chat-primary">
<div class="card-header bg-danger">
<h3 class="card-title">Tiket Gangguan</h3>
<div class="card-tools">
<?php
$stmt = $pdo->prepare("SELECT COUNT(id) AS jumlahtiket FROM v_tiket_gangguan WHERE status = '1' $SqlDataId ");
$stmt->execute();
$datatiket = $stmt->fetchAll();
?>
<span title="3 New Messages" class="badge badge-light"><?php echo $datatiket[0]['jumlahtiket']; ?></span>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="direct-chat-messages" style="height: 450px">
<?php
$stmt = $pdo->prepare("SELECT * FROM v_tiket_gangguan WHERE status = '1' $SqlDataId ORDER BY start_time DESC");
$stmt->execute();
while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<a href="?<?php echo encrypt_url('tiket_buat') ?>">
<div class="card p-2 text-dark" style="border-left: 8px solid red">
<div class="row">
<div class="col-6">
<p class="m-0 text-danger"><?php echo $data['jenis_tiket']; ?></p>
<p class="m-0"><?php echo $data['nama_pelanggan'].' ('.$data['nama_server'].')'; ?></p>
<p class="m-0"><?php echo $data['start_time']; ?></p>
</div>
<div class="col-6 text-right">
<p class="m-0"><?php echo $data['permasalahan']; ?></p>
</div>
</div>
</div>
</a>
<?php } ?>
</div>
</div>
</div>
</div>
</div>
<?php } if(in_array("27", $json_array[27]) && in_array("28", $json_array[28])) { ?>
<!--<div class="col-md-8"> -->
<!-- <div class="p-2 border bg-light">-->
<!-- <div class="card-body">-->
<!-- <center>-->
<!-- <h5>Grafik Keuangan Tahunan</h5>-->
<!-- </center>-->
<!-- <label>Tahun</label>-->
<!-- <select id="yearSelect">-->
<!-- <option value="2024">2024</option>-->
<!-- <option value="2025">2025</option>-->
<!-- <option value="2026">2026</option>-->
<!-- </select>-->
<!-- <canvas id="reportChart"></canvas>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<?php } ?>
</div>
</div><!-- /.container-fluid -->
</section>
<!-- /.content -->
<style>
.equal-height {
display: flex;
flex-wrap: wrap;
}
.equal-height .col-md-8 {
display: flex;
flex-direction: column;
}
.equal-height .col-md-4 {
display: flex;
flex-direction: column;
}
.equal-height .p-2 {
flex: 1; /* Membuat kolom mengisi tinggi yang sama */
}
</style>
<script>
document.addEventListener('DOMContentLoaded', () => {
const canvas = document.getElementById('reportChart'); // Mendapatkan elemen canvas
const rcrt = canvas.getContext('2d'); // Mendapatkan konteks dari canvas
const yearSelect = document.getElementById('yearSelect');
const fullscreenBtn = document.getElementById('fullscreenBtn');
// Mengatur ukuran awal canvas
canvas.style.maxHeight = '350px'; // Kembali ke ukuran asli
canvas.style.width = '100%'; // Kembali ke ukuran asli
let reportChart; // Simpan referensi chart di sini
// Fungsi untuk mengambil data dari file PHP berdasarkan tahun
async function fetchData(year) {
try {
const response = await fetch(`load/data_report_dashboard.php?year=${year}&s=<?php echo $SqlDataId; ?>`);
const data = await response.json();
// console.log(data); // Log data yang diterima
const bulanSingkatan = ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'];
const bulanArray = bulanSingkatan.map((singkatan, index) => `${year}-${String(index + 1).padStart(2, '0')}`);
const pemasukan = new Array(12).fill(0);
const pengeluaran = new Array(12).fill(0);
const saldo = new Array(12).fill(0);
data.bulan.forEach((bulan, index) => {
const monthIndex = bulanArray.indexOf(bulan);
if (monthIndex !== -1) {
pemasukan[monthIndex] = data.pemasukan[index];
pengeluaran[monthIndex] = data.pengeluaran[index];
saldo[monthIndex] = data.saldo[index];
}
});
const report = {
labels: bulanSingkatan,
datasets: [
{
label: 'Pemasukan',
data: pemasukan,
backgroundColor: 'rgba(75, 192, 192)',
borderColor: 'rgb(75, 192, 192)',
borderWidth: 1
},
{
label: 'Pengeluaran',
data: pengeluaran,
backgroundColor: 'rgba(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
borderWidth: 1
},
{
label: 'Saldo',
data: saldo,
backgroundColor: 'rgba(54, 162, 235)',
borderColor: 'rgb(54, 162, 235)',
borderWidth: 1
}
]
};
// Hapus chart lama jika sudah ada
if (reportChart) {
reportChart.destroy();
}
const rconfig = {
type: 'bar',
data: report,
options: {
scales: {
y: {
beginAtZero: true,
ticks: {
callback: function(value) {
const absValue = Math.abs(value);
if (absValue >= 1000000) {
return (value / 1000000) + 'M';
} else if (absValue >= 1000) {
return (value / 1000) + 'K';
} else {
return value;
}
}
}
}
}
}
};
// Membuat chart baru
reportChart = new Chart(rcrt, rconfig);
} catch (error) {
console.error('Error fetching data:', error);
}
}
// Fungsi untuk mengaktifkan mode fullscreen
function toggleFullscreen() {
const canvasContainer = document.getElementById('reportChartid');
if (!document.fullscreenElement) {
canvasContainer.requestFullscreen().catch(err => {
console.error(`Error attempting to enable full-screen mode: ${err.message}`);
});
} else {
document.exitFullscreen();
}
}
// Event listener untuk tombol fullscreen
fullscreenBtn.addEventListener('click', toggleFullscreen);
// Memanggil fungsi untuk mengambil data saat halaman dimuat
fetchData(yearSelect.value);
// Menangani perubahan tahun
yearSelect.addEventListener('change', () => {
fetchData(yearSelect.value);
});
// Mengatur tinggi canvas saat masuk dan keluar fullscreen
document.addEventListener('fullscreenchange', () => {
if (document.fullscreenElement) {
canvas.style.height = ''; // Kembali ke ukuran asli
canvas.style.maxHeight = '100%';
canvas.style.width = '100%'; // Atur lebar canvas menjadi 100vw
fullscreenBtn.textContent = 'Close Fullscreen';
} else {
canvas.style.height = ''; // Kembali ke ukuran asli
canvas.style.maxHeight = '350px'; // Kembali ke max-height asli
canvas.style.width = '100%'; // Kembali ke lebar asli
fullscreenBtn.textContent = 'Fullscreen';
}
});
});
</script>
+345
View File
@@ -0,0 +1,345 @@
<?php
if (isset($_POST['tambah']))
{
$menu_ids = $_POST['menu_ids'];
$db = mysqli_query($con, "SELECT * FROM master_menu");
if ($db) {
while ($menu = mysqli_fetch_assoc($db)) {
$menuid = $menu['id'];
if (isset($menu_ids[$menuid])) {
$menutam = !empty($menu['user_menu']) ? explode("_", $menu['user_menu']) : [];
if (isset($menu_ids[$menuid]['sub_menu']) && is_array($menu_ids[$menuid]['sub_menu'])) {
foreach ($menutam as $key) {
if (!in_array($key, $menu_ids[$menuid]['sub_menu'])) {
$menu_ids[$menuid]['sub_menu'][] = $key;
}
}
} else {
$menu_ids[$menuid]['sub_menu'] = $menutam;
}
}
}
$json_string = json_encode($menu_ids);
}
$nominal = preg_replace("/[^0-9]/","",$_POST['hsw']);
$hashedPassword = password_hash($_POST[psw], PASSWORD_DEFAULT);
$SQL = "
INSERT INTO data_server (nama_server, nama_pemilik, nomor_whatsapp, alamat, kabupaten, username, password, harga_sewa, akses, status, pesan_kirim_tagihan, pesan_peringatan_tagihan, pesan_isolir_pelanggan, pesan_melunasi_tagihan, pesan_koneksi_off, pesan_registrasi, pesan_aktivasi)
VALUES ('$_POST[nsv]', '$_POST[npl]', '$_POST[nwa]', '$_POST[alt]', '', '$_POST[usm]', '$hashedPassword', '$nominal', '$json_string', 'Aktif', '*TAGIHAN LAYANAN INTERNET*\r\n\r\n#ket\r\nLimit Pembayaran tanggal #lmt\r\n\r\nNama : *#usr*\r\nLayanan : #lyn\r\n\r\nJumlah Tagihan : *Rp. #tot*\r\n\r\n_#Pesan Otomatis Sistem_', 'Pelanggan yang terhormat,\r\na/n. *#usr*\r\n\r\nHari ini adalah hari terakhir untuk melakukan pembayaran internet dengan total perbayaran sebagai berikut :\r\nTotal Tagihan : *Rp. #tot*\r\n\r\n_#Pesan Otomatis Sistem_', 'Pelanggan yang terhormat,\r\nMohon maaf saat ini internet kita matikan, karena anda belum melunasi tagihan, Lakukanlah pembayaran untuk terus menikmati layanan kami. \r\nTerimakasih..!!\r\n\r\n_#Pesan Otomatis Sistem_', 'Terimakasih telah melakukan pembayaran tagihan layanan internet\r\n\r\n_#Pesan otomatis sistem_', 'Pelanggan yang terhormat,\r\nStatus koneksi anda termonitor OFF dari server kami beberapa menit lalu, Jika ada kendala silahkan hubungi atau informasikan kepada kami.\r\nTerimakasih..!!', '*REGISTRASI PELANGGAN BARU*\r\n\r\nAtas Nama : *#usr*\r\nAlamat : #add\r\n\r\nLayanan\r\nJenis Layanan : #jly\r\nPaket Berlanggaan : #lyn\r\nHarga Layanan : *#hly*\r\n\r\n#Status : *Pendaftaran berhasil*\r\n\r\n_#Pesan Otomatis Sistem_', 'Pelanggan yang terhormat,\nLayanan anda telah di Aktivasi\n\nNama : *#usr*\nID : #ppp\n\nSelamat menikmati layanan internet kami \nTerimakasih.\n\n_#Pesan Otomatis Sistem_')";
$input = mysqli_query($con, $SQL);
if ($input)
{
sweetAlert("Data telah di tambah", "success");
}
}
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Server Akses</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<!--<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>-->
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Server Aplikasi</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<input type="text" class="form-control" name="nsv" required="required">
</div>
<div class="form-group">
<label>Nama Pemilik</label>
<input type="text" class="form-control" name="npl" required="required">
</div>
<div class="form-group">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nwa" required="required">
</div>
<div class="form-group">
<label>Alamat</label>
<input type="text" class="form-control" name="alt" required="required">
</div>
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" name="usm" required="required">
</div>
<div class="form-group">
<label>Password</label>
<input type="text" class="form-control" name="psw" required="required">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Harga Sewa</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="hsw" required="required">
</div>
<label>List Akses</label><br>
<div class="row">
<?php
$db = mysqli_query($con, "SELECT * FROM master_menu WHERE master_akses = '1' ORDER BY urutan");
while ($menu = mysqli_fetch_assoc($db)) {
$menu_id = htmlspecialchars($menu['id']);
echo '<div class="col-6">';
echo '<div class="form-group form-check">';
echo '<input type="checkbox" class="form-check-input" value="' . $menu_id . '" name="menu_ids[' . $menu_id . '][menu]" checked>';
echo '<label class="form-check-label" for="exampleCheck' . $menu['id'] . '">' . $menu['nama'] . '</label>';
echo '</div>';
echo '</div>';
}
?>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Alamat</th>
<th>Nama Admin</th>
<th>Nomor WhatsApp</th>
<th>Harga Sewa</th>
<th>Status</th>
<th>Expired</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM data_server WHERE id !='1' ORDER BY expaired_date DESC");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td style="max-width : 130px;"><?php echo $server['alamat']; ?></td>
<td><?php echo $server['nama_pemilik']; ?></td>
<td style="max-width : 100px;"><?php echo $server['nomor_whatsapp']; ?></td>
<td>Rp. <?php echo number_format($server['harga_sewa']); ?></td>
<td><?php
if ($server['expaired_date'] >= date('Y-m-d')) { ?>
<span class="badge badge-success">Aktif</span>
<?php } else { ?>
<span class="badge badge-danger">Tidak Aktif</span>
<?php } ?>
</td>
<td><?php echo formatIndo($server['expaired_date']); ?></td>
<td>
<form method="post" enctype="multipart/form-data">
<a href="?<?php echo encrypt_url('detail_data_server|'.$server['id']); ?>" class="btn btn-info btn-sm m-1">Detail</a>
<a type="button" class="btn btn-secondary btn-sm m-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit
</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" class="btn btn-danger btn-sm m-1" value="Hapus">
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Server Aplikasi</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<input type="text" class="form-control" value="<?php echo $server['nama_server']; ?>" name="nsv" required="required">
</div>
<div class="form-group">
<label>Nama Pemilik</label>
<input type="text" class="form-control" value="<?php echo $server['nama_pemilik']; ?>" name="npl" required="required">
</div>
<div class="form-group">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" value="<?php echo $server['nomor_whatsapp']; ?>" name="nwa" required="required">
</div>
<div class="form-group">
<label>Alamat</label>
<input type="text" class="form-control" value="<?php echo $server['alamat']; ?>" name="alt" required="required">
</div>
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" value="<?php echo $server['username']; ?>" name="usm" required="required">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Harga Sewa</label>
<input type="text" class="form-control rupiah" id="rupiah0" value="<?php echo $server['harga_sewa']; ?>" name="hsw" required="required">
</div>
<div class="form-group">
<label>Status Aplikasi</label>
<select class="form-control" name="stt">
<option value="Aktif" <?php if($server['status'] == 'Aktif') { echo "selected";} ?>>Aktif</option>
<option value="Tidak Aktif" <?php if($server['status'] == 'Tidak Aktif') { echo "selected";} ?>>Tidak Aktif</option>
</select>
</div>
<label>List Akses</label><br>
<div class="row">
<?php
// Query untuk mendapatkan data dari database
$db = mysqli_query($con, "SELECT * FROM master_menu WHERE master_akses = '1' AND master = '0' ORDER BY urutan");
if ($db) {
// JSON data (pastikan JSON ini berasal dari sumber yang benar)
$json_data = $server['akses'];
// Decode JSON data
$json_array = json_decode($json_data, true);
// echo "<pre>";
// print_r($json_array);
// echo "</pre>";
while ($menu = mysqli_fetch_assoc($db)) {
$menu_id = htmlspecialchars($menu['id']);
$menu_name = htmlspecialchars($menu['nama']);
$user_menu = !empty($menu['user_menu']) ? explode("_", $menu['user_menu']) : [];
$checked_menu = isset($json_array[$menu_id]);
echo '<div class="col-6">';
echo ' <div class="form-group form-check">';
echo ' <input type="checkbox" class="form-check-input" value="' . $menu_id . '" name="menu_ids[' . $menu_id . '][menu]" ' . ($checked_menu ? 'checked' : '') . '>';
echo ' <label class="form-check-label" for="exampleCheck' . $menu_id . '">' . $menu_name . '</label>';
echo ' </div>';
echo '</div>';
}
// Pastikan untuk membebaskan hasil query
mysqli_free_result($db);
} else {
echo 'Error executing query: ' . mysqli_error($con);
}
// Tutup koneksi
// mysqli_close($con);
?>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id'];?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$menu_ids = $_POST['menu_ids'];
$db = mysqli_query($con, "SELECT * FROM master_menu");
if ($db) {
while ($menu = mysqli_fetch_assoc($db)) {
$menuid = $menu['id'];
if (isset($menu_ids[$menuid])) {
$menutam = !empty($menu['user_menu']) ? explode("_", $menu['user_menu']) : [];
if (isset($menu_ids[$menuid]['sub_menu']) && is_array($menu_ids[$menuid]['sub_menu'])) {
foreach ($menutam as $key) {
if (!in_array($key, $menu_ids[$menuid]['sub_menu'])) {
$menu_ids[$menuid]['sub_menu'][] = $key;
}
}
} else {
$menu_ids[$menuid]['sub_menu'] = $menutam;
}
}
}
$json_string = json_encode($menu_ids);
}
$hashedPassword = password_hash($_POST[psw], PASSWORD_DEFAULT);
$nominal = preg_replace("/[^0-9]/","",$_POST['hsw']);
$input = mysqli_query($con,"UPDATE data_server SET
nama_server='$_POST[nsv]',
nama_pemilik='$_POST[npl]',
nomor_whatsapp='$_POST[nwa]',
alamat='$_POST[alt]',
username='$_POST[usm]',
harga_sewa='$nominal',
akses='$json_string',
status='$_POST[stt]'
WHERE id = '$server[id]' ");
if ($input)
{
sweetAlert("Data telah di ubah", "success");
}
}
if (isset($_POST['hapus'.$server['id']])) {
$iddata = $server['id'];
deleteAlert("data_server", $iddata);
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+510
View File
@@ -0,0 +1,510 @@
<?php
// if (isset($_SESSION['user']))
// {
// $id = $_SESSION['user'];
// $stmt = $pdo->prepare("SELECT * FROM user_akses WHERE id = :id");
// $stmt->bindParam(':id', $id, PDO::PARAM_INT);
// $stmt->execute();
// $data = $stmt->fetchAll();
// $nama = $data[0]['nama'];
// $nomor = $data[0]['nomor_whatsapp'];
// $username = $data[0]['username'];
// $email = $data[0]['email'];
// $profile = $data[0]['profile'];
// }
// elseif (isset($_SESSION['master']))
// {
// $id = $_SESSION['master'];
// $stmt = $pdo->prepare("SELECT * FROM data_server WHERE id = :id");
// $stmt->bindParam(':id', $id, PDO::PARAM_INT);
// $stmt->execute();
// $data = $stmt->fetchAll();
// $nama = $data[0]['nama_pemilik'];
// $nomor = $data[0]['nomor_whatsapp'];
// $username = $data[0]['username'];
// $email = $data[0]['email'];
// $profile = $data[0]['profile'];
// }
$id = $page[1];
$stmt = $pdo->prepare("SELECT * FROM data_server WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
$nama = $data[0]['nama_pemilik'];
$nomor = $data[0]['nomor_whatsapp'];
$username = $data[0]['username'];
$email = $data[0]['email'];
$profile = $data[0]['profile'];
// echo "<pre>";
// print_r($data);
// echo "</pre>";
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-info">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Detail Data Server</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-5">
<div class="card">
<div class="card-body">
<form method="post" enctype="multipart/form-data">
<table class="table table-borderless">
<center>
<label>Foto Profile</label>
<div class="uploadImage" data-id="profile" style="width: 25%; zoom: 60%;">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
<tbody>
<tr>
<td class="p-2">Nama</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $nama; ?>" name="nama" required="required"></td>
</tr>
<tr>
<td class="p-2">Nomor WhatsApp</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $nomor; ?>" name="nomor" required="required"></td>
</tr>
<tr>
<td class="p-2">Username</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $username; ?>" name="username" required="required"></td>
</tr>
<tr>
<td class="p-2">Email</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $email; ?>" name="email" required="required"></td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-sm btn-primary m-1" name="simpan" value="Simpan">
</form>
<?php if (isset($_SESSION['user'])) { ?>
<button class="btn btn-primary btn-block text-center" id="absenButton" onclick="handleAbsen()">Loading...</button>
<script>
let absenStatus = 'belum'; // default
function updateButtonFromStatus() {
absenStatus = AndroidInterface.getTrackingStatus();
const btn = document.getElementById('absenButton');
if (absenStatus === 'masuk') {
btn.innerText = 'Absen Keluar';
} else {
btn.innerText = 'Absen Masuk';
}
}
function handleAbsen() {
const userId = '<?=$id?>';
const btn = document.getElementById('absenButton');
if (absenStatus === 'masuk') {
AndroidInterface.stopTracking();
absenStatus = 'belum';
btn.innerText = 'Absen Masuk';
} else {
AndroidInterface.startTracking(userId);
absenStatus = 'masuk';
btn.innerText = 'Absen Keluar';
}
}
window.onload = updateButtonFromStatus;
</script>
<?php } ?>
<hr>
<form method="post" enctype="multipart/form-data">
<table class="table table-borderless">
<center>
<label>Ubah Password</label>
</center>
<tbody>
<tr>
<td class="p-2">Password</td>
<td class="p-2">:</td>
<td class="p-2">
<div class="input-group mb-4">
<input type="password" class="form-control" name="password" placeholder="Password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-eye toggle-password" style="cursor: pointer;"></span>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td class="p-2">Confirm Password</td>
<td class="p-2">:</td>
<td class="p-2">
<div class="input-group mb-4">
<input type="password" class="form-control" name="confirm_password" placeholder="Ulangi Password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-eye toggle-password" style="cursor: pointer;"></span>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-sm btn-primary m-1" name="simpanPassword" value="Simpan Password">
</form>
</div>
</div>
</div>
<div class="col-md-7">
<?php $data1111 = "123"; if (isset($id) && $data1111 == "123") { ?>
<div class="card">
<div class="card-body">
<a type="button" class="btn btn-info btn-sm mb-3" data-toggle="modal" data-target="#staticBackdrop">Perpanjang Sewa</a>
<?php
$expiredDate = $data[0]['expaired_date'];
$currentDate = date('Y-m-d');
$diff = strtotime($expiredDate) - strtotime($currentDate);
$daysLeft = ceil($diff / (60 * 60 * 24));
?>
<?php if ($daysLeft <= 0) { ?>
<div class="card bg-danger text-center mb-1">
<p class="mb-0">Telah berakhir <b><?php echo substr($daysLeft,1); ?></b> hari lalu</p>
</div>
<?php } else { ?>
<div class="card bg-success text-center mb-1">
<p class="mb-0">Akan berakhir <b><?php echo $daysLeft; ?></b> hari lagi</p>
</div>
<?php } ?>
<h5 class="text-center">Tanggal Kedaluarsa : <?php echo $expiredDate; ?></h5>
<hr>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Pilih Periode Pembayaran</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="font-size: 20px;">
<?php
$harga_sewa = $data[0]['harga_sewa'];
$harga1bln = $harga_sewa;
$harga3bln = $harga_sewa * 3 * 0.95;
$harga6bln = $harga_sewa * 6 * 0.90;
$harga12bln = $harga_sewa * 12 * 0.85;
?>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio1" value="<?php echo $harga1bln; ?>" name="customRadio" checked>
<label for="customRadio1" class="custom-control-label">Pembayaran 1 Bulan => Rp. <?php echo number_format($harga1bln, 0, ',', '.'); ?></label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio2" value="<?php echo $harga3bln; ?>" name="customRadio">
<label for="customRadio2" class="custom-control-label">Pembayaran 3 Bulan => Rp. <?php echo number_format($harga3bln, 0, ',', '.'); ?></label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio3" value="<?php echo $harga6bln; ?>" name="customRadio">
<label for="customRadio3" class="custom-control-label">Pembayaran 6 Bulan => Rp. <?php echo number_format($harga6bln, 0, ',', '.'); ?></label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio4" value="<?php echo $harga12bln; ?>" name="customRadio">
<label for="customRadio4" class="custom-control-label">Pembayaran 12 Bulan => Rp. <?php echo number_format($harga12bln, 0, ',', '.'); ?></label>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="konfirmasi" class="btn btn-primary" value="Konfirmasi">
</div>
</form>
<?php
if (isset($_POST['konfirmasi'])) {
$harga = $_POST['customRadio'] ?? 0;
$expaired = $UserMaster['expaired_date'];
$keterangan = '';
switch ($harga) {
case $harga1bln:
$expaired = date('Y-m-d', strtotime('+1 month', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 1 Bulan";
break;
case $harga3bln:
$expaired = date('Y-m-d', strtotime('+3 months', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 3 Bulan";
break;
case $harga6bln:
$expaired = date('Y-m-d', strtotime('+6 months', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 6 Bulan";
break;
case $harga12bln:
$expaired = date('Y-m-d', strtotime('+12 months', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 12 Bulan";
break;
default:
// Handle the case where the value of customRadio is not expected
$expaired = $UserMaster['expaired_date'];
$keterangan = "Pembayaran tidak valid";
break;
}
// Set waktu transaksi
$waktu = date('Y-m-d H:i:s');
function generateOrderId($pdo) {
do {
//"ORDER_ID_" .
$order_id = sprintf('%010d', mt_rand(0, 9999999999999)); // Generate 13 digit number
$stmt = $pdo->prepare("SELECT COUNT(*) FROM apk_payment WHERE order_id = :order_id");
$stmt->bindParam(':order_id', $order_id);
$stmt->execute();
$exists = $stmt->fetchColumn();
} while ($exists > 0);
return $order_id;
}
$order_id = generateOrderId($pdo);
// Prepare and execute the SQL statement
$stmt = $pdo->prepare("INSERT INTO apk_payment
(id_data_server, order_id, keterangan, waktu_transaksi, nominal, expaired_time, status)
VALUES
(:id, :order_id, :keterangan, :waktu_transaksi, :nominal, :expaired_time, 'BELUM DIBAYAR')");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->bindParam(':order_id', $order_id);
$stmt->bindParam(':keterangan', $keterangan);
$stmt->bindParam(':waktu_transaksi', $waktu);
$stmt->bindParam(':nominal', $harga);
$stmt->bindParam(':expaired_time', $expaired);
// Execute the statement
if ($stmt->execute()) {
sweetAlert("Pembayaran Telah dibuat, silahkan lanjutkan proses pembayaran", "success");
// Redirect to checkout process or any other page
// header("Location: ../midtrans/examples/snap/checkout-process-simple-version.php");
// exit();
} else {
sweetAlert("Terjadi kesalahan dalam proses pembayaran", "error");
}
}
?>
</div>
</div>
</div>
<h6>Riwayat Pembayaran</h6>
<table id="example2" class="table table-bordered" style="zoom: 90%;">
<thead>
<tr>
<th>Order Time</th>
<th>Priode</th>
<th>Nominal</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Query untuk mengambil data dari tabel apk_payment
$stmt = $pdo->prepare("SELECT * FROM apk_payment WHERE id_data_server = :id ORDER BY waktu_transaksi");
$stmt->bindParam(':id', $id);
$stmt->execute();
// Ambil semua hasil dari query
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
?>
<tr>
<td><?php echo htmlspecialchars($row['waktu_transaksi']); ?></td>
<td><?php echo htmlspecialchars($row['keterangan']); ?></td>
<td><?php echo number_format($row['nominal'], 0, ',', '.'); ?></td>
<td><?php echo htmlspecialchars($row['status']); ?></td>
<td>
<form method="post">
<?php if($row['status'] == 'PENDING' || $row['status'] == 'BELUM DIBAYAR') { ?>
<a href="payment/paydisini/?order_id=<?php echo htmlspecialchars($row['order_id']); ?>" class="btn btn-sm btn-primary m-1">Bayar</a>
<?php if($row['status'] == 'BELUM DIBAYAR') { ?>
<input type="submit" name="hapus<?php echo $row['id']; ?>" class="btn btn-sm btn-danger m-1" value="Hapus" >
<?php } } else { ?>
<a href="payment/paydisini/?order_id=<?php echo htmlspecialchars($row['order_id']); ?>" class="btn btn-sm btn-secondary m-1">Detail</a>
<?php } ?>
</form>
</td>
</tr>
<?php
if(isset($_POST['hapus'.$row['id']]))
{
$iddata = $row['id'];
deleteAlert("apk_payment",$iddata );
}
}
?>
</tbody>
</table>
</div>
</div>
<?php } else { if($status_menu == "Tidak Aktif") { ?>
<div class="card">
<div class="card-body">
<center>
<h2 class="text-danger"><b>ACCESS DENIED</b></h2>
<img src="dist/img/denied.jpg" width="50%">
<h5>Silahkan hubungi admin untuk mengaktifkan akses aplikasi</h5>
</center>
</div>
</div>
<?php } } ?>
</div>
</div>
</div>
<div class="card-footer">
</div>
</div>
</div>
</div>
</div>
</section>
<?php
// if (isset($_POST['simpanPassword'])) {
// if ($_POST['password'] == $_POST['confirm_password']) {
// $hashedPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
// if (isset($_SESSION['user']['id'])) {
// $stmt = $pdo->prepare("UPDATE user_akses SET password = :password WHERE id = :idtik");
// $stmt->bindParam(':password', $hashedPassword);
// $stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
// $stmt->execute();
// session_destroy();
// sweetAlert("Password telah di ubah silahkan Login kembali", "success", baseurl('../login'));
// } elseif(isset($_SESSION['master']['id'])) {
// $stmt = $pdo->prepare("UPDATE data_server SET password = :password WHERE id = :idtik");
// $stmt->bindParam(':password', $hashedPassword);
// $stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
// $stmt->execute();
// session_destroy();
// sweetAlert("Password telah di ubah silahkan Login kembali", "success", baseurl('../login'));
// }
// }else{
// sweetAlert("Password tidak sesuai, mohon periksa kembali", "info");
// }
// }
// if (isset($_POST['simpan'])) {
// // Validasi jika file sudah di-upload
// if (!empty($_SESSION['uploaded_files']['profile'])) {
// try {
// // Pastikan PDO instance sudah diinisialisasi (contoh: $pdo)
// $id = $_SESSION['user'] ?? $_SESSION['master'] ?? null;
// if ($id === null) {
// sweetAlert("ID pengguna tidak ditemukan.", "error");
// exit;
// }
// // Tentukan tabel dan kolom sesuai role
// if (isset($_SESSION['user'])) {
// $table = "user_akses";
// $columns = [
// 'email' => $_POST['email'],
// 'nama' => $_POST['nama'],
// 'nomor_whatsapp' => $_POST['nomor'],
// 'username' => $_POST['username'],
// 'profile' => $_SESSION['uploaded_files']['profile'],
// ];
// } elseif (isset($_SESSION['master'])) {
// $table = "data_server";
// $columns = [
// 'email' => $_POST['email'],
// 'nama_pemilik' => $_POST['nama'],
// 'nomor_whatsapp' => $_POST['nomor'],
// 'username' => $_POST['username'],
// 'profile' => $_SESSION['uploaded_files']['profile'],
// ];
// } else {
// sweetAlert("Role pengguna tidak valid.", "error");
// exit;
// }
// // Siapkan query dan bind parameter
// $setPart = [];
// foreach ($columns as $key => $value) {
// $setPart[] = "$key = :$key";
// }
// $query = "UPDATE $table SET " . implode(", ", $setPart) . " WHERE id = :id";
// $stmt = $pdo->prepare($query);
// foreach ($columns as $key => $value) {
// $stmt->bindValue(":$key", $value);
// }
// $stmt->bindValue(':id', $id, PDO::PARAM_INT);
// // Eksekusi query
// $stmt->execute();
// // Feedback ke pengguna
// sweetAlert("Profile telah di edit", "success");
// } catch (PDOException $e) {
// sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
// }
// } else {
// sweetAlert("Gambar belum di upload", "error");
// }
// }
// $_SESSION['uploaded_files']['profile'] = $profile;
?>
<script>
document.querySelectorAll('.toggle-password').forEach(function(toggle) {
toggle.addEventListener('click', function() {
// Mengambil elemen input yang bersangkutan
const input = this.closest('.input-group').querySelector('input');
// Mengubah tipe input
if (input.type === 'password') {
input.type = 'text';
this.classList.remove('fa-eye');
this.classList.add('fa-eye-slash');
} else {
input.type = 'password';
this.classList.remove('fa-eye-slash');
this.classList.add('fa-eye');
}
});
});
</script>
+7
View File
@@ -0,0 +1,7 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<center>
<img src="https://tik.uns.ac.id/assets/FlexStart/assets/img/hero-img.png">
<h4>Mohon Maaf untuk fitur ini belum tersedia</h4>
</center>
View File
+229
View File
@@ -0,0 +1,229 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Generate Voucher Auto Pilot</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<!--<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>-->
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-3 mb-2">
</div>
<div class="col-md-6">
<center>
<p>Akumulasi Keuangan Voucher</p>
</center>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-6">
<!-- small box -->
<div class="small-box bg-info" id="penjualanBox">
<div class="inner">
<h4 id="totalValue">0</h4>
<p>Total Penjualan</p>
</div>
<div class="icon">
<i class="ion ion-card"></i>
</div>
</div>
</div>
<div class="col-lg-4 col-6">
<!-- small box -->
<div class="small-box bg-danger" id="lunasBox">
<div class="inner">
<h4 id="ditahanValue">0</h4>
<p>Saldo Ditahan</p>
</div>
<div class="icon">
<i class="ion ion-card"></i>
</div>
</div>
</div>
<div class="col-lg-4 col-6">
<!-- small box -->
<div class="small-box bg-success" id="pendingBox">
<div class="inner">
<h4 id="tersediaValue">0</h4>
<p>Saldo Tersedia</p>
</div>
<div class="icon">
<i class="ion ion-card"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-3 mb-2">
</div>
<div class="col-md-6">
<center>
<p>Akumulasi Voucher</p>
</center>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-info" id="pendingBox">
<div class="inner">
<h4 id="jumtotalValue">0</h4>
<p>Total Voucher</p>
</div>
<div class="icon">
<i class="ion ion-android-wifi"></i>
</div>
</div>
</div>
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-warning" id="pendingBox">
<div class="inner">
<h4 id="jumbelumValue">0</h4>
<p>Belum Aktif</p>
</div>
<div class="icon">
<i class="ion ion-wifi"></i>
</div>
</div>
</div>
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-success" id="pendingBox">
<div class="inner">
<h4 id="jumsedangValue">0</h4>
<p>Sedang Aktif</p>
</div>
<div class="icon">
<i class="ion ion-android-wifi"></i>
</div>
</div>
</div>
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-danger" id="pendingBox">
<div class="inner">
<h4 id="jumsudahValue">0</h4>
<p>Sudah Kedaluarsa</p>
</div>
<div class="icon">
<i class="ion ion-wifi"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!--ISI KONTEN-->
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<script>
// // Fungsi untuk menetapkan bulan saat ini sebagai nilai default di dropdown
// function setDefaultMonth() {
// // Dapatkan bulan dan tahun saat ini
// var now = new Date();
// var currentMonth = now.getMonth() + 1; // getMonth() menghasilkan bulan 0-11, jadi kita tambahkan 1
// var currentYear = now.getFullYear();
// // Format bulan dalam format YYYY-MM
// var currentMonthString = currentYear + '-' + (currentMonth < 10 ? '0' + currentMonth : currentMonth);
// // Atur nilai default pada dropdown
// document.getElementById('pilihBulan').value = currentMonthString;
// // Panggil fungsi untuk mengambil data berdasarkan bulan saat ini
// fetchDataAgen();
// }
// Fungsi untuk mengambil data agen berdasarkan bulan yang dipilih
function fetchDataAgen() {
// Ambil nilai ID dan generate_time dari server-side (misalnya dari halaman PHP sebelumnya)
var idDataServer = <?php echo $SvId; ?>; // Ganti dengan ID yang sesuai atau ambil dari variabel PHP
// Buat request dengan menggunakan XMLHttpRequest
var xhr = new XMLHttpRequest();
xhr.open("GET", "list_data/data_akumulasi_pendapatan.php?id=" + idDataServer, true);
// Ketika request selesai diproses
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // 4 berarti request telah selesai
if (xhr.status === 200) { // Jika status sukses (200)
// Parse data JSON dari PHP
var response = JSON.parse(xhr.responseText);
// Pastikan data tersedia sebelum mengaksesnya
if (response && response.length > 0) {
// Ambil data dari response (jika ada)
var data = response[0];
// Ambil nilai atau set ke 0 jika tidak ada
var total = parseFloat(data.total) || 0;
var ditahan = parseFloat(data.ditahan) || 0;
var tersedia = parseFloat(data.tersedia) || 0;
// var jumlah_voucher = parseInt(data.total_voucher) || 0;
// var jumlah_voucher_belum_aktif = parseInt(data.total_voucher_belum_aktif) || 0;
// var jumlah_voucher_aktif = parseInt(data.total_voucher_aktif) || 0;
// var jumlah_voucher_expaired = parseInt(data.total_voucher_expaired) || 0;
// Format angka dengan pemisah ribuan
total = total.toLocaleString();
ditahan = ditahan.toLocaleString();
tersedia = tersedia.toLocaleString();
// Masukkan data ke dalam elemen HTML yang sesuai
document.getElementById('totalValue').innerText = "Rp. "+total;
document.getElementById('ditahanValue').innerText = "Rp. "+ditahan;
document.getElementById('tersediaValue').innerText = "Rp. "+tersedia;
// document.getElementById('jumtotalValue').innerText = jumlah_voucher.toLocaleString();
// document.getElementById('jumbelumValue').innerText = jumlah_voucher_belum_aktif.toLocaleString();
// document.getElementById('jumsedangValue').innerText = jumlah_voucher_aktif.toLocaleString();
// document.getElementById('jumsudahValue').innerText = jumlah_voucher_expaired.toLocaleString();
} else {
// Jika data tidak ditemukan atau kosong
document.getElementById('result').innerHTML = "Tidak ada data untuk bulan yang dipilih.";
}
} else {
// Jika ada masalah dengan request
document.getElementById('result').innerHTML = "Error: Tidak dapat mengambil data.";
}
}
};
// Kirimkan request
xhr.send();
}
// Panggil fungsi setDefaultMonth saat halaman dimuat
window.onload = fetchDataAgen();
</script>
+313
View File
@@ -0,0 +1,313 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Group Akses</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Group Akses</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-4">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" name="nmk" required="required">
</div>
<div class="form-group form-check-inline">
<input type="checkbox" class="form-check-input" value="Y" name="market">
<label class="form-check-label">Data Hanya Tiap Marketing</label>
</div>
<div class="form-group form-check-inline">
<input type="checkbox" class="form-check-input" value="Y" name="tagihanberjalan">
<label class="form-check-label">Hanya Muncul Tagihan Bulan Berjalan di Tunggakan</label>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="card-body pb-0">
<div class="form-group">
<label>List Akses</label><br>
<div class="row">
<?php
// Query untuk mengambil data menu
$db = mysqli_query($con, "SELECT * FROM master_menu WHERE user_akses = '1' AND master = '0' ORDER BY urutan");
// Periksa jika query berhasil
if ($db) {
while ($menu = mysqli_fetch_assoc($db)) {
$menu_id = htmlspecialchars($menu['id']);
$menu_name = htmlspecialchars($menu['nama']);
$user_menu = !empty($menu['user_menu']) ? explode("_", $menu['user_menu']) : [];
echo '<div class="col-6">';
echo ' <div class="form-group form-check">';
echo ' <input type="checkbox" class="form-check-input" value="' . $menu_id . '" name="menu_ids[' . $menu_id . '][menu]" checked>';
echo ' <label class="form-check-label" for="exampleCheck' . $menu_id . '">' . $menu_name . '</label>';
echo ' </div>';
if ($user_menu) {
foreach ($user_menu as $keymenu) {
$keymenu = htmlspecialchars($keymenu);
echo ' <div class="form-group form-check-inline">';
echo ' <input type="checkbox" class="form-check-input" value="' . $keymenu . '" name="menu_ids[' . $menu_id . '][sub_menu][]" checked>';
echo ' <label class="form-check-label" for="exampleCheck' . $keymenu . '">' . $keymenu . '</label>';
echo ' </div>';
}
}
echo '</div>';
}
} else {
echo 'Error executing query: ' . mysqli_error($con);
}
?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah1" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah1'])) {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['menu_ids'])) {
$menu_ids = $_POST['menu_ids'];
}
$json_string = json_encode($menu_ids, JSON_PRETTY_PRINT);
echo $json_string;
$input = mysqli_query($con,"INSERT INTO group_akses (id_data_server, nama, akses, per_marketing, tagihan_berjalan) VALUES ('$_POST[ids]','$_POST[nmk]','$json_string', '$_POST[market]', '$_POST[tagihanberjalan]')");
if ($input)
{
sweetAlert("Data telah di tambah", "success", "?".encrypt_url('group_akses'));
}
}
}
?>
</div>
</div>
</div>
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Server</th>
<th>Nama Group</th>
<th>Marketing</th>
<th>Tunggakan Bulan Berjalan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$apaket = mysqli_query($con,"SELECT * FROM v_group_akses $SqlDataWHId");
while ($group = mysqli_fetch_assoc($apaket))
{
?>
<tr>
<td><?php echo $group['nama_server']; ?></td>
<td><?php echo $group['nama']; ?></td>
<td><?php echo $group['per_marketing']; ?></td>
<td><?php echo $group['tagihan_berjalan']; ?></td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm m-1" data-toggle="modal" data-target="#modal-edit<?php echo $group['id'];?>">Edit
</a>
<input type="submit" class="btn btn-danger btn-sm m-1" name="hapus<?php echo $group['id'];?>" value="Hapus">
</form>
</td>
</tr>
<!-- Modal Info -->
<div class="modal fade" id="modal-edit<?php echo $group['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<!-- <div class="modal fade" id="modal-edit<?php echo $group['id'];?>"> -->
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Group Akses</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-sm-4">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="eids">
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $group['id_data_server']) { echo "selected";} ?>><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" name="enmk" value="<?php echo $group['nama']; ?>" required="required">
</div>
<div class="form-group form-check-inline">
<input type="checkbox" class="form-check-input" value="Y" name="market" <?php if($group['per_marketing'] == 'Y') { echo "checked"; } ?>>
<label class="form-check-label">Data Hanya Tiap Marketing</label>
</div>
<div class="form-group form-check-inline">
<input type="checkbox" class="form-check-input" value="Y" name="tagihanberjalan" <?php if($group['tagihan_berjalan'] == 'Y') { echo "checked"; } ?>>
<label class="form-check-label">Hanya Muncul Tagihan Bulan Berjalan di Tunggakan</label>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="card-body pb-0">
<div class="form-group">
<label>List Akses</label><br>
<div class="row">
<?php
// Query untuk mendapatkan data dari database
$db = mysqli_query($con, "SELECT * FROM master_menu WHERE user_akses = '1' AND master = '0' ORDER BY urutan");
if ($db) {
// JSON data (pastikan JSON ini berasal dari sumber yang benar)
$json_data = $group['akses'];
// Decode JSON data
$json_array = json_decode($json_data, true);
// echo "<pre>";
// print_r($json_array);
// echo "</pre>";
while ($menu = mysqli_fetch_assoc($db)) {
$menu_id = htmlspecialchars($menu['id']);
$menu_name = htmlspecialchars($menu['nama']);
$user_menu = !empty($menu['user_menu']) ? explode("_", $menu['user_menu']) : [];
$checked_menu = isset($json_array[$menu_id]);
echo '<div class="col-6">';
echo ' <div class="form-group form-check">';
echo ' <input type="checkbox" class="form-check-input" value="' . $menu_id . '" name="menu_ids[' . $menu_id . '][menu]" ' . ($checked_menu ? 'checked' : '') . '>';
echo ' <label class="form-check-label" for="exampleCheck' . $menu_id . '">' . $menu_name . '</label>';
echo ' </div>';
if ($user_menu) {
$sub_menu_data = $checked_menu ? $json_array[$menu_id]['sub_menu'] : [];
foreach ($user_menu as $keymenu) {
$keymenu = htmlspecialchars($keymenu);
$checked_submenu = in_array($keymenu, $sub_menu_data);
echo ' <div class="form-group form-check-inline">';
echo ' <input type="checkbox" class="form-check-input" value="' . $keymenu . '" name="menu_ids[' . $menu_id . '][sub_menu][]" ' . ($checked_submenu ? 'checked' : '') . '>';
echo ' <label class="form-check-label" for="exampleCheck' . $keymenu . '">' . $keymenu . '</label>';
echo ' </div>';
}
}
echo '</div>';
}
// Pastikan untuk membebaskan hasil query
mysqli_free_result($db);
} else {
echo 'Error executing query: ' . mysqli_error($con);
}
// Tutup koneksi
// mysqli_close($con);
?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $group['id'];?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$group['id']]))
{
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['menu_ids'])) {
$menu_ids = $_POST['menu_ids'];
}
$json_string = json_encode($menu_ids, JSON_PRETTY_PRINT);
echo $json_string;
$edit = mysqli_query($con, "UPDATE group_akses SET id_data_server='$_POST[eids]', nama='$_POST[enmk]', akses='$json_string', per_marketing = '$_POST[market]', tagihan_berjalan = '$_POST[tagihanberjalan]' WHERE id = '$group[id]'");
if ($edit)
{
sweetAlert("Data telah di ubah", "success", "?".encrypt_url('group_akses'));
}
}
}
if (isset($_POST['hapus'.$group['id']])) {
$iddata = $group['id'];
deleteAlert("group_akses", $iddata);
}
?>
</div>
</div>
</div>
<!-- END Modal Info -->
<?php } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content
+229
View File
@@ -0,0 +1,229 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Data Invoice</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Invoice</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Customer</label>
<select class="form-control select2bs4" name="id_customer" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("customer", $SqlDataWHId." ORDER BY nama");
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tanggal Invoice</label>
<input type="date" class="form-control" name="tanggal_invoice" required="required">
</div>
<div class="form-group">
<label>Limit Invoice</label>
<input type="date" class="form-control" name="limit_invoice" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$db2 = mysqli_query($con,"SELECT id_data_server FROM customer WHERE id = '$_POST[id_customer]'");
$pc2 = mysqli_fetch_assoc($db2);
$db1 = mysqli_query($con,"SELECT SUBSTRING(nomor_invoice,-4) AS num FROM invoice WHERE id_data_server = '$pc2[id_data_server]' ORDER BY nomor_invoice DESC Limit 1");
$pc1 = mysqli_fetch_assoc($db1);
$urutan = $pc1['num'] + 1;
$num = date('ym').'0000' + $urutan;
$nomorinv = "INV".$num;
$input = mysqli_query($con,"INSERT INTO invoice (id_data_server, id_customer, nomor_invoice, tanggal_invoice, limit_invoice)
VALUES ('$pc2[id_data_server]', '$_POST[id_customer]', '$nomorinv', '$_POST[tanggal_invoice]', '$_POST[limit_invoice]')");
if ($input)
{
sweetAlert("Invoice Telah di buat", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nomor Invoice</th>
<th>Nama</th>
<th>Alamat</th>
<th>Nomor WhatsApp</th>
<th>Tanggal Invoice</th>
<th>Limit Invoice</th>
<th>Jumlah Item</th>
<th>Total Nominal</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_invoice WHERE status = '0' $SqlDataId ORDER BY id,nomor_invoice DESC");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td><?php echo $server['nomor_invoice']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['alamat']; ?></td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td><?php echo substr(formatIndo($server['tanggal_invoice']),3); ?></td>
<td><?php echo $server['limit_invoice']; ?></td>
<td><?php echo $server['jumlah_list']; ?></td>
<td><?php echo number_format($server['total_list']); ?></td>
<td>
<form method="post">
<a href="?<?php echo encrypt_url('invoice_detail|'.$server['id']);?>" class="btn btn-info btn-sm m-1">Detail</a>
<a type="button" class="btn btn-secondary btn-sm m-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm m-1" />
<input type="submit" name="arsip<?php echo $server['id'];?>" value="Arsipkan" class="btn btn-warning btn-sm m-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Invoice : <?php echo $server['nomor_invoice']; ?></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("customer", $SqlDataWHId." ORDER BY nama");
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_customer']) { echo "selected";} ?> ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tanggal Invoice</label>
<input type="text" class="form-control" value="<?php echo $server['tanggal_invoice']; ?>" name="tanggal_invoice" required="required">
</div>
<div class="form-group">
<label>Limit Invoice</label>
<input type="text" class="form-control" value="<?php echo $server['limit_invoice']; ?>" name="limit_invoice" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$db2 = mysqli_query($con,"SELECT id_data_server FROM customer WHERE id = '$_POST[id_customer]'");
$pc2 = mysqli_fetch_assoc($db2);
$update = mysqli_query($con,"UPDATE customer SET
id_data_server = '$pc2[id_data_server]',
id_customer = '$_POST[id_customer]',
tanggal_invoice = '$_POST[tanggal_invoice]',
limit_invoice = '$_POST[limit_invoice]'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Invoice ".$server['nomor_invoice']." telah di edit", "success");
}
}
if (isset($_POST['arsip'.$server['id']]))
{
$update = mysqli_query($con,"UPDATE invoice SET
status = '1'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Invoice ".$server['nomor_invoice']." telah di Arsipkan", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("invoice",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<!-- <script>
$(function () {
//Initialize Select2 Elements
$('.select2').select2()
//Initialize Select2 Elements
$('.select2bs4').select2({
theme: 'bootstrap4'
})
</script> -->
+193
View File
@@ -0,0 +1,193 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Data Customer</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Customer</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Pilih Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Alamat</label>
<input type="text" class="form-control" name="alamat" required="required">
</div>
<div class="form-group">
<label>Nomor Whatsapp</label>
<input type="text" class="form-control" name="nomor" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$input = mysqli_query($con,"INSERT INTO customer (id_data_server, nama, alamat, nomor_whatsapp)
VALUES ('$_POST[ids]', '$_POST[nama]', '$_POST[alamat]', '$_POST[nomor]')");
if ($input)
{
sweetAlert("Customer ".$_POST['nama']." telah di tambahkan", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Alamat</th>
<th>Nomor WhatsApp</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM customer $SqlDataWHId ");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['alamat']; ?></td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Customer</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" value="<?php echo $server['nama']; ?>" name="nama" required="required">
</div>
<div class="form-group">
<label>Alamat</label>
<input type="text" class="form-control" value="<?php echo $server['alamat']; ?>" name="alamat" required="required">
</div>
<div class="form-group">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" value="<?php echo $server['nomor_whatsapp']; ?>" name="nomor" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$update = mysqli_query($con,"UPDATE customer SET
id_data_server ='$_POST[ids]',
nama ='$_POST[nama]',
alamat ='$_POST[alamat]',
nomor_whatsapp ='$_POST[nomor]'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Customer ".$_POST['nama']." telah di edit", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("customer",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+313
View File
@@ -0,0 +1,313 @@
<?php
$ainv = mysqli_query($con,"SELECT id_data_server,nomor_invoice FROM invoice WHERE id = '$page[1]'");
$inv = mysqli_fetch_assoc($ainv);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Detail Invoice : <b><?php echo $inv['nomor_invoice']; ?></b></h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<!-- <a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a> -->
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Item Invoice</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Tanggal</label>
<input type="date" class="form-control" name="tanggal" required="required">
</div>
<div class="form-group">
<label>Deskripsi</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Quantity</label>
<input type="text" class="form-control" name="quantity" required="required">
</div>
<div class="form-group">
<label>Harga</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="harga" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$nominal = preg_replace("/[^0-9]/","",$_POST['harga']);
$input = mysqli_query($con,"INSERT INTO invoice_list (id_invoice, tanggal, nama, quantity, harga)
VALUES ('$page[1]', '$_POST[tanggal]', '$_POST[nama]', '$_POST[quantity]', '$nominal')");
if ($input)
{
sweetAlert("Item Invoice telah di tambah", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-4">
<ol class="float-sm-center mb-3"><br>
</ol>
<?php
$ainvlist = mysqli_query($con,"SELECT * FROM v_invoice WHERE id = '$page[1]'");
$invlist = mysqli_fetch_assoc($ainvlist);
?>
<table class="table table-borderless">
<tbody>
<tr>
<th>Nama</th>
<td style="width: 10px;">:</td>
<td><?php echo $invlist['nama']; ?></td>
</tr>
<tr>
<th>Alamat</th>
<td style="width: 10px;">:</td>
<td><?php echo $invlist['alamat']; ?></td>
</tr>
<tr>
<th>Nomor WhatsApp</th>
<td style="width: 10px;">:</td>
<td><?php echo $invlist['nomor_whatsapp']; ?></td>
</tr>
<tr>
<th>Tanggal Invoice</th>
<td style="width: 10px;">:</td>
<td><b><?php echo substr(formatIndo($invlist['tanggal_invoice']),3); ?></b></td>
</tr>
<tr>
<th>Limit Pembayaran</th>
<td style="width: 10px;">:</td>
<td><?php echo $invlist['limit_invoice']; ?></td>
</tr>
<tr>
<th>Total Pembayaran</th>
<td style="width: 10px;">:</td>
<td><b><?php echo number_format($invlist['total_list']); ?></b></td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-8">
<ol class="float-sm-right mb-2">
<form method="post">
<input type="submit" name="ganerate" class="btn btn-success btn-sm m-1" value="Ganerate Invoice">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</form>
</ol>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Tanggal</th>
<th>Deskripsi</th>
<th>Quantity</th>
<th>Harga</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM invoice_list WHERE id_invoice = '$page[1]'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td><?php echo $server['tanggal']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['quantity']; ?></td>
<td>Rp. <?php echo number_format($server['harga']); ?></td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Item Invoice</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Tanggal</label>
<input type="date" class="form-control" name="tanggal" value="<?php echo $server['tanggal']; ?>" required="required">
</div>
<div class="form-group">
<label>Deskripsi</label>
<input type="text" class="form-control" name="nama" value="<?php echo $server['nama']; ?>" required="required">
</div>
<div class="form-group">
<label>Quantity</label>
<input type="text" class="form-control" name="quantity" value="<?php echo $server['quantity']; ?>" required="required">
</div>
<div class="form-group">
<label>Harga</label>
<input type="text" class="form-control rupiah" id="rupiah0" value="<?php echo $server['harga']; ?>" name="harga" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$nominal = preg_replace("/[^0-9]/","",$_POST['harga']);
$update = mysqli_query($con,"UPDATE invoice_list SET
id_invoice = '$page[1]',
tanggal = '$_POST[tanggal]',
nama = '$_POST[nama]',
quantity = '$_POST[quantity]',
harga = '$nominal'
WHERE id = '$server[id]'");
if ($update)
{
sweetAlert("Item Invoice ".$server['nomor_invoice']." telah di edit", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("invoice_list",$iddata );
}
?>
</div>
</div>
</div>
<?php $no++; } ?>
</tbody>
</table>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<?php
if (isset($_POST['ganerate'])) {
$ainvp = mysqli_query($con,"SELECT
nama_perusahaan,
alamat_perusahaan,
nama_bendahara,
telepon_perusahaan,
logo_perusahaan,
catatan_perusahaan
FROM data_server WHERE id = '$inv[id_data_server]'");
$invp = mysqli_fetch_assoc($ainvp);
$nama = $invp['nama_perusahaan'];
$alamat = $invp['alamat_perusahaan'];
$telepon = $invp['telepon_perusahaan'];
$Keterangan = $invp['catatan_perusahaan'];
$Pembuat = $invp['nama_bendahara'];
$logo = $invp['logo_perusahaan'];
$ainvi = mysqli_query($con,"SELECT * FROM v_invoice WHERE id = '$page[1]'");
$invi = mysqli_fetch_assoc($ainvi);
$customerAddress = $invi['alamat'];
$customerName = $invi['nama'];
$customerNumber = $invi['nomor_whatsapp'];
$invoiceNumber = $invi['nomor_invoice'];
$invoiceDate = $invi['tanggal_invoice'];
$invoiceLimit = $invi['limit_invoice'];
$header = array('No', 'Tanggal', 'Deskripsi', 'Qty', 'Harga');
$data = array();
$no = 1;
// Mengambil hasil query dan memformat data
$aserver = mysqli_query($con,"SELECT * FROM invoice_list WHERE id_invoice = '$page[1]'");
while ($datainv = mysqli_fetch_assoc($aserver)) {
// Menggunakan data dari hasil query untuk membuat array
$data[] = array(
$no,
$datainv['tanggal'],
$datainv['nama'],
$datainv['quantity'],
number_format($datainv['harga'])
);
$no++ ;
}
$subtotal = number_format($invi['total_list']);
$lainnya = '0';
$totalAmount = number_format($invi['total_list']);
$terbilang = terbilang($invi['total_list']).' rupiah';
// Membuat instance PDF
require ("invoice/generate_invoice.php");
$pdf = new PDF();
$pdf->setHeaderData($nama, $alamat, $telepon, $logo);
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
// Menambahkan detail pelanggan dan invoice ke PDF
$pdf->CustomerDetails($customerName, $customerAddress, $invoiceNumber, $invoiceDate, $customerNumber, $invoiceLimit);
// Menambahkan tabel ke PDF
$pdf->InvoiceTable($header, $data);
// Menambahkan total amount ke PDF
$pdf->Total($subtotal,$lainnya,$totalAmount,$terbilang);
// Menambahkan keterangan ke PDF
$pdf->Keterangan($Keterangan);
// Menambahkan pembuat ke PDF
$pdf->Pembuat($Pembuat);
// Output PDF ke browser
$pdf->Output('F', 'invoice/inv_contoh/INV-'.$customerName.'-' . $invoiceNumber . '.pdf');
echo '<script type="text/javascript">window.open("invoice/inv_contoh/INV-'.$customerName.'-' . $invoiceNumber . '.pdf", "_blank")</script>';
// // sweetAlert("Data berhasil di simpan", "success");
}
?>
+227
View File
@@ -0,0 +1,227 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Data Invoice</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Invoice</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Customer</label>
<select class="form-control select2bs4" name="id_customer" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("customer", $SqlDataWHId." ORDER BY nama");
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tanggal Invoice</label>
<input type="date" class="form-control" name="tanggal_invoice" required="required">
</div>
<div class="form-group">
<label>Limit Invoice</label>
<input type="date" class="form-control" name="limit_invoice" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$db2 = mysqli_query($con,"SELECT id_data_server FROM customer WHERE id = '$_POST[id_customer]'");
$pc2 = mysqli_fetch_assoc($db2);
$db1 = mysqli_query($con,"SELECT SUBSTRING(nomor_invoice,-4) AS num FROM invoice WHERE id_data_server = '$pc2[id_data_server]' ORDER BY nomor_invoice DESC Limit 1");
$pc1 = mysqli_fetch_assoc($db1);
$urutan = $pc1['num'] + 1;
$num = date('ym').'0000' + $urutan;
$nomorinv = "INV".$num;
$input = mysqli_query($con,"INSERT INTO invoice (id_data_server, id_customer, nomor_invoice, tanggal_invoice, limit_invoice)
VALUES ('$pc2[id_data_server]', '$_POST[id_customer]', '$nomorinv', '$_POST[tanggal_invoice]', '$_POST[limit_invoice]')");
if ($input)
{
sweetAlert("Invoice Telah di buat", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nomor Invoice</th>
<th>Nama</th>
<th>Alamat</th>
<th>Nomor WhatsApp</th>
<th>Tanggal Invoice</th>
<th>Limit Invoice</th>
<th>Jumlah Item</th>
<th>Total Nominal</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_invoice WHERE status = '1' $SqlDataId ORDER BY id,nomor_invoice DESC");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td><?php echo $server['nomor_invoice']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['alamat']; ?></td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td><?php echo $server['tanggal_invoice']; ?></td>
<td><?php echo $server['limit_invoice']; ?></td>
<td><?php echo $server['jumlah_list']; ?></td>
<td><?php echo number_format($server['total_list']); ?></td>
<td>
<form method="post">
<a href="?<?php echo encrypt_url('invoice_detail|'.$server['id']);?>" class="btn btn-info btn-sm m-1">Detail</a>
<input type="submit" name="arsip<?php echo $server['id'];?>" value="Kembalikan" class="btn btn-warning btn-sm m-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Invoice : <?php echo $server['nomor_invoice']; ?></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("customer", $SqlDataWHId." ORDER BY nama");
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_customer']) { echo "selected";} ?> ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tanggal Invoice</label>
<input type="text" class="form-control" value="<?php echo $server['tanggal_invoice']; ?>" name="tanggal_invoice" required="required">
</div>
<div class="form-group">
<label>Limit Invoice</label>
<input type="text" class="form-control" value="<?php echo $server['limit_invoice']; ?>" name="limit_invoice" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$db2 = mysqli_query($con,"SELECT id_data_server FROM customer WHERE id = '$_POST[id_customer]'");
$pc2 = mysqli_fetch_assoc($db2);
$update = mysqli_query($con,"UPDATE customer SET
id_data_server = '$pc2[id_data_server]',
id_customer = '$_POST[id_customer]',
tanggal_invoice = '$_POST[tanggal_invoice]',
limit_invoice = '$_POST[limit_invoice]'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Invoice ".$server['nomor_invoice']." telah di edit", "success");
}
}
if (isset($_POST['arsip'.$server['id']]))
{
$update = mysqli_query($con,"UPDATE invoice SET
status = '0'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Invoice ".$server['nomor_invoice']." telah di Kembalikan", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("invoice",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<!-- <script>
$(function () {
//Initialize Select2 Elements
$('.select2').select2()
//Initialize Select2 Elements
$('.select2bs4').select2({
theme: 'bootstrap4'
})
</script> -->
+171
View File
@@ -0,0 +1,171 @@
<?php
$stmt = $pdo->prepare("SELECT
id,
nama_perusahaan,
telepon_perusahaan,
alamat_perusahaan,
nama_bendahara,
catatan_perusahaan,
logo_perusahaan
FROM data_server WHERE id = '$SvId'");
$stmt->execute();
$data = $stmt->fetchAll();
// echo "<pre>";
// print_r($data);
// echo "</pre>";
?>
<section class="content" style="zoom: 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h5>Invoice Setting</h5>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-4">
<form method="post" enctype="mulipart/form-data" id="invoiceForm">
<div class="form-group">
<label>Nama Perusahaan</label>
<input type="text" name="nama_perusahaan" value="<?php echo $data[0]['nama_perusahaan']; ?>" class="form-control">
</div>
<div class="form-group">
<label>Alamat Perusahaan</label>
<input type="text" name="alamat_perusahaan" value="<?php echo $data[0]['alamat_perusahaan']; ?>" class="form-control">
</div>
<div class="form-group">
<label>Telepon Perusahaan</label>
<input type="text" name="telepon_perusahaan" value="<?php echo $data[0]['telepon_perusahaan']; ?>" class="form-control">
</div>
<div class="form-group">
<label>Catatan</label>
<textarea class="form-control" rows="4" name="catatan_perusahaan"><?php echo $data[0]['catatan_perusahaan']; ?></textarea>
<!-- <input type="text" name="Catatan" class="form-control"> -->
</div>
<div class="form-group">
<label>Nama Bendahara</label>
<input type="text" name="nama_bendahara" value="<?php echo $data[0]['nama_bendahara']; ?>" class="form-control">
</div>
</div>
<div class="col-md-3">
<label>Logo Invoice</label>
<div class="uploadImage" data-id="invoice-<?php echo $data[0]['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
<i>Harus Format JPG / JPEG Ratio 1 x 1</i>
<div class="form-group mt-4" style="text-align: right;">
<input type="hidden" name="mode" value="edit">
<input type="hidden" name="id" value="<?php echo $data[0]['id']; ?>">
<input type="submit" onclick="generateInvoice()" name="edit" value="Simpan" class="btn btn-primary btn-sm m-1">
</div>
</form>
</div>
<div class="col-md-5">
<center>
<?php if (file_exists("invoice/inv_contoh/inv-server-".$SvId.".pdf")) { ?>
<iframe src="invoice/inv_contoh/inv-server-<?php echo $SvId; ?>.pdf" width="80%" height="700px" style="zoom: 80%;"></iframe>
<?php } ?>
</center>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['edit'])) {
$logo = $_SESSION['uploaded_files']['invoice-'.$data[0]['id']];
try {
$stmt = $pdo->prepare("UPDATE data_server SET
nama_perusahaan = :nama_perusahaan,
telepon_perusahaan = :telepon_perusahaan,
alamat_perusahaan = :alamat_perusahaan,
nama_bendahara = :nama_bendahara,
catatan_perusahaan = :catatan_perusahaan,
logo_perusahaan = :logo_perusahaan
WHERE id = :id");
$stmt->bindParam(':nama_perusahaan', $_POST['nama_perusahaan']);
$stmt->bindParam(':telepon_perusahaan', $_POST['telepon_perusahaan']);
$stmt->bindParam(':alamat_perusahaan', $_POST['alamat_perusahaan']);
$stmt->bindParam(':nama_bendahara', $_POST['nama_bendahara']);
$stmt->bindParam(':catatan_perusahaan', $_POST['catatan_perusahaan']);
$stmt->bindParam(':logo_perusahaan', $logo);
$stmt->bindParam(':id', $SvId);
$stmt->execute();
//Data PDF POST
$nama = $_POST['nama_perusahaan'];
$alamat = $_POST['alamat_perusahaan'];
$telepon = $_POST['telepon_perusahaan'];// Detail pelanggan dan invoice
$customerName = 'Nama Customer';
$customerAddress = 'Alamat Customer';
$invoiceNumber = 'INV20240001';
$invoiceDate = date('Y-m-d');
$invoiceLimit = "2045-08-17";
$customerNumber = "08xxxxxxxxxxxx";
$Keterangan = $_POST['catatan_perusahaan'];
$Pembuat = $_POST['nama_bendahara'];
// Total Amount (sederhana, untuk demo)
$subtotal = '27.000.000';
$lainnya = '0';
$totalAmount = '27.000.000'; // Contoh jumlah total
$terbilang = 'Dua Puluh Tujuh Juta Rupiah';
$header = array('No', 'Tanggal', 'Deskripsi', 'Qty', 'Harga');
$data = array(
array("1", "2024-10-10", "Item Invoice 0001", "10 Pcs", "22.000.000"),
array("2", "2024-10-10", "Item Invoice 0002", "10 Roll", "2.000.000"),
array("3", "2024-10-10", "Item Invoice 0003", "150 Client", "1.500.000"),
array("4", "2024-10-10", "Item Invoice 0004", "10 Pcs", "1.000.000"),
array("5", "2024-10-10", "Item Invoice 0005", "10 Pcs", "500.000"),
);
// Membuat instance PDF
require ("invoice/generate_invoice.php");
$pdf = new PDF();
$pdf->setHeaderData($nama, $alamat, $telepon, $logo);
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
// Menambahkan detail pelanggan dan invoice ke PDF
$pdf->CustomerDetails($customerName, $customerAddress, $invoiceNumber, $invoiceDate, $customerNumber, $invoiceLimit);
// Menambahkan tabel ke PDF
$pdf->InvoiceTable($header, $data);
// Menambahkan total amount ke PDF
$pdf->Total($subtotal,$lainnya,$totalAmount,$terbilang);
// Menambahkan keterangan ke PDF
$pdf->Keterangan($Keterangan);
// Menambahkan pembuat ke PDF
$pdf->Pembuat($Pembuat);
// Output PDF ke browser
$pdf->Output('F', 'invoice/inv_contoh/inv-server-' . $SvId . '.pdf');
sweetAlert("Data berhasil di simpan", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
$_SESSION['uploaded_files']['invoice-'.$data[0]['id']] = $data[0]['logo_perusahaan'];
?>
+293
View File
@@ -0,0 +1,293 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h2 class="card-title">Laporan Kas</h2>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<style>
.table-responsive {
overflow-x: hidden;
}
@media (max-width: 767px) { /* Untuk smartphone */
.hide-on-mobile {
display: none;
}
}
@media (min-width: 768px) and (max-width: 1024px) { /* Untuk tablet */
.hide-on-tablet {
display: none;
}
}
@media (min-width: 1024px) { /* Untuk laptop */
.hide-on-laptop {
display: none;
}
}
</style>
<div class="mb-1">
<div class="row">
<div class="col-4">
<div class="dropdown dropright">
<a href="excel/export.php" id="export-button" class="btn btn-success btn-sm mr-2">
<i class="fas fa-file-excel mr-2"></i>Export
</a>
<!-- <button type="submit" class="btn btn-success btn-sm mr-2"><i class="fas fa-file-excel mr-2"></i>Export</button> -->
<!-- <button type="submit" class="btn btn-primary btn-sm mr-2"><i class="fas fa-file-excel mr-2"></i>Import</button> -->
<a class="btn btn-warning btn-sm dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-expanded="false">
Filter
</a>
<div class="dropdown-menu" style="width: 250px;">
<div class="m-2">
<form id="filter-form">
<div class="form-group m-1">
<label><small>Dari</small></label>
<input type="date" class="form-control form-control-sm" id="start-date" name="start_date">
</div>
<div class="form-group">
<label><small>Sampai</small></label>
<input type="date" class="form-control form-control-sm" id="end-date" name="end_date">
</div>
<button type="button" class="btn btn-primary btn-sm mt-2" id="apply-filter">Terapkan</button>
</form>
</div>
</div>
</div>
</div>
<div class="col-8">
<input type="text" id="search-input" placeholder="Cari..." class="form-control form-control-sm mb-2" style="width: 200px; float: right;">
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped" id="data-table">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Time</th>
<th class="hide-on-mobile">Keterangan</th>
<th class="hide-on-mobile">Kas Masuk</th>
<th class="hide-on-mobile hide-on-tablet">Kas Keluar</th>
<th class="hide-on-mobile hide-on-tablet">Jenis Kas</th>
<th class="hide-on-mobile hide-on-tablet">Status</th>
</tr>
</thead>
<tbody id="table-body">
<!-- Data akan dimuat di sini -->
</tbody>
</table>
</div>
<div id="loader" style="display:none;">Loading...</div>
<!-- Modal -->
<div class="modal fade" id="imageModal" tabindex="-1" role="dialog" aria-labelledby="imageModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="imageModalLabel">Bukti Pembayaran</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<img id="modalImg" src="" class="img-fluid" alt="Bukti Pembayaran" />
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
let offset = 0; // Offset untuk memuat data
const limit = 15; // Jumlah data per permintaan
let loading = false;
// Fungsi untuk memuat data
function loadMoreData(searchTerm = '', startDate = '', endDate = '', idS = <?php echo "'".$SvId."'"; ?>) {
if (loading) return; // Jangan panggil lagi jika sedang memuat
loading = true;
$('#loader').show();
// Buat cookieData sesuai format yang diinginkan
const urlData = `search=${encodeURIComponent(searchTerm)}&start_date=${encodeURIComponent(startDate)}&end_date=${encodeURIComponent(endDate)}&ids=${idS}`;
var link = document.getElementById('export-button');
link.href = "excel/export.php?" + urlData;
$.ajax({
url: 'list_data/load_table.php',
type: 'GET',
data: { offset: offset, search: searchTerm, start_date: startDate, end_date: endDate, ids: idS }, // Tambahkan parameter pencarian dan filter
success: function(response) {
const result = JSON.parse(response);
const data = result.data;
if (data.length > 0) {
data.forEach((server, index) => {
// Data yang akan ditampilkan
let truncatedData = {
nama_server: server.nama_server,
start_time: server.start_time,
keterangan: server.keterangan,
pemasukan: server.pemasukan,
pengeluaran: server.pengeluaran,
metode_pembayaran: server.metode_pembayaran,
status: server.status,
bukti_pembayaran: server.bukti_pembayaran,
nama: server.nama,
};
let row = `
<tr>
<td>
${offset + index + 1}
<br>
<button type="button" class="btn collapsed btn-sm m-0 p-0 hide-on-laptop" data-toggle="collapse" data-target="#collapse-row-${offset + index}" aria-expanded="false" onclick="toggleCollapse(this, '${offset + index}')">
<i class="fas fa-plus-circle text-primary"></i>
</button>
</td>
<td>${truncatedData.nama_server}</td>
<td>${truncatedData.start_time}</td>
<td class="hide-on-mobile">${truncatedData.keterangan} ${truncatedData.nama ? `(${truncatedData.nama})` : ''}</td>
<td class="hide-on-mobile">
${truncatedData.pemasukan ? 'Rp. ' + Number(truncatedData.pemasukan).toLocaleString() : ''}
${truncatedData.bukti_pembayaran ? `<img src="img/user/${truncatedData.bukti_pembayaran}" height="35px" class="thumbnail ml-3" data-toggle="modal" data-target="#imageModal" data-fullsize="img/user/${truncatedData.bukti_pembayaran}">` : ''}
</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.pengeluaran ? 'Rp. ' + Number(truncatedData.pengeluaran).toLocaleString() : ''}</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.metode_pembayaran}</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.status}</td>
</tr>
<tr class="collapse hide-on-laptop" id="collapse-row-${offset + index}">
<td colspan="5" class="p-0">
<table class="table table-borderless" width="100%">
<tbody>
<tr class="hide-on-tablet hide-on-laptop">
<th>Keterangan</th>
<td>${truncatedData.keterangan} ${truncatedData.nama ? `(${truncatedData.nama})` : ''}</td>
</tr>
<tr class="hide-on-tablet hide-on-laptop">
<th>Kas Masuk</th>
<td>
${truncatedData.pemasukan ? 'Rp. ' + Number(truncatedData.pemasukan).toLocaleString() : ''}
${truncatedData.bukti_pembayaran ? `<img src="img/user/${truncatedData.bukti_pembayaran}" height="35px" class="thumbnail ml-3" data-toggle="modal" data-target="#imageModal" data-fullsize="img/user/${truncatedData.bukti_pembayaran}">` : ''}
</td>
</tr>
<tr class="hide-on-laptop">
<th>Kas Keluar</th>
<td>${truncatedData.pengeluaran ? 'Rp. ' + Number(truncatedData.pengeluaran).toLocaleString() : ''}</td>
</tr>
<tr class="hide-on-laptop">
<th>Jenis Kas</th>
<td>${truncatedData.metode_pembayaran}</td>
</tr>
<tr class="hide-on-laptop">
<th>Status</th>
<td>${truncatedData.status}</td>
</tr>
</tbody>
</table>
</td>
</tr>`;
$('#table-body').append(row);
});
offset += data.length; // Update offset
}
$('#loader').hide();
loading = false; // Set loading ke false
},
error: function() {
$('#loader').hide();
loading = false;
alert('Error loading data');
}
});
}
// Fungsi untuk toggle collapse dan mengubah ikon
function toggleCollapse(button, index) {
const $target = $(`#collapse-row-${index}`);
const isCollapsed = $target.hasClass('show');
// Toggle collapse
$target.collapse('toggle');
// Ubah ikon
if (isCollapsed) {
$(button).find('i').removeClass('fa-minus-circle text-danger').addClass('fa-plus-circle text-primary');
} else {
$(button).find('i').removeClass('fa-plus-circle text-primary').addClass('fa-minus-circle text-danger');
}
}
// Fungsi untuk menangani input pencarian
$('#search-input').on('input', function() {
const searchTerm = $(this).val();
offset = 0; // Reset offset saat pencarian
$('#table-body').empty(); // Kosongkan tabel
loadMoreData(searchTerm, $('#start-date').val(), $('#end-date').val()); // Muat data berdasarkan pencarian dan filter
});
// Fungsi untuk menerapkan filter berdasarkan tanggal
$('#apply-filter').on('click', function() {
const startDate = $('#start-date').val();
const endDate = $('#end-date').val();
offset = 0; // Reset offset saat filter diterapkan
$('#table-body').empty(); // Kosongkan tabel
loadMoreData($('#search-input').val(), startDate, endDate); // Muat data berdasarkan filter
});
// Panggil fungsi saat scroll
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) {
loadMoreData($('#search-input').val(), $('#start-date').val(), $('#end-date').val()); // Panggil dengan parameter pencarian dan filter
}
});
// Muat data pertama kali saat halaman dimuat
$(document).ready(function() {
loadMoreData();
});
// Gunakan event delegation untuk menangani gambar yang diklik
$(document).on('click', 'img.thumbnail', function(event) {
var fullsizeImage = $(this).data('fullsize'); // Ambil data gambar penuh dari atribut data-fullsize
var modalImg = $('#modalImg'); // Elemen gambar di dalam modal
// Set gambar besar ke modal
modalImg.attr('src', fullsizeImage);
// Tampilkan modal
$('#imageModal').modal('show');
});
</script>
</div>
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+77
View File
@@ -0,0 +1,77 @@
<!-- Main content -->
<section class="content" style="zoom: 80%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Log Pesan</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>Nama Server</th>
<th>Nomor</th>
<th>Pesan</th>
<th>Url Image</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$apaket = mysqli_query($con, "SELECT * FROM master_pesan $SqlDataWHId ORDER BY waktu DESC, id DESC LIMIT 500");
while ($paket = mysqli_fetch_assoc($apaket))
{
?>
<tr>
<td>
<?php
$asv = mysqli_query($con,"SELECT nama_server FROM data_server WHERE id = '$paket[id_data_server]'");
$sv = mysqli_fetch_assoc($asv);
echo $sv['nama_server'];
?>
</td>
<td><?php echo $paket['nomor']; ?></td>
<td><?php echo $paket['pesan']; ?></td>
<td><?php echo $paket['url_file']; ?></td>
<td><?php echo $paket['status']; ?></td>
<td>
<?php if($paket['status'] == 'GAGAL') { ?>
<form method="post">
<input type="submit" name="ulangi<?php echo $paket['id']; ?>" class="btn btn-primary btn-sm" value="Ulangi">
</a>
</form>
<?php }
if(isset($_POST['ulangi'.$paket['id']])){
$up = mysqli_query($con,"UPDATE master_pesan SET status = 'PENDING' WHERE id = '$paket[id]'");
if($up){
sweetAlert("Pesan ke Nomor ".$paket['nomor']." Akan Segera Di Kirim", "success");
}
}
?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+6
View File
@@ -0,0 +1,6 @@
<?php
session_destroy();
sweetAlert("Berhasil Logout", "success", baseurl('../login'));
?>
+89
View File
@@ -0,0 +1,89 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-2 mb-2">
<img src="dist/img/ODP.png" class="mr-2" width="25px"><span>Topologi</span>
</div>
<div class="col-md-2 mb-2">
<img src="dist/img/ON.png" class="mr-2" width="25px"><span>Aktif / Connected</span>
</div>
<div class="col-md-2 mb-2">
<img src="dist/img/OF.png" class="mr-2" width="25px"><span>Aktif / Disconnected</span>
</div>
<div class="col-md-2 mb-2">
<img src="dist/img/ON1.png" class="mr-2" width="25px"><span>Tidak Aktif / Connected</span>
</div>
<div class="col-md-2 mb-2">
<img src="dist/img/OF1.png" class="mr-2" width="25px"><span>Tidak Aktif / Disconnected</span>
</div>
</div>
<div id="map" style="height: 90vh; width: 100%;"></div>
</div>
</div>
</div>
</section>
<script>
let map; // Variabel untuk menyimpan peta
const markers = []; // Array untuk menyimpan marker
function initMap() {
// Inisialisasi peta dengan tipe hybrid
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: -7.062083, lng: 106.797390 }, // Pusat peta
zoom: 11,
mapTypeId: 'hybrid' // Menentukan tipe peta menjadi hybrid
});
// Fetch data dari PHP saat pertama kali
fetchMarkers();
// Mengatur interval untuk memperbarui marker setiap 10 detik
setInterval(fetchMarkers, 30000);
}
function fetchMarkers() {
fetch('load/maps_marker.php?i=<?php echo base64_encode($SqlDataWHIdM); ?>')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok ' + response.statusText);
}
return response.json();
})
.then(markersData => {
// Hapus marker yang ada sebelumnya
markers.forEach(marker => marker.setMap(null));
markers.length = 0; // Kosongkan array marker
// Tambahkan marker baru ke peta
markersData.forEach(markerData => {
const markerInstance = new google.maps.Marker({
position: { lat: markerData.lat, lng: markerData.lng },
map: map,
title: markerData.title,
icon: {
url: markerData.icon, // Menggunakan ikon dari data
scaledSize: new google.maps.Size(30, 30) // Mengatur ukuran ikon
}
});
// Simpan marker ke array
markers.push(markerInstance);
// Event listener untuk klik marker
markerInstance.addListener('click', () => {
const infoWindow = new google.maps.InfoWindow();
infoWindow.setContent(markerData.content); // Set konten InfoWindow
infoWindow.open(map, markerInstance); // Tampilkan InfoWindow
});
});
})
.catch(error => console.error('Error fetching markers:', error));
}
// Inisialisasi peta saat halaman selesai dimuat
window.onload = initMap;
</script>
+185
View File
@@ -0,0 +1,185 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Master Desa</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<?php if(in_array("Tambah", $json_array[25]['sub_menu'])) { ?>
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a> <?php } ?>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Master Desa</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Desa</label>
<input type="text" class="form-control" name="nmk" required="required">
</div>
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
</div>
</div>
<?php if(in_array("Tambah", $json_array[25]['sub_menu'])) { ?>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
<?php } ?>
</form>
<?php
if (isset($_POST['tambah']))
{
$input = mysqli_query($con,"INSERT INTO master_desa (id_data_server, nama) VALUES ('$_POST[ids]','$_POST[nmk]')");
if ($input)
{
sweetAlert("Data telah di tambah", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Nama Server</th>
<th>Nama Desa</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM master_desa $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td>
<?php
$datasv = explode("|", $server['id_data_server']);
foreach ($datasv as $isidata)
{
$asv = mysqli_query($con,"SELECT nama_server FROM data_server WHERE id = '$isidata'");
$sv = mysqli_fetch_assoc($asv);
echo $sv['nama_server'];
}
?>
</td>
<td><?php echo $server['nama']; ?></td>
<td>
<form method="post">
<?php if(in_array("Ubah", $json_array[25]['sub_menu'])) { ?>
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<?php } if(in_array("Hapus", $json_array[25]['sub_menu'])) { ?>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
<?php } ?>
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Master Desa</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Desa</label>
<input type="text" class="form-control" value="<?php echo $server['nama']; ?>" name="nmk" required="required">
</div>
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$update = mysqli_query($con,"UPDATE master_desa SET
id_data_server = '$_POST[ids]',
nama = '$_POST[nmk]'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Data telah di ubah", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("master_desa",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+213
View File
@@ -0,0 +1,213 @@
<!-- Main content -->
<section class="content" style="zoom: 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Data Aset</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah Aset</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-danger">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Aset</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label>Harga Barang</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="harga" required="required">
</div>
<div class="form-group">
<label>Kategori</label>
<select class="form-control" name="kategori" required="required">
<option value="">Pilih</option>
<option value="Lainnya">Lainnya</option>
<option value="Tanah">Tanah</option>
<option value="Kendaraan">Kendaraan</option>
</select>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label>Penyusutan</label>
<div class="input-group">
<input type="number" class="form-control" name="penyusutan" required="required">
<div class="input-group-append">
<span class="input-group-text">Tahun</span>
</div>
</div>
</div>
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
<option value="Hutang Jangka Pendek">Hutang Jangka Pendek</option>
<option value="Hutang Jangka Panjang">Hutang Jangka Panjang</option>
</select>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Tanggal Pembelian</label>
<input type="date" class="form-control" name="pembelian" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$sql = "INSERT INTO aset
(id_data_server, id_user_akses, nama, harga, kategori, penyusutan, metode_pembayaran, start_time, keterangan, status)
VALUES (:ids, :userId, :nama, :harga, :kategori, :penyusutan, :metode, :waktu, :keterangan, '1')";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
$harga = preg_replace("/[^0-9]/","",$_POST['harga']);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':harga', $harga);
$stmt->bindParam(':kategori', $_POST['kategori']);
$stmt->bindParam(':penyusutan', $_POST['penyusutan']);
$stmt->bindParam(':metode', $_POST['metode']);
$stmt->bindParam(':waktu', $_POST['pembelian']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Data Aset telah di tambah", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<?php
$aset1 = mysqli_query($con,"SELECT SUM(harga) AS total_harga, SUM(nilai_Penyusutan) AS total_nilai_Penyusutan, SUM(jumlah_nilai_Penyusutan) AS total_jumlah_nilai_Penyusutan, SUM(nilai_saat_ini) AS total_nilai_saat_ini FROM v_akumulasi_inventaris_total $SqlDataWHId");
$aset = mysqli_fetch_assoc($aset1);
?>
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th style="vertical-align: top;">No</th>
<th style="vertical-align: top;">Nama Barang</th>
<th style="vertical-align: top;">Jenis</th>
<th style="vertical-align: top;">Tanggal Pembelian</th>
<th>Harga Barang<br>Rp. <?php echo number_format($aset['total_harga']); ?></th>
<th style="vertical-align: top;">Penyusutan</th>
<th>Penyusutan per Bulan<br>Rp. <?php echo number_format($aset['total_nilai_Penyusutan']); ?></th>
<th style="vertical-align: top;">Bulan ke</th>
<th>Total Penyusutan per Bulan<br>Rp. <?php echo number_format($aset['total_jumlah_nilai_Penyusutan']); ?></th>
<th>Nilai Saat Ini<br>Rp. <?php echo number_format($aset['total_nilai_saat_ini']); ?></th>
<th style="vertical-align: top;">Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_akumulasi_inventaris $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 200px;"><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['kategori']; ?></td>
<td style="max-width: 30px;"><?php echo $server['start_time']; ?></td>
<td style="max-width: 200px;">Rp. <?php echo number_format($server['harga']); ?></td>
<td style="max-width: 200px;"><?php echo $server['penyusutan']; ?> Tahun</td>
<td style="max-width: 30px;">Rp. <?php echo number_format($server['nilai_penyusutan']); ?></td>
<td style="max-width: 30px;"><?php echo $server['bulan_ke']; ?></td>
<td style="max-width: 30px;">Rp. <?php echo number_format($server['jumlah_nilai_penyusutan']); ?></td>
<td style="max-width: 30px;">Rp. <?php echo number_format($server['nilai_saat_ini']); ?></td>
<td>
<form method="post">
<a href="?<?php echo encrypt_url('barang_aset_detail|'.$server['id']); ?>" class="btn btn-info btn-sm">Detail / Edit</a>
<input type="submit" class="btn btn-danger btn-sm m-1" name="hapus<?php echo $server['id']; ?>" value="Hapus">
</form>
</td>
</tr>
<?php
if (isset($_POST['hapus'.$server['id']])) {
$iddata = $server['id'];
deleteAlert("aset",$iddata );
}
$no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
+252
View File
@@ -0,0 +1,252 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">List Data Perangkat</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<?php if(in_array("Tambah", $json_array[25]['sub_menu'])) { ?>
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a> <?php } ?>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Perangkat</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Jenis Remote</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<?php
$perangkat = [['n' => 'Web Config'],['n' => 'Winbox'],['n' => 'Telnet']];
foreach ($perangkat as $data) {
echo '<option value="'.$data['n'].'">'.$data['n'].'</option>';
}
?>
</select>
</div>
<div class="form-group">
<label>Nama Perangkat</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Alamat / Link Perangkat</label>
<input type="text" class="form-control" name="alamat" required="required" placeholder="103.100.60.99:8080 atau https://remote.domian.com:8800">
</div>
</div>
</div>
</div>
<?php if(in_array("Tambah", $json_array[25]['sub_menu'])) { ?>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
<?php } ?>
</form>
<?php
if (isset($_POST['tambah'])) {
try {
// Siapkan query
$query = "INSERT INTO master_perangkat (id_data_server, nama, jenis, alamat_perangkat) VALUES (:id_data_server, :nama, :jenis, :alamat_perangkat)";
$stmt = $pdo->prepare($query);
// Bind parameter
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':alamat_perangkat', $_POST['alamat']);
// Eksekusi query
$stmt->execute();
// Tampilkan pesan sukses
sweetAlert("Data telah di tambah", "success");
} catch (PDOException $e) {
// Tampilkan pesan kesalahan
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Nama Perangkat</th>
<th>Jenis</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM master_perangkat $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td><?php echo $no; ?></td>
<td>
<?php
$datasv = explode("|", $server['id_data_server']);
foreach ($datasv as $isidata)
{
$asv = mysqli_query($con,"SELECT nama_server FROM data_server WHERE id = '$isidata'");
$sv = mysqli_fetch_assoc($asv);
echo $sv['nama_server'];
}
?>
</td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['jenis']; ?></td>
<td>
<form method="post">
<a href="<?php echo $server['alamat_perangkat']; ?>" target="_blank" class="btn btn-success btn-sm ml-1">Buka Perangkat</a>
<!-- <a href="C:/Users/USER/Desktop/winbox.exe" target="_blank">Buka Aplikasi</a> -->
<?php if(in_array("Ubah", $json_array[25]['sub_menu'])) { ?>
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<?php } if(in_array("Hapus", $json_array[25]['sub_menu'])) { ?>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
<?php } ?>
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Master Desa</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Jenis Remote</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<?php
$perangkat = [['n' => 'Web Config'],['n' => 'Winbox'],['n' => 'Telnet']];
foreach ($perangkat as $data) {
$selected = ($server['jenis'] == $data['n']) ? 'selected' : '';
echo '<option value="'.$data['n'].'" '.$selected.'>'.$data['n'].'</option>';
}
?>
</select>
</div>
<div class="form-group">
<label>Nama Perangkat</label>
<input type="text" class="form-control" value="<?php echo $server['nama']; ?>" name="nama" required="required">
</div>
<div class="form-group">
<label>Alamat / Link Perangkat</label>
<input type="text" class="form-control" value="<?php echo $server['alamat_perangkat']; ?>" name="alamat" required="required">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
try {
// Siapkan query
$query = "UPDATE master_perangkat SET id_data_server = :id_data_server, nama = :nama, jenis = :jenis, alamat_perangkat = :alamat_perangkat WHERE id = :id";
$stmt = $pdo->prepare($query);
// Bind parameter
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':alamat_perangkat', $_POST['alamat']);
$stmt->bindParam(':id', $server['id']);
// Eksekusi query
$stmt->execute();
// Tampilkan pesan sukses
sweetAlert("Data telah di ubah", "success");
} catch (PDOException $e) {
// Tampilkan pesan kesalahan
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("master_perangkat",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php $no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+883
View File
@@ -0,0 +1,883 @@
<!-- <style>
#suggestions {
border: 1px solid #ccc;
max-height: 150px;
overflow-y: auto;
position: absolute;
background: white;
width: 95%;
display: none;
z-index: 1000;
}
#suggestions div {
padding: 8px;
cursor: pointer;
}
#suggestions div:hover {
background: #f0f0f0;
}
</style>
-->
<style>
.suggestion-box {
border: 1px solid #ccc;
max-height: 150px;
overflow-y: auto;
position: absolute;
background: white;
width: 95%;
display: none;
z-index: 1000;
}
.suggestion-box div {
padding: 8px;
cursor: pointer;
}
.suggestion-box div:hover {
background: #f0f0f0;
}
</style>
<?php
$nama_barang_list = array();
$nbarang = mysqli_query($con,"SELECT nama FROM v_jumlah_data_gudang $SqlDataWHId");
while ($barang = mysqli_fetch_assoc($nbarang)) {
$nama_barang_list[] = $barang['nama'];
}
?>
<script>
// Contoh data untuk pencarian
const dataList = <?php echo json_encode($nama_barang_list); ?>;
function showSuggestions() {
const input = document.getElementById('searchInput');
const suggestionsDiv = document.getElementById('suggestions');
const query = input.value.toLowerCase();
// Bersihkan saran sebelumnya
suggestionsDiv.innerHTML = '';
// Jika input kosong, sembunyikan saran
if (!query) {
suggestionsDiv.style.display = 'none';
return;
}
// Filter data berdasarkan query
const filteredData = dataList.filter(item =>
item.toLowerCase().includes(query)
);
if (filteredData.length > 0) {
// Tampilkan saran
filteredData.forEach(item => {
const div = document.createElement('div');
div.textContent = item;
div.onclick = () => {
input.value = item; // Set nilai input
suggestionsDiv.style.display = 'none'; // Sembunyikan saran
};
suggestionsDiv.appendChild(div);
});
suggestionsDiv.style.display = 'block';
} else {
suggestionsDiv.style.display = 'none';
}
}
function submitForm() {
const inputValue = document.getElementById('searchInput').value.trim();
}
// Klik di luar untuk menyembunyikan saran
document.addEventListener('click', (e) => {
const suggestionsDiv = document.getElementById('suggestions');
if (!suggestionsDiv.contains(e.target) && e.target.id !== 'searchInput') {
suggestionsDiv.style.display = 'none';
}
});
</script>
<!-- Main content -->
<section class="content" style="zoom: 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Barang di Gudang</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Tambah Barang</a>
<a type="button" class="btn btn-warning btn-sm m-1" data-toggle="modal" data-target="#staticKurangi">Kurangi Stok</a>
<a type="button" class="btn btn-primary btn-sm m-1" data-toggle="modal" data-target="#staticReturn">Return Barang</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-danger">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label for="searchInput">Nama Barang</label>
<input type="text" id="searchInput" name="nama" class="form-control" placeholder="Isi Nama Barang" autocomplete="off" oninput="showSuggestions()" required="required"/>
<div id="suggestions" class="suggestion-box"></div>
</div>
<div class="form-group">
<label>Tanggal Pembelian</label>
<input type="date" name="tanggal" class="form-control" required="required" />
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="">Pilih</option>
<option value="Baru">Baru</option>
<option value="Bekas">Bekas</option>
</select>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label>Jumlah Awal Barang</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Harga Barang Satuan</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="nominal" required="required">
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode_pembayaran" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
<option value="Hutang Barang">Hutang Barang</option>
</select>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label>Penyusutan</label>
<select class="form-control" name="penyusutan" required="required">
<option value="">Pilih</option>
<option value="1">1 Tahun</option>
<option value="2">2 Tahun</option>
<option value="3">3 Tahun</option>
<option value="4">4 Tahun</option>
<option value="5">5 Tahun</option>
<option value="6">6 Tahun</option>
<option value="7">7 Tahun</option>
<option value="8">8 Tahun</option>
<option value="9">9 Tahun</option>
<option value="10">10 Tahun</option>
</select>
</div>
</div>
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$waktu = $_POST['tanggal'].date(' H:i:s');
$harga_satuan = preg_replace("/[^0-9]/","",$_POST['nominal']);
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, jumlah, keterangan, harga_satuan, penyusutan, metode_pembayaran)
VALUES (:ids, :userId, :waktu, :nama, 'masuk', :jenis, :jumlah, :keterangan, :harga_satuan, :penyusutan, :metode_pembayaran)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
$stmt->bindParam(':harga_satuan', $harga_satuan);
$stmt->bindParam(':penyusutan', $_POST['penyusutan']);
$stmt->bindParam(':metode_pembayaran', $_POST['metode_pembayaran']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Barang telah di tambah", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
<!-- Modal Kurangi Stok -->
<div class="modal fade" id="staticKurangi" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticTambahLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-warning">
<h5 class="modal-title" id="staticBackdropLabel">Kurangi Stok Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control dropoption1" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<select class="form-control dropoption2" name="id_barang" required="required">
<option value="">Pilih</option>
</select>
</div>
<input type="hidden" name="nama" class="valueData">
<div class="form-group">
<label>Waktu</label>
<input type="date" class="form-control" name="waktu" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control inputJumlah" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="kurangi" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['kurangi'])) {
$waktu = $_POST['waktu'].date(' H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, id_barang, start_time, nama, status, jenis, jumlah, keterangan)
VALUES (:ids, :userId, :id_barang, :waktu, :nama, 'keluar', :jenis, :jumlah, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':id_barang', $_POST['id_barang']);
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Stok ".$_POST['nama']." telah berkurang ".$_POST['jumlah'], "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Kurangi Stok -->
<!-- Modal Return Stok -->
<div class="modal fade" id="staticReturn" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticTambahLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Return Barang</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control dropoption1" name="ids" required="required">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<select class="form-control dropoption2" name="id_barang" required="required">
<option value="">Pilih</option>
</select>
</div>
<input type="hidden" name="nama" class="valueReturn">
<div class="form-group">
<label>Waktu</label>
<input type="date" class="form-control" name="waktu" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jumlah</label>
<input type="text" class="form-control inputReturn" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="return" class="btn btn-primary" value="Return">
</div>
</form>
<?php
if (isset($_POST['return'])) {
$waktu = $_POST['waktu'].date(' H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, id_barang, start_time, nama, status, jenis, jumlah, keterangan)
VALUES (:ids, :userId, :id_barang, :waktu, :nama, 'return', :jenis, :jumlah, :keterangan)";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':userId', $UserId); // Ensure $UserId is defined and properly initialized
$stmt->bindParam(':id_barang', $_POST['id_barang']);
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Stok ".$_POST['nama']." telah dikembalikan ".$_POST['jumlah'], "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
?>
</div>
</div>
</div>
<!-- END Modal Return Stok -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Tanggal Pembelian</th>
<th>Nama Barang</th>
<th>Harga Satuan</th>
<th>Barang Masuk</th>
<th>Barang Keluar</th>
<th>Sisa Barang</th>
<th>Nama Server</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_jumlah_data_gudang $SqlDataWHId order by start_time DESC");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 20px;"><?php echo $no; ?></td>
<td style="max-width: 200px;"><?php echo $server['start_time']; ?></td>
<td style="max-width: 200px;"><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;">Rp. <?php echo number_format($server['harga_satuan']); ?></td>
<td style="max-width: 200px;"><?php echo $server['masuk']; ?></td>
<td style="max-width: 200px;"><?php echo $server['keluar']; ?></td>
<td style="max-width: 200px;"><?php echo $server['sisa']; ?></td>
<td style="max-width: 30px;"><?php echo $server['nama_server']; ?></td>
<td>
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(<?php echo $server['id']; ?>)">Edit</button>
<a href="?<?php echo encrypt_url('master_stok_barang_detail|'.$server['id_data_server'].'|'.$server['id'].'|'.$server['nama']); ?>" class="btn btn-info btn-sm">Detail</a>
</td>
</tr>
<?php $no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// Fungsi untuk mengupdate dropdown
function updateDropdown(dropdown, data) {
const firstOption = dropdown.querySelector('option[value=""]');
// Hapus semua opsi kecuali opsi pertama
dropdown.innerHTML = '';
if (firstOption) {
dropdown.appendChild(firstOption.cloneNode(true));
} else {
dropdown.innerHTML = '<option value="">Pilih</option>';
}
// Tambahkan opsi baru dari data server
data.forEach(option => {
const optionElement = document.createElement('option');
optionElement.value = option.id; // Set ID barang sebagai value
optionElement.textContent = option.nama + ' ( ' + option.start_time + ' )'; // Nama untuk ditampilkan
optionElement.setAttribute('data-nama', option.nama); // Tambahkan data-nama
optionElement.setAttribute('data-sisa', option.sisa); // Tambahkan data-nama
optionElement.setAttribute('data-keluar', option.keluar); // Tambahkan data-nama
dropdown.appendChild(optionElement);
});
}
// Fungsi untuk mengupdate dropdown2 berdasarkan pilihan dari dropdown1
function updateDropdown2(form, selectedOption) {
const dropoption2 = form.querySelector('.dropoption2');
fetch(`list_data/getItemStokBarang.php?dropdown=dropoption2&option=${encodeURIComponent(selectedOption)}`)
.then(response => response.json())
.then(data => updateDropdown(dropoption2, data))
.catch(error => console.error('Error fetching dropoption2 data:', error));
}
// Event listener untuk dropdown1
document.addEventListener('change', function(e) {
if (e.target.classList.contains('dropoption1')) {
const form = e.target.closest('form');
updateDropdown2(form, e.target.value);
}
});
// Fungsi untuk memvalidasi input jumlah
function inputJumlah(input, sisaOnly) {
const inputValue = parseInt(input.value, 10) || 0; // Konversi ke angka, default ke 0 jika kosong atau NaN
if (inputValue > sisaOnly) {
input.value = sisaOnly; // Batasi input ke jumlah maksimum stok
}
}
function inputReturn(input, keluarOnly) {
const inputValue = parseInt(input.value, 10) || 0; // Konversi ke angka, default ke 0 jika kosong atau NaN
if (inputValue > keluarOnly) {
input.value = keluarOnly; // Batasi input ke jumlah maksimum stok
}
}
// Event listener untuk dropdown2
document.addEventListener('change', function (e) {
if (e.target.classList.contains('dropoption2')) {
const selectedOption = e.target.selectedOptions[0];
// Ambil data-nama dan data-sisa dari opsi yang dipilih
const namaOnly = selectedOption.getAttribute('data-nama');
const sisaOnly = parseInt(selectedOption.getAttribute('data-sisa'), 10);
const keluarOnly = parseInt(selectedOption.getAttribute('data-keluar'), 10);
// Ambil elemen input hidden dan elemen lain
const valueDataInput = document.querySelector('.valueData');
if (valueDataInput) valueDataInput.value = namaOnly;
// Ambil elemen input hidden dan elemen lain
const valueDataReturn = document.querySelector('.valueReturn');
if (valueDataReturn) valueDataReturn.value = namaOnly;
// Validasi jumlah input jika ada
const jumlahInput = document.querySelector('.inputJumlah'); // Ganti dengan kelas input jumlah Anda
if (jumlahInput) jumlahInput.placeholder = 'Sisa Stok : ' + sisaOnly;
if (jumlahInput) {
jumlahInput.addEventListener('input', function () {
inputJumlah(jumlahInput, sisaOnly); // Panggil fungsi validasi
});
}
// Validasi jumlah input jika ada
const jumlahReturn = document.querySelector('.inputReturn'); // Ganti dengan kelas input jumlah Anda
if (jumlahReturn) jumlahReturn.placeholder = 'Stok Keluar : ' + keluarOnly;
if (jumlahReturn) {
jumlahReturn.addEventListener('input', function () {
inputJumlah(jumlahReturn, keluarOnly); // Panggil fungsi validasi
});
}
}
});
});
</script>
<!-- MODAL EDIT BARANG -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<form id="editForm" method="post">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="editModalLabel">Edit Pemasukan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<input type="hidden" name="edit_id" id="edit_id">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" id="serverSelect" required>
<!-- Opsi akan diisi oleh JavaScript -->
</select>
</div>
<div class="form-group">
<label>Nama Barang</label>
<input type="text" id="namaedit" name="nama" class="form-control" placeholder="Isi Nama Barang" autocomplete="off" oninput="showSuggestion()" required="required"/>
<div id="suggestion" class="suggestion-box"></div>
</div>
<div class="form-group">
<label>Tanggal Pembelian</label>
<input type="date" name="tanggal" id="waktu" class="form-control" required="required" />
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" id="jenis" required="required">
<option value="">Pilih</option>
<option value="Baru">Baru</option>
<option value="Bekas">Bekas</option>
</select>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label>Jumlah Awal Barang</label>
<input type="text" class="form-control" name="jumlah" id="jumlahbarang" required="required">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Harga Barang Satuan</label>
<input type="text" class="form-control" name="nominal" id="nominal" required oninput="formatRupiah3(this)">
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode_pembayaran" id="jenisKas" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
<option value="Hutang Barang">Hutang Barang</option>
</select>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label>Penyusutan</label>
<select class="form-control" name="penyusutan" id="penyusutan" required="required">
<option value="">Pilih</option>
<option value="1">1 Tahun</option>
<option value="2">2 Tahun</option>
<option value="3">3 Tahun</option>
<option value="4">4 Tahun</option>
<option value="5">5 Tahun</option>
<option value="6">6 Tahun</option>
<option value="7">7 Tahun</option>
<option value="8">8 Tahun</option>
<option value="9">9 Tahun</option>
<option value="10">10 Tahun</option>
</select>
</div>
</div>
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" id="keterangan" required="required" rows="5"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-warning">Edit</button>
</div>
</form>
</div>
</div>
</div>
<script>
function openEditModal(id) {
// Fetch data menggunakan AJAX untuk ID yang dipilih
fetch(`list_data/list_data_gudang.php?id=${id}`)
.then(response => response.json())
.then(data => {
// Isi kolom formulir
document.getElementById('edit_id').value = data.id;
document.getElementById('namaedit').value = data.nama;
document.getElementById('waktu').value = data.start_time.substr(0, 10);
document.getElementById('jenis').value = data.jenis;
document.getElementById('jumlahbarang').value = data.jumlah;
document.getElementById('nominal').value = formatRupiah3Value3(data.harga_satuan);
document.getElementById('jenisKas').value = data.metode_pembayaran;
document.getElementById('penyusutan').value = data.penyusutan;
document.getElementById('keterangan').value = data.keterangan;
// Ambil daftar server untuk opsi select
fetch(`list_data/dataServer.php?w=<?php echo $SqlDataWH; ?>`)
.then(response => response.json())
.then(servers => {
const serverSelect = document.getElementById('serverSelect');
serverSelect.innerHTML = ''; // Kosongkan opsi yang ada
servers.forEach(server => {
const option = document.createElement('option');
option.value = server.id;
option.textContent = server.nama_server;
if (server.id === data.id_data_server) {
option.selected = true; // Set opsi yang dipilih
}
serverSelect.appendChild(option);
});
});
// Tampilkan modal
$('#editModal').modal('show');
});
}
function showSuggestion() {
const input = document.getElementById('namaedit');
const suggestionDiv = document.getElementById('suggestion');
const query = input.value.toLowerCase();
suggestionDiv.innerHTML = '';
if (!query) {
suggestionDiv.style.display = 'none';
return;
}
const filteredData = dataList.filter(item => item.toLowerCase().includes(query));
if (filteredData.length > 0) {
filteredData.forEach(item => {
const div = document.createElement('div');
div.textContent = item;
div.onclick = () => {
input.value = item;
suggestionDiv.style.display = 'none';
};
suggestionDiv.appendChild(div);
});
suggestionDiv.style.display = 'block';
} else {
suggestionDiv.style.display = 'none';
}
}
function formatRupiah3(input) {
// Pastikan input adalah string
let value = input.value.toString().replace(/[^0-9]/g, "");
// Format menjadi Rupiah
if (value) {
input.value = "Rp. " + new Intl.NumberFormat('id-ID').format(value);
} else {
input.value = ""; // Kosongkan input jika tidak ada nilai
}
}
function formatRupiah3Value3(value) {
// Format nilai menjadi string Rupiah
return "Rp. " + new Intl.NumberFormat('id-ID').format(value);
}
function deleteAlert(id) {
const form = document.createElement("form");
form.method = "POST";
const input = document.createElement("input");
input.type = "hidden";
input.name = "hapus" + id;
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
</script>
<?php
// Handle edit and delete actions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['edit_id'])) {
// Process edit
$waktu = $_POST['tanggal'].date(' H:i:s');
$harga_satuan = preg_replace("/[^0-9]/", "", $_POST['nominal']);
$sql = "UPDATE gudang
SET id_data_server = :ids,
start_time = :waktu,
nama = :nama,
jenis = :jenis,
jumlah = :jumlah,
keterangan = :keterangan,
harga_satuan = :harga_satuan,
penyusutan = :penyusutan,
metode_pembayaran = :metode_pembayaran
WHERE id = :id";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
// Bind the parameters
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
$stmt->bindParam(':harga_satuan', $harga_satuan);
$stmt->bindParam(':penyusutan', $_POST['penyusutan']);
$stmt->bindParam(':metode_pembayaran', $_POST['metode_pembayaran']);
$stmt->bindParam(':id', $_POST['edit_id']); // Pastikan 'edit_id' diambil dari form input hidden
// Execute the statement
$stmt->execute();
// Success message
sweetAlert("Barang telah diperbarui", "success");
} catch (PDOException $e) {
// Handle error
echo 'Error: ' . $e->getMessage();
}
}
$stmt = $pdo->prepare("SELECT id FROM v_transaksi WHERE pemasukan != '' $SqlDataId ");
$stmt->execute();
$data1 = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Handle delete
foreach ($data1 as $server1) {
if (isset($_POST['hapus'.$server1['id']])) {
$idtrx = $server1['id'];
// Call your deleteAlert function or method here
deleteAlert("transaksi", $idtrx);
}
}
}
?>
+138
View File
@@ -0,0 +1,138 @@
<!-- Main content -->
<section class="content" style="zoom : 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Detail Riwayat Barang ( <?php echo $page[3]; ?> )</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Barang</th>
<th>Jumlah Barang</th>
<th>Status</th>
<th>Waktu</th>
<th>Keterangan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM gudang WHERE id_data_server = '$page[1]' AND (id = '$page[2]' OR id_barang = '$page[2]')");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 200px;"><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['jumlah']; ?></td>
<td style="max-width: 200px;"><?php echo $server['status']; ?></td>
<td style="max-width: 200px;"><?php echo $server['start_time']; ?></td>
<td style="max-width: 30px;"><?php echo $server['keterangan']; ?></td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm m-1" data-toggle="modal" data-target="#staticEdit<?php echo $server['id']; ?>">Edit</a>
<input type="submit" class="btn btn-danger btn-sm m-1" name="hapus<?php echo $server['id']; ?>" value="Hapus">
</form>
</td>
</tr>
<div class="modal fade" id="staticEdit<?php echo $server['id']; ?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Ubah Data Barang ( <?php echo $server['nama']; ?> )</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="form-group">
<label>Jenis Barang</label>
<select class="form-control" name="jenis" required="required">
<option value="Baru" <?php if($server['jenis'] == 'Baru'){echo "selected";} ?>>Baru</option>
<option value="Bekas" <?php if($server['jenis'] == 'Bekas'){echo "selected";} ?>>Bekas</option>
</select>
</div>
<div class="form-group">
<label>Jumlah</label>
<input type="text" value="<?php echo $server['jumlah'] ?>" class="form-control" name="jumlah" required="required">
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" name="keterangan" required="required" rows="5"><?php echo $server['keterangan'] ?></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah<?php echo $server['id']; ?>" class="btn btn-primary" value="Simpan">
</div>
</form>
<?php
if (isset($_POST['tambah'.$server['id']])) {
$waktu = date('Y-m-d H:i:s');
$sql = "INSERT INTO gudang (id_data_server, id_user_akses, start_time, nama, status, jenis, masuk, keterangan)
VALUES (:ids, :userId, :waktu, :nama, 'masuk', :jenis, :jumlah, :keterangan)";
$sql = "UPDATE gudang SET jenis = :jenis, jumlah = :jumlah, keterangan = :keterangan WHERE id = :id ";
try {
// Prepare the statement
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':jumlah', $_POST['jumlah']);
$stmt->bindParam(':keterangan', $_POST['keterangan']);
$stmt->bindParam(':id', $server['id']);
// Execute the statement
$stmt->execute();
sweetAlert("Data telah di Ubah", "success");
} catch (PDOException $e) {
// Handle error
// echo 'Error: ' . $e->getMessage();
sweetAlert($e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
<?php
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("gudang",$iddata );
}
$no ++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
+161
View File
@@ -0,0 +1,161 @@
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Master Topologi</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<?php if(in_array("Tambah", $json_array[25]['sub_menu'])) { ?>
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
<?php } ?>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah ODP / Port</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Topologi ODP</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
<div class="form-group">
<label>Jumlah Port</label>
<input type="text" class="form-control" name="jumlah" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group" >
<label>Pilih Lokasi Maps / Isi Koordinat</label>
<input class="form-control" type="text" id="latlong" required name="koordinat">
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" name="latitude" required="required">
<input type="hidden" id="longitude" data-maps="longitude" name="longitude" required="required">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
</div>
</div>
</div>
</div>
<?php if(in_array("Tambah", $json_array[25]['sub_menu'])) { ?>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
<?php } ?>
</form>
<?php
if (isset($_POST['tambah'])) {
try {
// Prepare the SQL statement
$stmt = $pdo->prepare("INSERT INTO master_topologi (id_data_server, nama, titik_koordinat, jumlah_port) VALUES (:id_data_server, :nama, :titik_koordinat, :jumlah_port)");
// Bind parameters
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':titik_koordinat', $_POST['koordinat']);
$stmt->bindParam(':jumlah_port', $_POST['jumlah']);
// Execute the statement
if ($stmt->execute()) {
sweetAlert("Data telah ditambah", "success");
} else {
sweetAlert("Gagal menambah data", "error");
}
} catch (PDOException $e) {
// Handle any errors
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Topologi</th>
<th>Koordinat</th>
<th>Jumlah Port</th>
<th>Port Terpakai</th>
<th>Port Tersedia</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_master_topologi $SqlDataWHId ORDER BY nama_server");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['titik_koordinat']; ?></td>
<td><?php echo $server['jumlah_port']; ?></td>
<td><?php echo $server['jumlah_terpakai']; ?></td>
<td><?php echo $server['sisa_port']; ?></td>
<td>
<div class="row">
<form method="post">
<?php if(in_array("Ubah", $json_array[25]['sub_menu'])) { ?>
<a href="?<?php echo encrypt_url('master_topologi_edit|'.$server['id']); ?>" class="btn btn-secondary btn-sm ml-1">Edit</a>
<?php } if(in_array("Hapus", $json_array[25]['sub_menu'])) { ?>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" /> <?php } ?>
</form>
</div>
</td>
</tr>
<?php
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("master_topologi",$iddata );
}
$no++; } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+104
View File
@@ -0,0 +1,104 @@
<?php
$aserver = mysqli_query($con,"SELECT * FROM master_topologi WHERE id = '$page[1]'");
$server = mysqli_fetch_assoc($aserver);
list($latitude, $longitude) = explode(',', $server['titik_koordinat']);
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Edit Topologi => <?php echo $server['nama']; ?></h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<form method="post">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"
<?php if($server['id_data_server'] == $value['id']) { echo "selected"; } ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Nama Topologi ODP</label>
<input type="text" class="form-control" name="nama" value="<?php echo $server['nama']; ?>" required="required">
</div>
<div class="form-group">
<label>Jumlah Port</label>
<input type="text" class="form-control" name="jumlah" value="<?php echo $server['jumlah_port']; ?>" required="required">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Pilih Lokasi Maps / Isi Koordinat</label>
<input class="form-control" type="text" id="latlong" required name="koordinat">
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" name="latitude" value="<?php echo $latitude; ?>" required="required">
<input type="hidden" id="longitude" data-maps="longitude" name="longitude" value="<?php echo $longitude; ?>" required="required">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="submit" name="edit" class="btn btn-secondary btn-sm" value="Simpan">
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['edit'])) {
try {
// Prepare the SQL statement
$stmt = $pdo->prepare("UPDATE master_topologi SET
id_data_server = :id_data_server,
nama = :nama,
titik_koordinat = :titik_koordinat,
jumlah_port = :jumlah_port
WHERE id = :id");
// Bind parameters
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':titik_koordinat', $_POST['koordinat']);
$stmt->bindParam(':jumlah_port', $_POST['jumlah']);
$stmt->bindParam(':id', $page[1]); // assuming $page[1] is the ID you want to update
// Execute the statement
if ($stmt->execute()) {
sweetAlert("Data telah diubah", "success", "?".encrypt_url('master_topologi'));
} else {
sweetAlert("Gagal mengubah data", "error");
}
} catch (PDOException $e) {
// Handle any errors
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
?>
+261
View File
@@ -0,0 +1,261 @@
<?php
$date = date('Y-m-d H:i:s');
$db = mysqli_query($con,"SELECT * FROM pelanggan WHERE id = '$page[1]'");
$isi = mysqli_fetch_assoc($db);
$user = $isi['akun'];
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h5>Riwayat Aktif Koneksi</h5>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="p-2 border bg-light">
<div class="card-body">
<center>
<h6>Riwayat Aktif Koneksi</h6>
</center>
<?php
$sebelum = new DateTime();
$sebelum->modify('-1 month');
$bulanF = $sebelum->format('F');
$bulanM = $sebelum->format('m');
?>
<div style="display: flex; justify-content: space-between; align-items: center;">
<div>
<select id="monthSelect">
<option value="<?php echo date('m'); ?>"><?php echo date('F'); ?></option>
<option value="<?php echo $bulanM; ?>"><?php echo $bulanF; ?></option>
</select>
</div>
<div>
<select id="timeFilter">
<option value="reset">Filter</option>
<option value="6">6 Jam Terakhir</option>
<option value="12">12 Jam Terakhir</option>
<option value="24">1 Hari Terakhir</option>
<option value="72">3 Hari Terakhir</option>
<option value="168">1 Minggu Terakhir</option>
<option value="336">2 Minggu Terakhir</option>
</select>
</div>
</div>
<canvas id="myChart"></canvas>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<center>
<h6>Detail Pelanggan</h6>
<hr>
</center>
<table class="table table-borderless" style="zoom: 90%">
<tbody>
<tr>
<td style="min-width: 150px"><b>Id Pelanggan</b></td>
<td><?php echo $isi['akun']; ?></td>
</tr>
<tr>
<td><b>Nama</b></td>
<td><?php echo $isi['nama']; ?></td>
</tr>
<tr>
<td><b>Alamat</b></td>
<td><?php echo $isi['alamat']; ?></td>
</tr>
<tr>
<td><b>Nomor WhatsApp</b></td>
<td><?php echo $isi['nomor_whatsapp']; ?></td>
</tr>
</tbody>
</table><br>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="card direct-chat direct-chat-primary">
<div class="card-header bg-danger">
<h3 class="card-title">Riwayat Tiket Gangguan</h3>
<div class="card-tools">
<?php
$stmt = $pdo->prepare("SELECT COUNT(id) AS jumlahtiket FROM v_tiket_gangguan WHERE id_pelanggan = '$page[1]' ");
$stmt->execute();
$datatiket = $stmt->fetchAll();
?>
<span title="3 New Messages" class="badge badge-light"><?php echo $datatiket[0]['jumlahtiket']; ?></span>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="direct-chat-messages" style="height: 300px">
<?php
$stmt = $pdo->prepare("SELECT * FROM v_tiket_gangguan WHERE id_pelanggan = '$page[1]' ORDER BY start_time DESC");
$stmt->execute();
while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<a href="?<?php echo encrypt_url('tiket_buat') ?>">
<div class="card p-2 text-dark" style="border-left: 8px solid red">
<div class="row">
<div class="col-6">
<p class="m-0 text-danger"><?php echo $data['jenis_tiket']; ?></p>
<p class="m-0"><?php echo $data['nama_pelanggan'].' ('.$data['nama_server'].')'; ?></p>
<p class="m-0"><?php echo $data['start_time']; ?></p>
</div>
<div class="col-6 text-right">
<p class="m-0"><?php echo $data['permasalahan']; ?></p>
</div>
</div>
</div>
</a>
<?php } ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<script>
const ctx = document.getElementById('myChart').getContext('2d');
let myChart; // Initialize chart variable
let allData = null; // Variable untuk menyimpan semua data
// Fungsi untuk mengambil data dan menggambar chart
function fetchDataAndRenderChart(month) {
fetch(`load/data_monitoring_pelanggan.php?m=${month}&i=<?php echo $page[1]; ?>`)
.then(response => response.json())
.then(data => {
allData = data; // Simpan data ke dalam variable allData
renderChart(data); // Panggil fungsi untuk menggambar chart
document.getElementById('timeFilter').value = 'reset';
})
.catch(error => {
console.error('Error fetching data:', error);
});
}
// Fungsi untuk menggambar chart berdasarkan data yang diberikan
function renderChart(data) {
const chartLabels = data.waktu.map(dateString => {
const date = new Date(dateString);
const options = { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit' };
return date.toLocaleString('id-ID', options);
});
const chartData = data.status;
const chartConfig = {
type: 'line',
data: {
labels: chartLabels,
datasets: [
{
label: 'Koneksi',
data: chartData,
borderColor: 'green',
backgroundColor: 'rgba(4, 214, 46, 0.6)',
stepped: true,
fill: true
}
]
},
options: {
scales: {
y: {
min: -0.3,
max: 5,
ticks: {
callback: function(value) {
return value === 0 ? 'OFF' : (value === 4 ? 'ON' : '');
}
}
}
}
}
};
// Hancurkan instance chart sebelumnya jika ada
if (myChart) {
myChart.destroy();
}
// Buat instance chart baru
myChart = new Chart(ctx, chartConfig);
}
// Fungsi untuk memfilter data berdasarkan pilihan waktu
document.getElementById('timeFilter').addEventListener('change', function() {
const filterValue = this.value;
if (filterValue === 'reset') {
renderChart(allData); // Tampilkan data awal tanpa filter
} else {
const hoursToSubtract = parseInt(filterValue);
const cutoffDate = new Date();
// Ambil waktu terakhir dari data
if (allData && allData.waktu.length > 0) {
const lastDataDate = new Date(allData.waktu[allData.waktu.length - 1]);
const filterStartDate = new Date(lastDataDate);
filterStartDate.setHours(lastDataDate.getHours() - hoursToSubtract); // Hitung tanggal batas berdasarkan data terakhir
const filteredData = {
waktu: [],
status: []
};
// Filter data berdasarkan waktu terakhir yang diambil
allData.waktu.forEach((dateString, index) => {
const date = new Date(dateString);
if (date >= filterStartDate) {
filteredData.waktu.push(dateString);
filteredData.status.push(allData.status[index]);
}
});
// Jika hanya satu data yang ditemukan, tambahkan data awal
if (filteredData.waktu.length === 1) {
filteredData.waktu.unshift(filterStartDate.toISOString()); // Tambahkan data awal
filteredData.status.unshift(4); // Status untuk data awal
}
renderChart(filteredData); // Panggil fungsi untuk menggambar chart dengan data yang sudah difilter
}
}
});
// Ambil data awal untuk bulan saat ini saat halaman dimuat
const currentMonth = new Date().getMonth() + 1; // Ambil bulan saat ini (0-11)
fetchDataAndRenderChart(currentMonth < 10 ? '0' + currentMonth : currentMonth);
// Event listener untuk pemilihan bulan
document.getElementById('monthSelect').addEventListener('change', function() {
const selectedMonth = this.value;
fetchDataAndRenderChart(selectedMonth);
});
</script>
+402
View File
@@ -0,0 +1,402 @@
<style>
.table-responsive {
overflow-x: hidden;
}
@media (max-width: 767px) { /* Untuk smartphone */
.hide-on-mobile {
display: none;
}
}
@media (min-width: 768px) and (max-width: 1024px) { /* Untuk tablet */
.hide-on-tablet {
display: none;
}
}
@media (min-width: 1024px) { /* Untuk laptop */
.hide-on-laptop {
display: none;
}
}
</style>
<?php
$invkas1 = mysqli_query($con, "
SELECT
SUM(CASE WHEN metode_pembayaran = 'Tunai' THEN harga ELSE 0 END) AS 'total_inv_tunai',
SUM(CASE WHEN metode_pembayaran = 'Bank' THEN harga ELSE 0 END) AS 'total_inv_bank',
SUM(CASE WHEN metode_pembayaran = 'Hutang Jangka Pendek' THEN harga ELSE 0 END) AS 'total_inv_hutang_pendek',
SUM(CASE WHEN metode_pembayaran = 'Hutang Jangka Panjang' THEN harga ELSE 0 END) AS 'total_inv_hutang_panjang',
SUM(CASE WHEN kategori = 'Tanah' THEN harga ELSE 0 END) AS 'total_inv_tanah',
SUM(CASE WHEN kategori = 'Kendaraan' THEN harga ELSE 0 END) AS 'total_inv_kendaraan',
SUM(CASE WHEN kategori = 'Kendaraan' THEN jumlah_nilai_Penyusutan ELSE 0 END) AS 'total_inv_penyusutan_kendaraan',
SUM(CASE WHEN kategori = 'Lainnya' THEN harga ELSE 0 END) AS 'total_inv_lainnya',
SUM(CASE WHEN kategori = 'Lainnya' THEN jumlah_nilai_Penyusutan ELSE 0 END) AS 'total_inv_penyusutan_lainnya',
SUM(harga) AS 'total_inventaris',
SUM(jumlah_nilai_Penyusutan) AS 'total_penyusutan',
SUM(nilai_saat_ini) AS 'total_sisa_inventaris'
FROM v_akumulasi_inventaris_total $SqlDataWHId
");
$invkas = mysqli_fetch_assoc($invkas1);
$total_inv_tunai = $invkas['total_inv_tunai'];
$total_inv_bank = $invkas['total_inv_bank'];
$total_inv_hutang_pendek = $invkas['total_inv_hutang_pendek'];
$total_inv_hutang_panjang = $invkas['total_inv_hutang_panjang'];
$total_inv_tanah = $invkas['total_inv_tanah'];
$total_inv_kendaraan = $invkas['total_inv_kendaraan'];
$total_inv_penyusutan_kendaraan = '-'.$invkas['total_inv_penyusutan_kendaraan'];
$total_inv_lainnya = $invkas['total_inv_lainnya'];
$total_inv_penyusutan_lainnya = '-'.$invkas['total_inv_penyusutan_lainnya'];
$total_inventaris = $invkas['total_inventaris'];
$total_penyusutan = $invkas['total_penyusutan'];
$total_sisa_inventaris = $invkas['total_sisa_inventaris'];
//NERACA ACTIVA
$vbarang = mysqli_query($con, "
SELECT
SUM(CASE WHEN metode_pembayaran = 'Tunai' THEN total_harga ELSE 0 END) AS 'total_barang_tunai',
SUM(CASE WHEN metode_pembayaran = 'Bank' THEN total_harga ELSE 0 END) AS 'total_barang_bank',
SUM(CASE WHEN metode_pembayaran = 'Hutang Barang' THEN total_harga ELSE 0 END) AS 'total_barang_hutang'
FROM v_jumlah_data_gudang $SqlDataWHId
");
$barang = mysqli_fetch_assoc($vbarang);
$total_barang_tunai = $barang['total_barang_tunai'];
$total_barang_bank = $barang['total_barang_bank'];
$total_barang_hutang = $barang['total_barang_hutang'];
$vactiva = mysqli_query($con,"SELECT * FROM v_neraca_activa $SqlDataWHId");
$activa = mysqli_fetch_assoc($vactiva);
$saldo_kas = $activa['saldo_kas'] - $total_barang_tunai - $total_inv_tunai;
$saldo_bank = $activa['saldo_bank'] - $total_barang_bank - $total_inv_bank;
$piutang_usaha = $activa['piutang_usaha'];
$piutang_barang = 0;
$piutang_karyawan = $activa['piutang_karyawan'];
$piutang_lain = $activa['piutang_lain'];
$persedian_barang = $total_barang_tunai + $total_barang_bank + $total_barang_hutang;
$total_activa_lancar = $saldo_kas + $saldo_bank + $piutang_usaha + $piutang_barang + $piutang_karyawan + $piutang_lain + $persedian_barang;
//ACTIVA TETAP
$total_activa_tetap = $total_sisa_inventaris;
$total_activa = $total_activa_lancar + $total_activa_tetap;
//NERACA PASSIVA
$vpassiva = mysqli_query($con,"SELECT * FROM v_neraca_passiva $SqlDataWHId");
$passiva = mysqli_fetch_assoc($vpassiva);
//$hutang_barang = $passiva['hutang_barang'];
$hutang_barang = $total_barang_hutang + $passiva['hutang_barang'];
$hutang_jangka_pendek = $passiva['hutang_jangka_pendek'] + $total_inv_hutang_pendek;
$hutang_jangka_panjang = $passiva['hutang_jangka_panjang'] + $total_inv_hutang_panjang;
$jumlah_kewajiban = $hutang_barang + $hutang_jangka_pendek + $hutang_jangka_panjang;
$modal_awal = $passiva['modal_awal'];
$modal_tambahan = $passiva['modal_tambahan'];
$laba_ditahan = $passiva['laba_ditahan'];
$laba_rugi_berjalan = $passiva['laba_rugi_berjalan'] - $total_penyusutan;
$pemasukan1 = mysqli_query($con,"SELECT sum(pemasukan) as pemasukan FROM v_akun_laba_rugi WHERE jenis = 1 $SqlDataId and status != 'Modal Tambahan' and status != 'Modal Awal' and status != 'Laba Ditahan'");
$pemasukan = mysqli_fetch_assoc($pemasukan1);
$pengeluaran1 = mysqli_query($con,"SELECT sum(pengeluaran) as pengeluaran FROM v_akun_laba_rugi WHERE jenis = 2 $SqlDataId");
$pengeluaran = mysqli_fetch_assoc($pengeluaran1);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Neraca dan Laba Rugi</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<!--<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>-->
</ol>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<center>
<h5><b><u>Neraca Activa</u></b></h5>
</center>
<table class="table table-bordered table-striped table-sm">
<thead>
<tr>
<th>Keterangan</th>
<th>Nominal</th>
</tr>
</thead>
<tbody>
<tr>
<th>Activa Lancar</th>
<td></td>
</tr>
<tr>
<td>Saldo Kas</td>
<td>Rp. <?php echo number_format($saldo_kas); ?></td>
</tr>
<tr>
<td>Saldo Bank</td>
<td>Rp. <?php echo number_format($saldo_bank); ?></td>
</tr>
<tr>
<td>Piutang Usaha</td>
<td>Rp. <?php echo number_format($piutang_usaha); ?></td>
</tr>
<tr>
<td>Piutang Barang</td>
<td>Rp. <?php echo number_format($piutang_barang); ?></td>
</tr>
<tr>
<td>Piutang Karyawan</td>
<td>Rp. <?php echo number_format($piutang_karyawan); ?></td>
</tr>
<tr>
<td>Piutang Lain-lain</td>
<td>Rp. <?php echo number_format($piutang_lain); ?></td>
</tr>
<tr>
<td>Biaya Dibayar Dimuka (BDD)</td>
<td>Rp. -</td>
</tr>
<tr>
<td>(Akumulasi Penyusutan BDD)</td>
<td>Rp. -</td>
</tr>
<tr>
<td>Persediaan Barang</td>
<td>Rp. <?php echo number_format($persedian_barang); ?></td>
</tr>
<tr>
<th>Jumlah Aktiva Lancar</th>
<th>Rp. <?php echo number_format($total_activa_lancar); ?></th>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<th>Aktiva Tetap</th>
<th></th>
</tr>
<tr>
<td>Tanah</td>
<td>Rp. <?php echo number_format($total_inv_tanah); ?></td>
</tr>
<tr>
<td>Kendaraan</td>
<td>Rp. <?php echo number_format($total_inv_kendaraan); ?></td>
</tr>
<tr>
<td>(Akumulasi Penyusutan Kendaraan)</td>
<td>Rp. <?php echo number_format($total_inv_penyusutan_kendaraan); ?></td>
</tr>
<tr>
<td>Barang Inventaris</td>
<td>Rp. <?php echo number_format($total_inv_lainnya); ?></td>
</tr>
<tr>
<td>(Akumulasi Penyusutan Inventaris)</td>
<td>Rp. <?php echo number_format($total_inv_penyusutan_lainnya); ?></td>
</tr>
<tr>
<th>Jumlah Activa Tetap</th>
<th>Rp. <?php echo number_format($total_activa_tetap); ?></th>
</tr>
<tr>
<th></th>
<th></th>
</tr>
<tr>
<th>TOTAL ACTIVA</th>
<th>Rp. <?php echo number_format($total_activa); ?></th>
</tr>
</tbody>
</table>
</div>
<div class="col-md-4">
<center>
<h5><b><u>Neraca Passiva</u></b></h5>
</center>
<table class="table table-bordered table-striped table-sm">
<thead>
<tr>
<th>Keterangan</th>
<th>Nominal</th>
</tr>
</thead>
<tbody>
<tr>
<th>Kewajiban</th>
<td></td>
</tr>
<tr>
<td>Hutang Barang</td>
<td>Rp. <?php echo number_format($hutang_barang); ?></td>
</tr>
<tr>
<td>Hutang Jangka Pendek</td>
<td>Rp. <?php echo number_format($hutang_jangka_pendek); ?></td>
</tr>
<tr>
<td>Hutang Jangka Panjang</td>
<td>Rp. <?php echo number_format($hutang_jangka_panjang); ?></td>
</tr>
<tr>
<th>Jumlah Kewajiban</th>
<th>Rp. <?php echo number_format($jumlah_kewajiban); ?></th>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td>*</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<th>Modal</th>
<th></th>
</tr>
<tr>
<td>Modal Awal</td>
<td>Rp. <?php echo number_format($modal_awal); ?></td>
</tr>
<tr>
<td>Laba Ditahan</td>
<td>Rp. <?php echo number_format($laba_ditahan); ?></td>
</tr>
<tr>
<td>Modal Tambahan</td>
<td>Rp. <?php echo number_format($modal_tambahan); ?></td>
</tr>
<tr>
<td>Laba Rugi Berjalan</td>
<td>Rp. <?php echo number_format($laba_rugi_berjalan); ?></td>
</tr>
<tr>
<th>Jumlah Modal</th>
<th>Rp. <?php echo number_format($modal_awal + $laba_ditahan + $modal_tambahan + $laba_rugi_berjalan); ?></th>
</tr>
<tr>
<th></th>
<th></th>
</tr>
<tr>
<th>TOTAL PASSIVA</th>
<th>Rp. <?php echo number_format($modal_awal + $laba_ditahan + $modal_tambahan + $laba_rugi_berjalan + $jumlah_kewajiban); ?></th>
</tr>
</tbody>
</table>
</div>
<div class="col-md-4">
<center>
<h5><b><u>Laba Rugi</u></b></h5>
<table class="table table-bordered table-striped table-sm">
<thead>
<tr>
<th>Keterangan</th>
<th>Nominal</th>
</tr>
</thead>
<tbody>
<?php
$akuntran = mysqli_query($con,"SELECT status as status, sum(pemasukan) as pemasukan FROM v_akun_laba_rugi WHERE jenis = 1 $SqlDataId and status NOT IN ('Modal Tambahan','Modal Awal','Laba Ditahan') group by status order by status DESC");
while ($akun = mysqli_fetch_assoc($akuntran)) { ?>
<tr>
<td><?php echo $akun['status']; ?></td>
<td>Rp. <?php echo number_format($akun['pemasukan']); ?></td>
</tr>
<?php } ?>
<tr>
<th>Total Pendapatan</th>
<th>Rp. <?php echo number_format($pemasukan['pemasukan']); ?></th>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<?php
$akuntran1 = mysqli_query($con,"SELECT status as status, sum(pengeluaran) as pengeluaran FROM v_akun_laba_rugi WHERE jenis = 2 $SqlDataId and status NOT IN ('Piutang Barang','Piutang Usaha','Piutang Lain-lain','Piutang Karyawan') group by status order by status DESC");
while ($akun1 = mysqli_fetch_assoc($akuntran1)) { ?>
<tr>
<td><?php echo $akun1['status']; ?></td>
<td>Rp. <?php echo number_format($akun1['pengeluaran']); ?></td>
</tr>
<?php } ?>
<tr>
<td>Beban Penyusutan</td>
<td>Rp. <?php echo number_format($total_penyusutan); ?></td>
</tr>
<tr>
<th>Total Pengeluaran</th>
<th>Rp. <?php echo number_format($pengeluaran['pengeluaran'] + $total_penyusutan); ?></th>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<th>LABA RUGI</th>
<th>Rp. <?php echo number_format($pemasukan['pemasukan'] - $pengeluaran['pengeluaran'] - $total_penyusutan); ?></th>
</tr>
</tbody>
</table>
</center>
</div>
</div>
</div>
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+87
View File
@@ -0,0 +1,87 @@
<!-- Main content -->
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-6">
<h3 class="card-title">List Order</h3>
</div>
<div class="col-6">
<ol class="float-sm-right mb-0">
<?php
if(in_array("Tambah", $json_array[18]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('order_list_tambah'); ?>" type="button" class="btn btn-danger btn-sm">Tambah</a>
<?php } ?>
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Order Time</th>
<th>Nama</th>
<th>Alamat</th>
<th>Desa</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Paket</th>
<th>Dibuat Oleh</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM v_order_list WHERE $SqlSvData status = 'order'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 100px;"><?php echo $server['time_start']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['alamat']; ?></td>
<td><?php echo $server['nama_desa']; ?></td>
<td><a href="https://www.google.com/maps/search/?api=1&query=<?php echo $server['latitude'].','.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td><?php echo $server['nomor_whatsapp']; ?> <a href="https://wa.me/<?php echo $server['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px; " class="btn btn-sm btn-success">Chat</a></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nama_paket']; ?></td>
<td><?php echo $server['create_with']; ?></td>
<td>
<form method="post">
<?php if(in_array("Survey", $json_array[18]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('order_list_update|'.$server['id']); ?>" type="button" class="btn btn-primary btn-sm m-1">Proses Order</a>
<?php } if(in_array("Ubah", $json_array[18]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('order_list_ubah|'.$server['id']); ?>" type="button" class="btn btn-secondary btn-sm m-1">Edit</a>
<?php } if(in_array("Hapus", $json_array[18]['sub_menu'])){ ?>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
<?php } ?>
</form>
</td>
</tr>
<?php
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("order_list",$iddata );
}
} ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+73
View File
@@ -0,0 +1,73 @@
<!-- Main content -->
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-6">
<h3 class="card-title">Batal Order</h3>
</div>
<div class="col-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Time</th>
<th>Nama</th>
<th>Alamat</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Keterangan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM v_order_list WHERE $SqlSvData status = 'batal'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 100px;"><?php echo $server['time_start']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['alamat']; ?></td>
<td><a href="https://google.com/maps/?q=<?php echo $server['latitude'].', '.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td><?php echo $server['nomor_whatsapp']; ?> <a href="https://wa.me/<?php echo $server['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px; " class="btn btn-sm btn-success">Chat</a></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['keterangan_batal']; ?></td>
<td>
<form method="post">
<?php if(in_array("Hapus", $json_array[18]['sub_menu'])){ ?>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm m-1" />
<?php } ?>
</form>
</td>
</tr>
<?php
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("order_list",$iddata );
}
} ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+222
View File
@@ -0,0 +1,222 @@
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-6">
<h3 class="card-title">Proses Order</h3>
</div>
<div class="col-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Time</th>
<th>Id Pelanggan</th>
<th>Nama</th>
<th>Alamat</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Paket</th>
<th>Topologi</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM v_order_list WHERE $SqlSvData status = 'pending'");
while ($server = mysqli_fetch_assoc($aserver))
{
// echo "<pre>";
// print_r($server);
// echo "</pre>";
?>
<tr>
<td style="max-width: 100px;"><?php echo $server['time_update']; ?></td>
<td><?php echo $server['akun']; ?></td>
<td><?php echo $server['nama']; ?></td>
<td style="max-width: 200px;"><?php echo $server['alamat']; ?></td>
<td><a href="https://google.com/maps/?q=<?php echo $server['latitude'].','.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td><?php echo $server['nomor_whatsapp']; ?> <a href="https://wa.me/<?php echo $server['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px; " class="btn btn-sm btn-success">Chat</a></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nama_paket']; ?></td>
<td style="max-width: 100px;"><?php echo $server['nama_topologi'].' Port '.$server['port_odp']; ?></td>
<td>
<div class="row">
<?php if(in_array("Ubah", $json_array[18]['sub_menu'])){ ?>
<a type="button" class="btn btn-warning btn-sm m-1" data-toggle="modal" data-target="#modal-proses<?php echo $server['id'];?>">Proses
</a>
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#modal-batal<?php echo $server['id'];?>">Batalkan</a>
<?php } ?>
</div>
</td>
</tr>
<?php
// echo "<pre>";
// print_r($_SESSION);
// echo "</pre>";
?>
<!-- Modal Proses -->
<div class="modal fade" id="modal-proses<?php echo $server['id'];?>">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-warning">
<h4 class="modal-title">Lanjutan Proses</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h5>Sebelum melanjutakan proses pastikan hal-hal berikut</h5>
<ul>
<li>Peralatan sudah di siapkan</li>
<li>Pelanggan sudah di hubungi</li>
</ul>
<hr>
<form method="post" enctype="multipart/form-data">
<div class="form-container">
<div class="row">
<div class="col-md-6">
<center>
<label>Upload Foto Port ODP</label>
<div class="uploadImage" data-id="odp<?php echo $server['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div><hr>
<label>Upload Foto Rumah</label>
<div class="uploadImage" data-id="rmh<?php echo $server['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
<div class="col-md-6">
<center>
<label>Upload Foto ONU terinstalasi</label>
<div class="uploadImage" data-id="onu<?php echo $server['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div><hr>
<label>Upload SpeedTest</label>
<div class="uploadImage" data-id="tes<?php echo $server['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
</div>
</div>
</form>
</div>
<form method="post" enctype="multipart/form-data">
<div class="modal-footer justify-content-between">
<button type="submit" name="lanjut<?php echo $server['id'];?>" class="btn btn-primary">Lanjutkan Proses</button>
</form>
<?php
if (isset($_POST['lanjut'.$server['id']]))
{
$fotoodp = $_SESSION['uploaded_files']['odp'.$server['id']];
$fotorumah = $_SESSION['uploaded_files']['rmh'.$server['id']];
$fotoonu = $_SESSION['uploaded_files']['onu'.$server['id']];
$fototes = $_SESSION['uploaded_files']['tes'.$server['id']];
if (isset($fotoodp) AND isset($fotorumah) AND isset($fotoonu) AND isset($fototes) ) {
// Insert ke DB Pelanggan
$update = mysqli_query($con,"INSERT INTO pelanggan (id_data_server, id_profile_paket, id_master_topologi, id_marketing, id_master_desa, port_odp, jenis_layanan, nama, nik, alamat, latitude, longitude, nomor_whatsapp, email, status, akun, foto_odp, foto_rumah, foto_onu, foto_test) VALUES
('$server[id_data_server]', '$server[id_profile_paket]', '$server[id_master_topologi]', '$server[id_marketing]', '$server[id_master_desa]', '$server[port_odp]', '$server[jenis_layanan]', '$server[nama]', '$server[nik]', '$server[alamat]', '$server[latitude]', '$server[longitude]', '$server[nomor_whatsapp]', '$server[email]', 'register', '$server[akun]', '$fotoodp', '$fotorumah', '$fotoonu', '$fototes')");
// Update Order List
$update = mysqli_query($con,"UPDATE order_list SET status = 'instalasi', time_update = '$date' WHERE id = '$server[id]' ");
if ($update)
{
unset($_SESSION['uploaded_files']['odp'.$server['id']]);
unset($_SESSION['uploaded_files']['rmh'.$server['id']]);
unset($_SESSION['uploaded_files']['onu'.$server['id']]);
unset($_SESSION['uploaded_files']['tes'.$server['id']]);
sweetAlert("Proses oder sudah masuk ke data registrasi", "success", "?".encrypt_url('user_register'));
}
else { echo "UPLOAD GAGAL .. !!!";}
// Bikin Notif WhatsApp ke Teknisi / Pelanggan untuk kirim akun PPPOE / Hotspot...
// Buat Form Akun Hotspot Jika Pelanggan berlangganan Hotspot Bulanan
}
else
{
sweetAlert("Proses GAGAL..! Ada gambar yang belum di isi", "error");
}
}
?>
</div>
</div>
</div>
</div>
<!-- END Modal Proses -->
<!-- Modal Batal -->
<div class="modal fade" id="modal-batal<?php echo $server['id'];?>">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-danger">
<h4 class="modal-title">Batalkan Order</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h4>Order <b><?php echo $server['nama'] ?></b> <small>akan di batalkan</small></h4>
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>Keterangan</label>
<textarea type="text" class="form-control" name="ket" rows="4"></textarea>
</div>
</div>
<div class="modal-footer justify-content-between">
<button type="submit" name="batal<?php echo $server['id'];?>" class="btn btn-danger">Batalkan Order</button>
</form>
<?php
if (isset($_POST['batal'.$server['id']]))
{
$update = mysqli_query($con,"UPDATE order_list SET status = 'batal', time_update = '$date', keterangan_batal = '$_POST[ket]'
WHERE id = '$server[id]' ");
if ($update)
{
sweetAlert("Data telah order telah di batalkan", "success", "?".encrypt_url('order_list_cancel'));
}
}
?>
</div>
</div>
</div>
</div>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+151
View File
@@ -0,0 +1,151 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<!-- general form elements -->
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">Tambah Order List</h3>
</div>
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6">
<center><label>INFORMASI LAYANAN</label></center>
<div class="card-body">
<div class="form-group m-1">
<label>Pilih Server</label>
<select id="dropdown0" class="form-control" required name="ids">
<option value="">Pilih</option>
<?php
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>"><?php echo htmlspecialchars($value['nama_server']); ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label>Jenis Layanan</label>
<select id="dropdown1" class="form-control" required name="jenis">
<option value="">Pilih</option>
<option value="PPPOE">PPPOE</option>
<option value="Hotspot">Hotspot</option>
</select>
</div>
<div class="form-group m-1" id="group-dropdown2">
<label>Paket Berlangganan</label>
<select id="dropdown2" class="form-control select2bs4" required name="idp">
</select>
</div>
<div class="form-group m-1" id="group-dropdown3">
<label>Marketing Area / Penagih</label>
<select id="dropdown3" class="form-control select2bs4" required name="idm">
</select>
</div>
<hr><center><label>INFORMASI PRIBADI</label></center>
<div class="form-group m-1">
<label>NIK</label>
<input type="text" class="form-control" required="required" name="nik">
</div>
<div class="form-group m-1">
<label>Nama</label>
<input type="text" class="form-control" required="required" name="nama">
</div>
<div class="form-group m-1">
<label>Email</label>
<input type="email" class="form-control" required="required" name="email">
</div>
<div class="form-group m-1">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" required="required" name="nowa">
</div>
</div>
</div>
<div class="col-md-6">
<div class="card-body">
<div class="form-group m-1">
<label>Alamat</label>
<input type="text" class="form-control" required="required" name="alamat">
</div>
<div class="form-group m-1" id="group-dropdown4">
<label>Desa</label>
<select id="dropdown4" class="form-control select2bs4" required="required" name="desa">
</select>
</div>
<div class="form-group m-1">
<label>Catatan</label>
<textarea class="form-control" name="catatan" rows="3"></textarea>
<i class="text-danger"><small>Isi jika di perlukan</small></i>
</div>
<div class="form-group m-1" >
<label>Pilih Lokasi Maps / Isi Koordinat</label>
<input class="form-control" type="text" id="latlong" required>
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" name="latitude" required="required">
<input type="hidden" id="longitude" data-maps="longitude" name="longitude" required="required">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary" name="tambah">Tambah</button>
</div>
</form>
</div>
</div>
</section>
<?php
if (isset($_POST['tambah'])) {
$nowa = preg_replace("/[^0-9]/", "", $_POST['nowa']);
try {
$cekExist = $pdo->prepare("SELECT id FROM pelanggan WHERE email = :email OR nik = :nik");
$cekExist->execute([
':email' => $_POST['email'],
':nik' => $_POST['nik']
]);
if ($cekExist->rowCount() === 0) {
$stmt = $pdo->prepare("INSERT INTO order_list (id_data_server, id_profile_paket, id_marketing, jenis_layanan, nama, nik, alamat, id_master_desa, latitude, longitude, nomor_whatsapp, email, status, catatan, create_with) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'order', ?, ?)");
$stmt->execute([$_POST['ids'], $_POST['idp'], $_POST['idm'], $_POST['jenis'], $_POST['nama'], $_POST['nik'], $_POST['alamat'], $_POST['desa'], $_POST['latitude'], $_POST['longitude'], $nowa, $_POST['email'], $_POST['catatan'], $SvNama]);
$last_id = $pdo->lastInsertId();
$ano = $pdo->prepare("SELECT nomor_whatsapp FROM data_server WHERE id = ?");
$ano->execute([$_POST['ids']]);
$no = $ano->fetch(PDO::FETCH_ASSOC);
$nomor = explode(',', $no['nomor_whatsapp'] . ',' . $nowa);
// Kirim Pesan WhatsApp
$APIwa = new PesanWA();
$APIwa->Create_Pesan($_POST['ids'], $last_id, 'pesan_registrasi', 'order');
$Pesan = $APIwa->Get_Pesan();
$APIwa->Send_Pesan($_POST['ids'], 'sendMessage', $nomor, $Pesan);
sweetAlert("Order list telah di tambah", "success", "?" . encrypt_url('order_list'));
} else {
$existRow = $cekExist->fetch(PDO::FETCH_ASSOC);
if ($existRow['email'] === $_POST['email']) {
sweetAlert("Registrasi GAGAL..! EMAIL sudah terdaftar", "error");
} elseif ($existRow['nik'] === $_POST['nik']) {
sweetAlert("Registrasi GAGAL..! NIK sudah terdaftar", "error");
} else {
sweetAlert("Registrasi GAGAL..! gagal upload ke database", "error");
}
}
} catch (PDOException $e) {
sweetAlert("Error: " . $e->getMessage(), "error");
// Handle exception
// echo "Error: " . $e->getMessage();
}
}
?>
+158
View File
@@ -0,0 +1,158 @@
<?php
$date = date('Y-m-d H:i:s');
$db = mysqli_query($con,"SELECT * FROM order_list WHERE id = '$page[1]'");
$isi = mysqli_fetch_assoc($db);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<!-- general form elements -->
<div class="card card-secondary">
<div class="card-header">
<h3 class="card-title">Ubah Data Order List</h3>
</div>
<form method="post" enctype="multipart/form-data">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<center><label>INFORMASI LAYANAN</label></center>
<div class="form-group m-1">
<label>Pilih Server</label>
<select id="dropdown0" class="form-control" required="required" name="ids">
<option value="">Pilih</option>
<?php
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>" <?php if($value['id'] == $isi['id_data_server']) { echo "selected";} ?> ><?php echo htmlspecialchars($value['nama_server']); ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label>Jenis Layanan</label>
<select id="dropdown1" class="form-control" name="jenis">
<option value="PPPOE" <?php if($isi['jenis_layanan'] == 'PPPOE') { echo "selected";} ?>>PPPOE</option>
<option value="Hotspot" <?php if($isi['jenis_layanan'] == 'Hotspot') { echo "selected";} ?>>Hotspot</option>
</select>
</div>
<div class="form-group m-1" id="group-dropdown2">
<label>Paket Berlangganan</label>
<select id="dropdown2" class="form-control select2bs4" required="required" name="idp" data-id="<?php echo $isi['id_profile_paket']; ?>">
</select>
</div>
<div class="form-group m-1" id="group-dropdown3">
<label>Marketing Area / Penagih</label>
<select id="dropdown3" class="form-control select2bs4" required="required" name="idm" data-id="<?php echo $isi['id_marketing']; ?>">
</select>
</div>
<hr><center><label>INFORMASI PRIBADI</label></center>
<div class="form-group m-1">
<label>NIK</label>
<input type="text" class="form-control" name="nik" value="<?php echo $isi['nik']; ?>">
</div>
<div class="form-group m-1">
<label>Nama</label>
<input type="text" class="form-control" name="nama" value="<?php echo $isi['nama']; ?>">
</div>
<div class="form-group m-1">
<label>Email</label>
<input type="text" class="form-control" name="email" value="<?php echo $isi['email']; ?>">
</div>
<div class="form-group m-1">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nowa" value="<?php echo $isi['nomor_whatsapp']; ?>">
</div>
</div>
<div class="col-md-6">
<div class="form-group m-1">
<label>Alamat</label>
<input type="text" class="form-control" name="alamat" value="<?php echo $isi['alamat']; ?>">
</div>
<div class="form-group m-1" id="group-dropdown4">
<label>Desa</label>
<select id="dropdown4" class="form-control select2bs4" required="required" name="desa" data-id="<?php echo $isi['id_master_desa']; ?>">
</select>
</div>
<div class="form-group m-1">
<label>Catatan</label>
<textarea class="form-control" name="catatan" rows="3"><?php echo $isi['catatan']; ?></textarea>
<i class="text-danger"><small>Isi jika di perlukan</small></i>
</div>
<div class="form-group m-1">
<label>Pilih Lokasi Maps</label><input class="form-control" type="text" id="latlong" required>
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" value="<?php echo $isi['latitude']; ?>" name="latitude">
<input type="hidden" id="longitude" data-maps="longitude" value="<?php echo $isi['longitude']; ?>" name="longitude">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
</div>
</div>
<hr>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm m-1" name="ubah">Ubah</button>
</div>
</form>
</div>
</div>
</section>
<?php
if (isset($_POST['ubah'])) {
try {
$cekmail = $pdo->prepare("SELECT id FROM pelanggan WHERE email = :email");
$cekmail->execute([':email' => $_POST['email']]);
if ($cekmail->rowCount() === 0) {
// Siapkan statement untuk melakukan update
$stmt = $pdo->prepare("UPDATE order_list SET
id_profile_paket = :idp,
id_data_server = :ids,
id_marketing = :idm,
jenis_layanan = :jenis,
nama = :nama,
nik = :nik,
alamat = :alamat,
id_master_desa = :desa,
latitude = :latitude,
longitude = :longitude,
nomor_whatsapp = :nowa,
email = :email,
catatan = :catatan
WHERE id = :id");
// Bind parameter
$stmt->bindParam(':idp', $_POST['idp']);
$stmt->bindParam(':ids', $_POST['ids']);
$stmt->bindParam(':idm', $_POST['idm']);
$stmt->bindParam(':jenis', $_POST['jenis']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':nik', $_POST['nik']);
$stmt->bindParam(':alamat', $_POST['alamat']);
$stmt->bindParam(':desa', $_POST['desa']);
$stmt->bindParam(':latitude', $_POST['latitude']);
$stmt->bindParam(':longitude', $_POST['longitude']);
$stmt->bindParam(':nowa', $_POST['nowa']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':catatan', $_POST['catatan']);
$stmt->bindParam(':id', $page[1]);
// Eksekusi statement
if ($stmt->execute()) {
sweetAlert("Data telah diubah", "success");
} else {
sweetAlert("GAGAL..! Merubah data", "error");
}
} else {
sweetAlert("GAGAL..! Email sudah terdaftar", "error");
}
} catch (PDOException $e) {
// Tangani kesalahan
sweetAlert("Error: " . $e->getMessage(), "success");
// echo "Error: " . $e->getMessage();
}
}
?>
+258
View File
@@ -0,0 +1,258 @@
<?php
$date = date('Y-m-d H:i:s');
$db = mysqli_query($con,"SELECT * FROM order_list WHERE id = '$page[1]'");
$isi = mysqli_fetch_assoc($db);
$lat = $isi['latitude'];
$long = $isi['longitude'];
$sql = "
SELECT *,
(6371000 *
acos(
cos(radians(:lat)) *
cos(radians(SUBSTRING_INDEX(titik_koordinat, ',', 1))) *
cos(radians(SUBSTRING_INDEX(titik_koordinat, ',', -1)) - radians(:long)) +
sin(radians(:lat)) *
sin(radians(SUBSTRING_INDEX(titik_koordinat, ',', 1)))
)
) AS distance
FROM master_topologi
ORDER BY distance ASC";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':lat', $lat);
$stmt->bindParam(':long', $long);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<!-- general form elements -->
<div class="card card-warning">
<div class="card-header">
<h3 class="card-title">Proses Data Order List</h3>
</div>
<form method="post" enctype="multipart/form-data">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<center><label>INFORMASI LAYANAN</label></center>
<div class="form-group m-1">
<label>Pilih Server</label>
<select id="dropdown0" class="form-control" required="required" name="ids">
<option value="">Pilih</option>
<?php
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>" <?php if($value['id'] == $isi['id_data_server']) { echo "selected";} ?> ><?php echo htmlspecialchars($value['nama_server']); ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label>Jenis Layanan</label>
<select id="dropdown1" class="form-control" name="jenis">
<option value="PPPOE" <?php if($isi['jenis_layanan'] == 'PPPOE') { echo "selected";} ?>>PPPOE</option>
<option value="Hotspot" <?php if($isi['jenis_layanan'] == 'Hotspot') { echo "selected";} ?>>Hotspot</option>
</select>
</div>
<div class="form-group m-1" id="group-dropdown2">
<label>Paket Berlangganan</label>
<select id="dropdown2" class="form-control select2bs4" required="required" name="idp" data-id="<?php echo $isi['id_profile_paket']; ?>">
</select>
</div>
<div class="form-group m-1" id="group-dropdown3">
<label>Marketing Area / Penagih</label>
<select id="dropdown3" class="form-control select2bs4" required="required" name="idm" data-id="<?php echo $isi['id_marketing']; ?>">
</select>
</div>
<hr><center><label>INFORMASI PRIBADI</label></center>
<div class="form-group m-1">
<label>NIK</label>
<input type="text" class="form-control" name="nik" value="<?php echo $isi['nik']; ?>">
</div>
<div class="form-group m-1">
<label>Nama</label>
<input type="text" class="form-control" name="nama" value="<?php echo $isi['nama']; ?>">
</div>
<div class="form-group m-1">
<label>Email</label>
<input type="text" class="form-control" name="email" value="<?php echo $isi['email']; ?>">
</div>
<div class="form-group m-1">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nowa" value="<?php echo $isi['nomor_whatsapp']; ?>">
</div>
</div>
<div class="col-md-6">
<div class="form-group m-1">
<label>Alamat</label>
<input type="text" class="form-control" name="alamat" value="<?php echo $isi['alamat']; ?>">
</div>
<div class="form-group m-1" id="group-dropdown4">
<label>Desa</label>
<select id="dropdown4" class="form-control select2bs4" required="required" name="desa" data-id="<?php echo $isi['id_master_desa']; ?>">
</select>
</div>
<div class="form-group m-1">
<label>Catatan</label>
<textarea class="form-control" name="catatan" rows="3"><?php echo $isi['catatan']; ?></textarea>
<i class="text-danger"><small>Isi jika di perlukan</small></i>
</div>
<div class="form-group m-1">
<label>Pilih Lokasi Maps</label><input class="form-control" type="text" id="latlong" required>
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" value="<?php echo $isi['latitude']; ?>" name="latitude">
<input type="hidden" id="longitude" data-maps="longitude" value="<?php echo $isi['longitude']; ?>" name="longitude">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-md-6">
<div class="form-group m-1">
<label for="firstDropdown">Topologi ODP</label>
<select class="select2bs4" name="odp" style="width: 100%" id="firstDropdown" required="required" onchange="updateSecondDropdown()">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("master_topologi", $SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<?php //echo $SqlDataWHId; ?>
</div>
<div class="col-md-6">
<div class="form-group m-1">
<label for="secondDropdown">Port ODP</label>
<select id="secondDropdown" name="port" class="form-control" required="required">
<option value="">Pilih Port ODP</option>
</select>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm m-1" name="ubah">Proses Order</button>
<a type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#modal-batal">Batalkan Order</a>
<!-- <button type="submit" class="btn btn-danger" name="ubah">Batalkan Order</button> -->
</div>
</form>
</div>
</div>
</section>
<?php
if (isset($_POST['ubah'])) {
// Data Akun PPPOE Atau Hotspot
$akun = date('YmdHis');
$date = date('Y-m-d H:i:s'); // Tambahkan ini jika belum ada
try {
// Cek apakah email sudah ada di database
$cekmail = $pdo->prepare("SELECT id FROM pelanggan WHERE email = :email");
$cekmail->execute([':email' => $_POST['email']]);
// Ambil hasil dari query
$result = $cekmail->fetch(PDO::FETCH_ASSOC);
// Jika email ada, lanjutkan update
if ($result) {
sweetAlert("Email sudah terdaftar", "error");
}
else {
// Siapkan pernyataan SQL untuk update
$stmt = $pdo->prepare("UPDATE order_list SET
id_profile_paket = :id_profile_paket,
jenis_layanan = :jenis_layanan,
nama = :nama,
nik = :nik,
alamat = :alamat,
id_master_desa = :id_master_desa,
latitude = :latitude,
longitude = :longitude,
nomor_whatsapp = :nomor_whatsapp,
id_master_topologi= :id_master_topologi,
port_odp = :port_odp,
email = :email,
time_update = :time_update,
status = 'pending',
akun = :akun
WHERE id = :id");
// Ikat parameter
$stmt->bindParam(':id_profile_paket', $_POST['idp']);
$stmt->bindParam(':jenis_layanan', $_POST['jenis']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':nik', $_POST['nik']);
$stmt->bindParam(':alamat', $_POST['alamat']);
$stmt->bindParam(':id_master_desa', $_POST['desa']);
$stmt->bindParam(':latitude', $_POST['latitude']);
$stmt->bindParam(':longitude', $_POST['longitude']);
$stmt->bindParam(':nomor_whatsapp', $_POST['nowa']);
$stmt->bindParam(':id_master_topologi', $_POST['odp']);
$stmt->bindParam(':port_odp', $_POST['port']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':time_update', $date);
$stmt->bindParam(':akun', $akun);
$stmt->bindParam(':id', $page[1]);
// Eksekusi pernyataan
$stmt->execute();
// Jika berhasil, tampilkan pesan sukses
sweetAlert("Data telah di lanjutkan menuju proses order", "success", "?".encrypt_url('order_list_proses'));
}
} catch (PDOException $e) {
// Tangani kesalahan
sweetAlert("Error: " . $e->getMessage(), "error");
}
}
?>
<!-- Modal Batal -->
<div class="modal fade" id="modal-batal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-danger">
<h4 class="modal-title">Batalkan Order</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h4>Order <b><?php echo $isi['nama'] ?></b> <small>akan di batalkan</small></h4>
<form method="post" enctype="multipart/form-data">
<div class="form-group m-1">
<label>Keterangan</label>
<textarea type="text" class="form-control" name="ket" rows="4"></textarea>
</div>
</div>
<div class="modal-footer justify-content-between">
<button type="submit" name="batal" class="btn btn-danger">Batalkan Order</button>
</form>
<?php
if (isset($_POST['batal']))
{
$update = mysqli_query($con,"UPDATE order_list SET status = 'batal', time_update = '$date', keterangan_batal = '$_POST[ket]'
WHERE id = '$page[1]' ");
if ($update)
{
sweetAlert("Order telah di batalkan", "success", "?".encrypt_url('order_list_cancel'));
}
}
?>
</div>
</div>
</div>
</div>
<!-- END Modal Batal -->
+175
View File
@@ -0,0 +1,175 @@
<?php
$id = $_SESSION['master'];
$stmt = $pdo->prepare("SELECT payment_gateway,apikey_payment_gateway,url_payment_gateway,status_payment_gateway,tokenkey_payment_gateway FROM data_server WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
$payment_gateway = $data[0]['payment_gateway'];
$apikey = $data[0]['apikey_payment_gateway'];
$tokenkey = $data[0]['tokenkey_payment_gateway'];
$enpoint = $data[0]['url_payment_gateway'];
$status = $data[0]['status_payment_gateway'];
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Payment Gateway Setting</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-5">
<div class="card">
<div class="card-body">
<center>
<h3 class="text-danger">PERHATIAN..!</h3>
<p>Untuk mengaktifkan payment gateway anda harus terlebih dahulu mempunyai akun FLIP BUSSINESS</p>
<hr>
<?php if($status == "ACTIVE"){ ?>
<div class="card bg-success">
<h5 class="text-light m-1">STATUS : <?php echo $status; ?></h5>
</div>
<?php } else { ?>
<div class="card bg-danger">
<h5 class="text-light m-1">STATUS : <?php echo $status; ?></h5>
</div>
<?php } ?>
</center>
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>Jenis Payment Gateway</label>
<select class="form-control" name="jenis">
<option value="">Pilih Salah Satu</option>
<option value="flip" <?php if($payment_gateway == 'flip'){ echo "selected"; } ?>>Flip Bussiness</option>
</select>
</div>
<div class="form-group">
<label>ENDPOINT URL</label>
<input class="form-control" type="text" name="enpoint" value="<?php echo $enpoint; ?>">
</div>
<div class="form-group">
<label>API SECRET KEY</label>
<div class="input-group">
<input type="password" class="form-control password-input" id="password1" name="apikey" value="<?php echo $apikey; ?>">
<div class="input-group-append">
<div class="input-group-text password-toggle" data-target="password1">
<span class="fas fa-eye"></span>
</div>
</div>
</div>
</div>
<div class="form-group">
<label>TOKEN VALIDASI</label>
<div class="input-group">
<input type="password" class="form-control password-input" id="password2" name="tokenkey" value="<?php echo $tokenkey; ?>">
<div class="input-group-append">
<div class="input-group-text password-toggle" data-target="password2">
<span class="fas fa-eye"></span>
</div>
</div>
</div>
</div>
<input type="submit" class="btn btn-sm btn-primary m-1" name="simpan" value="Simpan Konfigurasi">
<?php if($status == "ACTIVE"){ ?>
<input type="submit" class="btn btn-sm btn-danger m-1" name="inactive" value="Non Aktifkan Payment Gateway">
<?php } else { ?>
<input type="submit" class="btn btn-sm btn-success m-1" name="active" value="Aktifkan Payment Gateway">
<?php } ?>
</form>
</div>
</div>
</div>
<div class="col-md-7">
<?php
// echo "<pre>";
// print_r($_SERVER);
// echo "</pre>";
?>
</div>
</div>
</div>
<div class="card-footer">
</div>
</div>
</div>
</div>
</div>
</section>
<?php
//Aktifkan Payment Gateway
if (isset($_POST['active'])) {
try {
if(!empty($apikey) || !empty($tokenkey) || !empty($enpoint) ) {
$stmt = $pdo->prepare("UPDATE data_server SET status_payment_gateway = 'ACTIVE' WHERE id = :idtik");
$stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Payment Gateway Telah Di Aktifkan", "success");
}
else {
sweetAlert("Gagal : Silahkan isi dulu API paramenter", "error");
}
} catch (PDOException $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
}
}
//Non Aktifkan Payment Gateway
if (isset($_POST['inactive'])) {
try {
$stmt = $pdo->prepare("UPDATE data_server SET status_payment_gateway = 'INACTIVE' WHERE id = :idtik");
$stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Payment Gateway Telah Di Non Aktifkan", "success");
} catch (PDOException $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
}
}
//Simpan data Payment gateway
if (isset($_POST['simpan'])) {
try {
$stmt = $pdo->prepare("UPDATE data_server SET payment_gateway = :payment_gateway, apikey_payment_gateway = :apikey_payment_gateway, url_payment_gateway = :url_payment_gateway, tokenkey_payment_gateway = :tokenkey_payment_gateway WHERE id = :idtik");
$stmt->bindParam(':payment_gateway', $_POST['jenis']);
$stmt->bindParam(':apikey_payment_gateway', $_POST['apikey']);
$stmt->bindParam(':url_payment_gateway', $_POST['enpoint']);
$stmt->bindParam(':tokenkey_payment_gateway', $_POST['tokenkey']);
$stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Payment Gateway telah ubah", "success");
} catch (PDOException $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
}
}
?>
<script>
document.querySelectorAll('.password-toggle').forEach(function(toggle) {
toggle.addEventListener('click', function() {
var targetId = this.getAttribute('data-target');
var passwordInput = document.getElementById(targetId);
var icon = this.querySelector('span');
if (passwordInput.type === 'password') {
passwordInput.type = 'text';
icon.classList.remove('fa-eye');
icon.classList.add('fa-eye-slash');
} else {
passwordInput.type = 'password';
icon.classList.remove('fa-eye-slash');
icon.classList.add('fa-eye');
}
});
});
</script>
+531
View File
@@ -0,0 +1,531 @@
<style>
.table-responsive {
overflow-x: hidden;
}
@media (max-width: 767px) { /* Untuk smartphone */
.hide-on-mobile {
display: none;
}
}
@media (min-width: 768px) and (max-width: 1024px) { /* Untuk tablet */
.hide-on-tablet {
display: none;
}
}
@media (min-width: 1024px) { /* Untuk laptop */
.hide-on-laptop {
display: none;
}
}
</style>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Pemasukan</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Pemasukan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tanggal</label>
<input type="date" class="form-control" name="waktu" required="required">
</div>
<div class="form-group">
<label>Nominal</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="nominal" required="required">
</div>
<div class="form-group">
<label>Jenis Pemasukan</label>
<select class="form-control" name="status" required="required">
<option value="">Pilih</option>
<?php
$akun_pengeluaran = array('Pendapatan PPPOE','Pendapatan Hotspot','Hutang Jangka Pendek','Hutang Jangka Panjang','Modal Tambahan','Modal Awal','Piutang Usaha','Piutang Karyawan','Piutang Lain-lain');
foreach ($akun_pengeluaran as $key) {
echo '<option value="'.$key.'">'.$key.'</option>';
}
$akuntran = mysqli_query($con,"SELECT * FROM daftar_akun_transaksi WHERE jenis = '1' $SqlDataId");
while ($akun = mysqli_fetch_assoc($akuntran))
{
echo '<option value="'.$akun['nama'].'">'.$akun['nama'].'</option>';
} ?>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" rows="8" name="keterangan"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$nominal = preg_replace("/[^0-9]/","",$_POST['nominal']);
$waktu = $_POST['waktu'].date(' H:i:s');
$input = mysqli_query($con,"INSERT INTO transaksi (id_data_server, id_user_akses, start_time, keterangan, pemasukan, status, metode_pembayaran) VALUES ('$_POST[ids]', '$UserId', '$waktu','$_POST[keterangan]','$nominal', '$_POST[status]', '$_POST[metode]')");
if ($input)
{
sweetAlert("Pemasukan telah di tambah", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<div class="card-body">
<div class="mb-1">
<div class="row">
<div class="col-4">
<div class="dropdown dropright">
<a class="btn btn-warning btn-sm dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-expanded="false">
Filter
</a>
<div class="dropdown-menu" style="width: 250px;">
<div class="m-2">
<form id="filter-form">
<div class="form-group m-1">
<label><small>Dari</small></label>
<input type="date" class="form-control form-control-sm" id="start-date" name="start_date">
</div>
<div class="form-group">
<label><small>Sampai</small></label>
<input type="date" class="form-control form-control-sm" id="end-date" name="end_date">
</div>
<button type="button" class="btn btn-primary btn-sm mt-2" id="apply-filter">Terapkan</button>
</form>
</div>
</div>
</div>
</div>
<div class="col-8">
<input type="text" id="search-input" placeholder="Cari..." class="form-control form-control-sm mb-2" style="width: 200px; float: right;">
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped" id="data-table">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Time</th>
<th class="hide-on-mobile">Keterangan</th>
<th class="hide-on-mobile">Nominal</th>
<th class="hide-on-mobile hide-on-tablet">Jenis Kas</th>
<th class="hide-on-mobile hide-on-tablet">Status</th>
<th class="hide-on-mobile hide-on-tablet">Action</th>
</tr>
</thead>
<tbody id="table-body">
<!-- Data akan dimuat di sini -->
</tbody>
</table>
</div>
<div id="loader" style="display:none;">Loading...</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
let offset = 0; // Offset untuk memuat data
const limit = 25; // Jumlah data per permintaan
let loading = false;
// Fungsi untuk memuat data
function loadMoreData(searchTerm = '', startDate = '', endDate = '', idS = <?php echo "'".$SvId."'"; ?>) {
if (loading) return; // Jangan panggil lagi jika sedang memuat
loading = true;
$('#loader').show();
$.ajax({
url: 'list_data/list_pemasukan.php',
type: 'GET',
data: { offset: offset, search: searchTerm, start_date: startDate, end_date: endDate, ids: idS }, // Tambahkan parameter pencarian dan filter
success: function(response) {
const result = JSON.parse(response);
const data = result.data;
if (data.length > 0) {
data.forEach((server, index) => {
// Data yang akan ditampilkan
let truncatedData = {
nama_server: server.nama_server,
start_time: server.start_time,
keterangan: server.keterangan,
pemasukan: server.pemasukan,
metode_pembayaran: server.metode_pembayaran,
status: server.status,
nama: server.nama,
id: server.id // Ambil ID server
};
let row = `
<tr>
<td>
${offset + index + 1}
<br>
<button type="button" class="btn collapsed btn-sm m-0 p-0 hide-on-laptop" data-toggle="collapse" data-target="#collapse-row-${offset + index}" aria-expanded="false" onclick="toggleCollapse(this, '${offset + index}')">
<i class="fas fa-plus-circle text-primary"></i>
</button>
</td>
<td>${truncatedData.nama_server}</td>
<td>${truncatedData.start_time}</td>
<td class="hide-on-mobile">${truncatedData.keterangan} ${truncatedData.nama ? `(${truncatedData.nama})` : ''}</td>
<td class="hide-on-mobile">${truncatedData.pemasukan ? 'Rp. ' + Number(truncatedData.pemasukan).toLocaleString() : ''}</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.metode_pembayaran}</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.status}</td>
<td class="hide-on-mobile hide-on-tablet">
${truncatedData.metode_pembayaran !== 'API Payment' ? `
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(${truncatedData.id})">Edit</button>
<button type="button" class="btn btn-danger btn-sm m-1" onclick="deleteAlert(${truncatedData.id})">Hapus</button>
` : ''}
</td>
</tr>
<tr class="collapse hide-on-laptop" id="collapse-row-${offset + index}">
<td colspan="5" class="p-0">
<table class="table table-borderless" width="100%">
<tbody>
<tr class="hide-on-tablet hide-on-laptop">
<th>Keterangan</th>
<td>${truncatedData.keterangan} ${truncatedData.nama ? `(${truncatedData.nama})` : ''}</td>
</tr>
<tr class="hide-on-tablet hide-on-laptop">
<th>Kas Masuk</th>
<td>${truncatedData.pemasukan ? 'Rp. ' + Number(truncatedData.pemasukan).toLocaleString() : ''}</td>
</tr>
<tr class="hide-on-laptop">
<th>Jenis Kas</th>
<td>${truncatedData.metode_pembayaran}</td>
</tr>
<tr class="hide-on-laptop">
<th>Status</th>
<td>${truncatedData.status}</td>
</tr>
<tr class="hide-on-laptop">
<td colspan="2">
${truncatedData.metode_pembayaran !== 'API Payment' ? `
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(${truncatedData.id})">Edit</button>
<button type="button" class="btn btn-danger btn-sm m-1" onclick="deleteAlert(${truncatedData.id})">Hapus</button>
` : ''}
</td>
</tr>
</tbody>
</table>
</td>
</tr>`;
$('#table-body').append(row);
});
offset += data.length; // Update offset
}
$('#loader').hide();
loading = false; // Set loading ke false
},
error: function() {
$('#loader').hide();
loading = false;
alert('Error loading data');
}
});
}
// Fungsi untuk toggle collapse dan mengubah ikon
function toggleCollapse(button, index) {
const $target = $(`#collapse-row-${index}`);
const isCollapsed = $target.hasClass('show');
// Toggle collapse
$target.collapse('toggle');
// Ubah ikon
if (isCollapsed) {
$(button).find('i').removeClass('fa-minus-circle text-danger').addClass('fa-plus-circle text-primary');
} else {
$(button).find('i').removeClass('fa-plus-circle text-primary').addClass('fa-minus-circle text-danger');
}
}
// Fungsi untuk menangani input pencarian
$('#search-input').on('input', function() {
const searchTerm = $(this).val();
offset = 0; // Reset offset saat pencarian
$('#table-body').empty(); // Kosongkan tabel
loadMoreData(searchTerm, $('#start-date').val(), $('#end-date').val()); // Muat data berdasarkan pencarian dan filter
});
// Fungsi untuk menerapkan filter berdasarkan tanggal
$('#apply-filter').on('click', function() {
const startDate = $('#start-date').val();
const endDate = $('#end-date').val();
offset = 0; // Reset offset saat filter diterapkan
$('#table-body').empty(); // Kosongkan tabel
loadMoreData($('#search-input').val(), startDate, endDate); // Muat data berdasarkan filter
});
// Panggil fungsi saat scroll
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) {
loadMoreData($('#search-input').val(), $('#start-date').val(), $('#end-date').val()); // Panggil dengan parameter pencarian dan filter
}
});
// Muat data pertama kali saat halaman dimuat
$(document).ready(function() {
loadMoreData();
});
</script>
</div>
<!-- Edit Modal -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<form id="editForm" method="post">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="editModalLabel">Edit Pemasukan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<input type="hidden" name="edit_id" id="edit_id">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" id="serverSelect" required>
<!-- Opsi akan diisi oleh JavaScript -->
</select>
</div>
<div class="form-group">
<label>Tanggal</label>
<input type="date" class="form-control" name="waktu" id="waktu" required>
</div>
<div class="form-group">
<label>Nominal</label>
<input type="text" class="form-control" name="nominal" id="nominal" required oninput="formatRupiah3(this)">
</div>
<div class="form-group">
<label>Jenis Pemasukan</label>
<select class="form-control" name="status" id="akunSelect" required>
<!-- Opsi akan diisi oleh JavaScript -->
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" id="jenisKas" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" rows="8" name="keterangan" id="keterangan"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-warning">Edit</button>
</div>
</form>
</div>
</div>
</div>
<script>
function openEditModal(id) {
// Fetch data menggunakan AJAX untuk ID yang dipilih
fetch(`list_data/Transaksi.php?id=${id}`)
.then(response => response.json())
.then(data => {
// Isi kolom formulir
document.getElementById('edit_id').value = data.id;
document.getElementById('waktu').value = data.start_time.substr(0, 10);
document.getElementById('nominal').value = formatRupiah3Value3(data.pemasukan); // Format saat mengisi nilai
document.getElementById('keterangan').value = data.keterangan;
// Set pilihan Jenis Kas
document.getElementById('jenisKas').value = data.metode_pembayaran; // Asumsi jenis_kas ada di response
// Ambil daftar server untuk opsi select
fetch(`list_data/dataServer.php?w=<?php echo $SqlDataWH; ?>`)
.then(response => response.json())
.then(servers => {
const serverSelect = document.getElementById('serverSelect');
serverSelect.innerHTML = ''; // Kosongkan opsi yang ada
servers.forEach(server => {
const option = document.createElement('option');
option.value = server.id;
option.textContent = server.nama_server;
if (server.id === data.id_data_server) {
option.selected = true; // Set opsi yang dipilih
}
serverSelect.appendChild(option);
});
});
// Ambil daftar server untuk opsi select
fetch(`list_data/dataAkun.php?w=<?php echo $SqlDataWH; ?>&j=1`)
.then(response => response.json())
.then(servers => {
const serverSelect = document.getElementById('akunSelect');
serverSelect.innerHTML = ''; // Kosongkan opsi yang ada
servers.forEach(akun => {
const option = document.createElement('option');
option.value = akun.nama;
option.textContent = akun.nama;
if (akun.nama === data.status) {
option.selected = true; // Set opsi yang dipilih
}
serverSelect.appendChild(option);
});
});
// Tampilkan modal
$('#editModal').modal('show');
});
}
function formatRupiah3(input) {
// Pastikan input adalah string
let value = input.value.toString().replace(/[^0-9]/g, "");
// Format menjadi Rupiah
if (value) {
input.value = "Rp. " + new Intl.NumberFormat('id-ID').format(value);
} else {
input.value = ""; // Kosongkan input jika tidak ada nilai
}
}
function formatRupiah3Value3(value) {
// Format nilai menjadi string Rupiah
return "Rp. " + new Intl.NumberFormat('id-ID').format(value);
}
function deleteAlert(id) {
const form = document.createElement("form");
form.method = "POST";
const input = document.createElement("input");
input.type = "hidden";
input.name = "hapus" + id;
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
</script>
<?php
// Handle edit and delete actions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['edit_id'])) {
// Process edit
$nominal = preg_replace("/[^0-9]/", "", $_POST['nominal']);
$waktu = $_POST['waktu'].date(' H:i:s');
$stmt = $pdo->prepare("UPDATE transaksi SET
id_data_server = :ids,
keterangan = :keterangan,
start_time = :waktu,
pemasukan = :nominal,
metode_pembayaran = :metode_pembayaran,
status = :status
WHERE id = :id");
$stmt->execute([
':ids' => $_POST['ids'],
':keterangan' => $_POST['keterangan'],
':waktu' => $waktu,
':nominal' => $nominal,
':id' => $_POST['edit_id'],
':metode_pembayaran' => $_POST['metode'],
':status' => $_POST['status']
]);
sweetAlert('Data berhasil diubah', 'success');
}
$stmt = $pdo->prepare("SELECT id FROM v_transaksi WHERE pemasukan != '' $SqlDataId ");
$stmt->execute();
$data1 = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Handle delete
foreach ($data1 as $server1) {
if (isset($_POST['hapus'.$server1['id']])) {
$idtrx = $server1['id'];
// Call your deleteAlert function or method here
deleteAlert("transaksi", $idtrx);
}
}
}
?>
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+529
View File
@@ -0,0 +1,529 @@
<style>
.table-responsive {
overflow-x: hidden;
}
@media (max-width: 767px) { /* Untuk smartphone */
.hide-on-mobile {
display: none;
}
}
@media (min-width: 768px) and (max-width: 1024px) { /* Untuk tablet */
.hide-on-tablet {
display: none;
}
}
@media (min-width: 1024px) { /* Untuk laptop */
.hide-on-laptop {
display: none;
}
}
</style>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Pengeluaran</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Pengeluaran</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="card-body pb-0">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tanggal</label>
<input type="date" class="form-control" name="waktu" required="required">
</div>
<div class="form-group">
<label>Nominal</label>
<input type="text" class="form-control rupiah" id="rupiah0" name="nominal" required="required">
</div>
<div class="form-group">
<label>Jenis Pengeluaran</label>
<select class="form-control" name="status" required="required">
<option value="">Pilih</option>
<?php $akun_pengeluaran = array('Bayar Bandwidth','Pajak','Gaji Karyawan','Barang Habis Pakai','Pembayaran Sewa','Admin Bank','Listrik','Hutang Barang','Hutang Jangka Pendek','Hutang Jangka Panjang','Piutang Usaha','Piutang Karyawan','Piutang Lain-lain');
foreach ($akun_pengeluaran as $key) {
echo '<option value="'.$key.'">'.$key.'</option>';
}
$akuntran = mysqli_query($con,"SELECT * FROM daftar_akun_transaksi WHERE jenis = '2' $SqlDataId");
while ($akun = mysqli_fetch_assoc($akuntran))
{
echo '<option value="'.$akun['nama'].'">'.$akun['nama'].'</option>';
} ?>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" rows="4" name="keterangan"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$nominal = preg_replace("/[^0-9]/","",$_POST['nominal']);
$waktu = $_POST['waktu'].date(' H:i:s');
$input = mysqli_query($con,"INSERT INTO transaksi (id_data_server, id_user_akses, start_time, keterangan, pengeluaran, status, metode_pembayaran) VALUES ('$_POST[ids]', '$UserId', '$waktu','$_POST[keterangan]','$nominal', '$_POST[status]', '$_POST[metode]')");
if ($input)
{
sweetAlert("pengeluaran telah di tambah", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- content -->
<div class="card-body">
<div class="mb-1">
<div class="row">
<div class="col-4">
<div class="dropdown dropright">
<a class="btn btn-warning btn-sm dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-expanded="false">
Filter
</a>
<div class="dropdown-menu" style="width: 250px;">
<div class="m-2">
<form id="filter-form">
<div class="form-group m-1">
<label><small>Dari</small></label>
<input type="date" class="form-control form-control-sm" id="start-date" name="start_date">
</div>
<div class="form-group">
<label><small>Sampai</small></label>
<input type="date" class="form-control form-control-sm" id="end-date" name="end_date">
</div>
<button type="button" class="btn btn-primary btn-sm mt-2" id="apply-filter">Terapkan</button>
</form>
</div>
</div>
</div>
</div>
<div class="col-8">
<input type="text" id="search-input" placeholder="Cari..." class="form-control form-control-sm mb-2" style="width: 200px; float: right;">
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped" id="data-table">
<thead>
<tr>
<th>No</th>
<th>Nama Server</th>
<th>Time</th>
<th class="hide-on-mobile">Keterangan</th>
<th class="hide-on-mobile">Nominal</th>
<th class="hide-on-mobile hide-on-tablet">Jenis Kas</th>
<th class="hide-on-mobile hide-on-tablet">Status</th>
<th class="hide-on-mobile hide-on-tablet">Action</th>
</tr>
</thead>
<tbody id="table-body">
<!-- Data akan dimuat di sini -->
</tbody>
</table>
</div>
<div id="loader" style="display:none;">Loading...</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
let offset = 0; // Offset untuk memuat data
const limit = 25; // Jumlah data per permintaan
let loading = false;
// Fungsi untuk memuat data
function loadMoreData(searchTerm = '', startDate = '', endDate = '', idS = <?php echo "'".$SvId."'"; ?>) {
if (loading) return; // Jangan panggil lagi jika sedang memuat
loading = true;
$('#loader').show();
$.ajax({
url: 'list_data/list_pengeluaran.php',
type: 'GET',
data: { offset: offset, search: searchTerm, start_date: startDate, end_date: endDate, ids: idS }, // Tambahkan parameter pencarian dan filter
success: function(response) {
const result = JSON.parse(response);
const data = result.data;
if (data.length > 0) {
data.forEach((server, index) => {
// Data yang akan ditampilkan
let truncatedData = {
nama_server: server.nama_server,
start_time: server.start_time,
keterangan: server.keterangan,
pengeluaran: server.pengeluaran,
metode_pembayaran: server.metode_pembayaran,
status: server.status,
id: server.id // Ambil ID server
};
let row = `
<tr>
<td>
${offset + index + 1}
<br>
<button type="button" class="btn collapsed btn-sm m-0 p-0 hide-on-laptop" data-toggle="collapse" data-target="#collapse-row-${offset + index}" aria-expanded="false" onclick="toggleCollapse(this, '${offset + index}')">
<i class="fas fa-plus-circle text-primary"></i>
</button>
</td>
<td>${truncatedData.nama_server}</td>
<td>${truncatedData.start_time}</td>
<td class="hide-on-mobile">${truncatedData.keterangan}</td>
<td class="hide-on-mobile">${truncatedData.pengeluaran ? 'Rp. ' + Number(truncatedData.pengeluaran).toLocaleString() : ''}</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.metode_pembayaran}</td>
<td class="hide-on-mobile hide-on-tablet">${truncatedData.status}</td>
<td class="hide-on-mobile hide-on-tablet">
${truncatedData.metode_pembayaran !== 'API Payment' ? `
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(${truncatedData.id})">Edit</button>
<button type="button" class="btn btn-danger btn-sm m-1" onclick="deleteAlert(${truncatedData.id})">Hapus</button>
` : ''}
</td>
</tr>
<tr class="collapse hide-on-laptop" id="collapse-row-${offset + index}">
<td colspan="5" class="p-0">
<table class="table table-borderless" width="100%">
<tbody>
<tr class="hide-on-tablet hide-on-laptop">
<th>Keterangan</th>
<td>${truncatedData.keterangan}</td>
</tr>
<tr class="hide-on-tablet hide-on-laptop">
<th>Kas Masuk</th>
<td>${truncatedData.pengeluaran ? 'Rp. ' + Number(truncatedData.pengeluaran).toLocaleString() : ''}</td>
</tr>
<tr class="hide-on-laptop">
<th>Jenis Kas</th>
<td>${truncatedData.metode_pembayaran}</td>
</tr>
<tr class="hide-on-laptop">
<th>Status</th>
<td>${truncatedData.status}</td>
</tr>
<tr class="hide-on-laptop">
<td colspan="2">
${truncatedData.metode_pembayaran !== 'API Payment' ? `
<button type="button" class="btn btn-secondary btn-sm m-1" onclick="openEditModal(${truncatedData.id})">Edit</button>
<button type="button" class="btn btn-danger btn-sm m-1" onclick="deleteAlert(${truncatedData.id})">Hapus</button>
` : ''}
</td>
</tr>
</tbody>
</table>
</td>
</tr>`;
$('#table-body').append(row);
});
offset += data.length; // Update offset
}
$('#loader').hide();
loading = false; // Set loading ke false
},
error: function() {
$('#loader').hide();
loading = false;
alert('Error loading data');
}
});
}
// Fungsi untuk toggle collapse dan mengubah ikon
function toggleCollapse(button, index) {
const $target = $(`#collapse-row-${index}`);
const isCollapsed = $target.hasClass('show');
// Toggle collapse
$target.collapse('toggle');
// Ubah ikon
if (isCollapsed) {
$(button).find('i').removeClass('fa-minus-circle text-danger').addClass('fa-plus-circle text-primary');
} else {
$(button).find('i').removeClass('fa-plus-circle text-primary').addClass('fa-minus-circle text-danger');
}
}
// Fungsi untuk menangani input pencarian
$('#search-input').on('input', function() {
const searchTerm = $(this).val();
offset = 0; // Reset offset saat pencarian
$('#table-body').empty(); // Kosongkan tabel
loadMoreData(searchTerm, $('#start-date').val(), $('#end-date').val()); // Muat data berdasarkan pencarian dan filter
});
// Fungsi untuk menerapkan filter berdasarkan tanggal
$('#apply-filter').on('click', function() {
const startDate = $('#start-date').val();
const endDate = $('#end-date').val();
offset = 0; // Reset offset saat filter diterapkan
$('#table-body').empty(); // Kosongkan tabel
loadMoreData($('#search-input').val(), startDate, endDate); // Muat data berdasarkan filter
});
// Panggil fungsi saat scroll
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) {
loadMoreData($('#search-input').val(), $('#start-date').val(), $('#end-date').val()); // Panggil dengan parameter pencarian dan filter
}
});
// Muat data pertama kali saat halaman dimuat
$(document).ready(function() {
loadMoreData();
});
</script>
</div>
<!-- Edit Modal -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<form id="editForm" method="post">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="editModalLabel">Edit Pengeluaran</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<input type="hidden" name="edit_id" id="edit_id">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" id="serverSelect" required>
<!-- Opsi akan diisi oleh JavaScript -->
</select>
</div>
<div class="form-group">
<label>Tanggal</label>
<input type="date" class="form-control" name="waktu" id="waktu" required>
</div>
<div class="form-group">
<label>Nominal</label>
<input type="text" class="form-control" name="nominal" id="nominal" required oninput="formatRupiah3(this)">
</div>
<div class="form-group">
<label>Jenis Pengeluaran</label>
<select class="form-control" name="status" id="akunSelect" required>
<!-- Opsi akan diisi oleh JavaScript -->
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" id="jenisKas" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea class="form-control" rows="5" name="keterangan" id="keterangan"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-warning">Edit</button>
</div>
</form>
</div>
</div>
</div>
<script>
function openEditModal(id) {
// Fetch data menggunakan AJAX untuk ID yang dipilih
fetch(`list_data/Transaksi.php?id=${id}`)
.then(response => response.json())
.then(data => {
// Isi kolom formulir
document.getElementById('edit_id').value = data.id;
document.getElementById('waktu').value = data.start_time.substr(0, 10);
document.getElementById('nominal').value = formatRupiah3Value3(data.pengeluaran); // Format saat mengisi nilai
document.getElementById('keterangan').value = data.keterangan;
// Set pilihan Jenis Kas
document.getElementById('jenisKas').value = data.metode_pembayaran; // Asumsi jenis_kas ada di response
// Ambil daftar server untuk opsi select
fetch(`list_data/dataServer.php?w=<?php echo $SqlDataWH; ?>`)
.then(response => response.json())
.then(servers => {
const serverSelect = document.getElementById('serverSelect');
serverSelect.innerHTML = ''; // Kosongkan opsi yang ada
servers.forEach(server => {
const option = document.createElement('option');
option.value = server.id;
option.textContent = server.nama_server;
if (server.id === data.id_data_server) {
option.selected = true; // Set opsi yang dipilih
}
serverSelect.appendChild(option);
});
});
// Ambil daftar server untuk opsi select
fetch(`list_data/dataAkun.php?w=<?php echo $SqlDataWH; ?>&j=2`)
.then(response => response.json())
.then(servers => {
const serverSelect = document.getElementById('akunSelect');
serverSelect.innerHTML = ''; // Kosongkan opsi yang ada
servers.forEach(akun => {
const option = document.createElement('option');
option.value = akun.nama;
option.textContent = akun.nama;
if (akun.nama === data.status) {
option.selected = true; // Set opsi yang dipilih
}
serverSelect.appendChild(option);
});
});
// Tampilkan modal
$('#editModal').modal('show');
});
}
function formatRupiah3(input) {
// Pastikan input adalah string
let value = input.value.toString().replace(/[^0-9]/g, "");
// Format menjadi Rupiah
if (value) {
input.value = "Rp. " + new Intl.NumberFormat('id-ID').format(value);
} else {
input.value = ""; // Kosongkan input jika tidak ada nilai
}
}
function formatRupiah3Value3(value) {
// Format nilai menjadi string Rupiah
return "Rp. " + new Intl.NumberFormat('id-ID').format(value);
}
function deleteAlert(id) {
const form = document.createElement("form");
form.method = "POST";
const input = document.createElement("input");
input.type = "hidden";
input.name = "hapus" + id;
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
</script>
<?php
// Handle edit and delete actions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['edit_id'])) {
// Process edit
$nominal = preg_replace("/[^0-9]/", "", $_POST['nominal']);
$waktu = $_POST['waktu'].date(' H:i:s');
$stmt = $pdo->prepare("UPDATE transaksi SET
id_data_server = :ids,
keterangan = :keterangan,
start_time = :waktu,
pengeluaran = :nominal,
metode_pembayaran = :metode_pembayaran,
status = :status
WHERE id = :id");
$stmt->execute([
':ids' => $_POST['ids'],
':keterangan' => $_POST['keterangan'],
':waktu' => $waktu,
':nominal' => $nominal,
':id' => $_POST['edit_id'],
':metode_pembayaran' => $_POST['metode'],
':status' => $_POST['status']
]);
sweetAlert('Data berhasil diubah', 'success');
}
$stmt = $pdo->prepare("SELECT id FROM v_transaksi WHERE pengeluaran != '' $SqlDataId ");
$stmt->execute();
$data1 = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Handle delete
foreach ($data1 as $server1) {
if (isset($_POST['hapus'.$server1['id']])) {
$idtrx = $server1['id'];
// Call your deleteAlert function or method here
deleteAlert("transaksi", $idtrx);
}
}
}
?>
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+169
View File
@@ -0,0 +1,169 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Pesan Siaran</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>Data Server</label>
<div class="select2-primary">
<select class="select2" name="ids[]" multiple="multiple" data-placeholder="Select a State" data-dropdown-css-class="select2-primary" style="width: 100%;" required>
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="form-group">
<label>Status Pelanggan</label>
<select id="sp" class="form-control" name="sp">
<option value="">All</option>
<option value="aktif">Aktif</option>
<option value="tidak aktif" >Tidak Aktif</option>
</select>
</div>
<div class="form-group">
<label>Status Koneksi</label>
<select id="sk" class="form-control" name="sk">
<option value="">All</option>
<option value="On">Connected</option>
<option value="Off" >Disconnected</option>
</select>
</div>
<div class="form-group">
<label>Topologi ODP / ODC</label>
<select class="form-control select2bs4" name="mt">
<option value="">All</option>
<?php
$List = new Listdata();
$List->set_list("master_topologi", $SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Isi Pesan Siaran</label>
<textarea class="form-control" rows="11" name="pesan" required="required"></textarea>
</div>
</div>
<div class="col-md-4">
<center>
<label>Foto</label>
<div class="uploadImage" data-id="siaran<?php echo $SvId; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary" name="kirim">Kirim Pesan</button>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['kirim'])) {
$idsv = implode(", ", $_POST['ids']);
$sp = $_POST['sp'];
$sk = $_POST['sk'];
$mt = $_POST['mt'];
$sp1 = !empty($sp) ? " AND status = :sp" : "";
$sk1 = !empty($sk) ? " AND status_koneksi = :sk" : "";
$mt1 = !empty($mt) ? " AND id_master_topologi = :mt" : "";
$target_dir = "https://bilspro.com/img/user/";
$SQL = "WHERE id_data_server IN ($idsv)" . $sp1 . $sk1 . $mt1;
try {
$stmt = $pdo->prepare("SELECT nomor_whatsapp, id_data_server FROM pelanggan $SQL");
if (!empty($sp)) $stmt->bindParam(':sp', $sp);
if (!empty($sk)) $stmt->bindParam(':sk', $sk);
if (!empty($mt)) $stmt->bindParam(':mt', $mt);
$stmt->execute();
while ($pecah = $stmt->fetch(PDO::FETCH_ASSOC)) {
$stmt2 = $pdo->prepare("SELECT url_whatsapp_gateway, apiKey_whatsapp FROM data_server WHERE id = :id_data_server");
$stmt2->bindParam(':id_data_server', $pecah['id_data_server']);
$stmt2->execute();
$pecah2 = $stmt2->fetch(PDO::FETCH_ASSOC);
if (isset($_SESSION['uploaded_files']['siaran'.$SvId])) {
$id = $pecah['id_data_server'];
$jenis = "sendMediaFromUrl";
$nomor = $pecah['nomor_whatsapp'];
$message = $_POST['pesan'];
$file_url = $target_dir . $_SESSION['uploaded_files']['siaran'.$SvId];
$apiurl = $pecah2['url_whatsapp_gateway'];
$apikey = $pecah2['apiKey_whatsapp'];
$sqlIn = "INSERT INTO master_pesan (id_data_server, jenis_pesan, api_url, api_key, nomor, pesan, url_file, status)
VALUES (:id, :jenis, :apiurl, :apikey, :nomor, :pesan, :url_file, 'PENDING')";
} else {
$id = $pecah['id_data_server'];
$jenis = "sendMessage";
$nomor = $pecah['nomor_whatsapp'];
$message = $_POST['pesan'];
$apiurl = $pecah2['url_whatsapp_gateway'];
$apikey = $pecah2['apiKey_whatsapp'];
$sqlIn = "INSERT INTO master_pesan (id_data_server, jenis_pesan, api_url, api_key, nomor, pesan, status)
VALUES (:id, :jenis, :apiurl, :apikey, :nomor, :pesan, 'PENDING')";
}
$stmtInsert = $pdo->prepare($sqlIn);
$stmtInsert->bindParam(':id', $id);
$stmtInsert->bindParam(':jenis', $jenis);
$stmtInsert->bindParam(':apiurl', $apiurl);
$stmtInsert->bindParam(':apikey', $apikey);
$stmtInsert->bindParam(':nomor', $nomor);
$stmtInsert->bindParam(':pesan', $message);
if (isset($file_url)) {
$stmtInsert->bindParam(':url_file', $file_url);
}
$stmtInsert->execute();
}
sweetAlert("Pesan Akan Segera di Kirim", "success");
unset($_SESSION['uploaded_files']['siaran'.$SvId]);
} catch (PDOException $e) {
// Handle exception, e.g., log the error
sweetAlert("Error: " . $e->getMessage(), "success");
// echo "Error: " . $e->getMessage();
}
}
?>
+358
View File
@@ -0,0 +1,358 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Profile Paket</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Profile Paket</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="card-body">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required>
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Jenis Profile</label>
<select class="form-control" name="jenis" data-select="jenis-select1" required>
<option value="">Pilih</option>
<option value="PPPOE">PPPOE</option>
<option value="Hotspot">Hotspot</option>
</select>
</div>
<div class="form-group">
<label>Nama Profile Di Mikrotik</label>
<input type="text" class="form-control" name="profile" required>
<i class="text-danger"><small>Nama Profile Harus sama dengan yang ada di Mikrotik</small></i>
</div>
<div class="form-group" id="group-jenis1">
<label>Jenis Hotspot</label>
<select class="form-control" name="jenishs" id="jenis-select2" data-select="jenis-select2">
<option value="">Pilih</option>
<option value="1">Sekali Pakai</option>
<option value="0">Berulangkali</option>
</select>
<i class="text-danger"><small>Pilih <b>Berulangkali</b> jika user hotspot di tagihan setiap bulan</small></i>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card-body">
<div class="form-group">
<label>Nama Paket</label>
<input type="text" class="form-control" name="nama" required>
</div>
<div class="form-group">
<label>Harga Paket</label>
<input type="text" class="form-control rupiah" name="harga" required>
</div>
<div class="form-group" id="group-jenis3">
<label>Fee Agen Voucher</label>
<input type="text" class="form-control rupiah" name="fee" id="fee">
<i class="text-danger">Isi jika menggunakan Aplikasi Agen Voucher</i>
</div>
<div class="form-group" id="group-jenis2">
<label>Durasi</label>
<input type="text" class="form-control" name="durasi" placeholder="6H" id="durasi">
<i class="text-danger">Contoh : 3H => 3 Jam , 1D => 1 Hari </i>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
try {
// Ambil dan sanitasi data dari form
$status = ($_POST['jenishs'] == 1) ? 1 : NULL;
$nominal = preg_replace("/[^0-9]/", "", $_POST['harga']);
$cekfee = preg_replace("/[^0-9]/", "", $_POST['fee']);
$fee = (!empty($cekfee)) ? $cekfee : NULL;
// Ambil server dari database
$stmt = $pdo->prepare("SELECT * FROM setting_mikrotik WHERE id_data_server = :id_data_server");
$stmt->execute([':id_data_server' => $_POST['ids']]);
$servers = $stmt->fetchAll(PDO::FETCH_ASSOC);
$messages = []; // Array untuk menyimpan pesan
foreach ($servers as $server) {
$mikrotikName = $server['nama'];
$API = new RouterosAPI();
$API->debug = false;
// Koneksi ke MikroTik
if ($API->connect2($server['ip_address'], $server['username'], $server['password'], $server['port_api'])) {
$profileName = $_POST['profile'];
if ($_POST['jenis'] == 'PPPOE') {
// Cek profil PPPOE
$profiles = $API->comm('/ppp/profile/print');
$found = false;
foreach ($profiles as $profile) {
if ($profile['name'] === $profileName) {
$found = true;
break;
}
}
if (!$found) {
$messages[] = "Profil PPPOE <b>$profileName</b> di <b>$mikrotikName</b> tidak ada.";
}
} else {
// Cek profil Hotspot
$profiles = $API->comm('/ip/hotspot/user/profile/print');
$found = false;
$profileId = null;
foreach ($profiles as $profile) {
if ($profile['name'] === $profileName) {
$profileId = $profile['.id'];
$found = true;
break;
}
}
if ($found) {
// Jika status sama dengan 1
if ($status == 1 ) {
// Pastikan intervalFormat() sudah terdefinisi
$interval = intervalFormat($_POST['durasi']);
// Skrip On Login yang akan dipasang
$onLoginScript = ':local nama $user; :local tanggal [/system clock get date]; :local waktu [/system clock get time]; :if ([/ip hotspot user get [find name=$nama] comment] = "") do={/ip hotspot user set [find name=$nama] comment="Login.$tanggal $waktu"; :log warning ("User " . $nama . " berhasil login.")} else={:log warning ("User " . $nama . " berhasil melakukan login ulang.")}; :if ([/system schedule find name=$nama] = "") do={/system schedule add name=$nama interval='.$interval.' on-event="/ip hotspot active remove [find user=$nama]; /ip hotspot user remove [find name=$nama]; /system schedule remove [find name=$nama]" start-date=$tanggal start-time=$waktu;}';
// Update skrip On Login
$API->comm('/ip/hotspot/user/profile/set', [
'.id' => $profileId,
'on-login' => $onLoginScript,
]);
}
// else {
// $messages[] = "Gagal Upload Script: Profil Hotspot <b>$profileName</b> di <b>$mikrotikName</b> tidak aktif atau status tidak sesuai.";
// }
} else {
$messages[] = "Profil Hotspot <b>$profileName</b> di <b>$mikrotikName</b> tidak ditemukan.";
}
}
} else {
$messages[] = "Gagal terhubung ke MikroTik <b>$mikrotikName</b>.";
}
}
// Cek pesan sebelum menyimpan ke database
if (empty($messages)) {
$stmt = $pdo->prepare("INSERT INTO profile_paket
(id_data_server, jenis_profile, nama_profile, durasi, nama, harga_paket, vi_agen, status)
VALUES (:id_data_server, :jenis_profile, :nama_profile, :durasi, :nama, :harga_paket, :vi_agen, :status)");
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':jenis_profile', $_POST['jenis']);
$stmt->bindParam(':nama_profile', $_POST['profile']);
$stmt->bindParam(':durasi', $_POST['durasi']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':harga_paket', $nominal);
$stmt->bindParam(':vi_agen', $fee);
$stmt->bindParam(':status', $status);
$stmt->execute();
sweetAlert("Profile Paket Telah ditambahkan", "success");
} else {
// Menampilkan pesan error jika ada
$message = implode("<br>", $messages);
detailAlert($message, strpos($message, 'tidak ada') !== false || strpos($message, 'Gagal') !== false);
}
} catch (PDOException $e) {
// Menangani kesalahan dalam koneksi database atau query
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
} catch (Exception $e) {
// Menangani kesalahan umum
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>Nama Server</th>
<th>Jenis Profile</th>
<th>Nama Profile Mikrotik</th>
<th>Nama Paket</th>
<th>Harga Paket</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$apaket = mysqli_query($con,"SELECT * FROM profile_paket $SqlDataWHId ORDER BY nama ASC");
while ($paket = mysqli_fetch_assoc($apaket))
{
?>
<tr>
<td>
<?php
$asv = mysqli_query($con,"SELECT nama_server FROM data_server WHERE id = '$paket[id_data_server]'");
$sv = mysqli_fetch_assoc($asv);
echo $sv['nama_server'];
?>
</td>
<td><?php echo $paket['jenis_profile']; ?></td>
<td><?php echo $paket['nama_profile']; ?></td>
<td><?php echo $paket['nama']; ?></td>
<td><?php echo "Rp. ".number_format($paket['harga_paket']);
if ($paket['vi_agen'] != NULL ) {
echo '<br><i class="text-danger">Fee Agen Rp. '.number_format($paket['vi_agen']).'</i>';
} ?>
</td>
<td><?php if($paket['status'] == 1 ){ echo "Sekali Pakai";} ?></td>
<td>
<form method="post" enctype="multipart/form-data">
<a href="?<?php echo encrypt_url('profile_paket_edit|'.$paket['id']);?>" class="btn btn-secondary btn-sm">Edit
</a>
<input type="submit" name="hapus<?php echo $paket['id'];?>" class="btn btn-danger btn-sm m-1" value="Hapus">
</form>
</td>
</tr>
<?php
if (isset($_POST['hapus'.$paket['id']]))
{
$iddata = $paket['id'];
deleteAlert("profile_paket", $iddata);
}
}
?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<script>
// Ambil semua elemen dropdown dalam modal
const jenisSelects = document.querySelectorAll('[data-select]');
// Sembunyikan semua grup pada awalnya
document.querySelectorAll('[id^="group-"]').forEach(group => {
group.style.display = 'none';
});
// Fungsi untuk mengupdate tampilan grup
function updateGroupVisibility() {
const jenisSelect = document.querySelector('select[name="jenis"]');
const jenishsSelect = document.querySelector('select[name="jenishs"]');
const group1 = document.getElementById('group-jenis1');
const group2 = document.getElementById('group-jenis2');
const group3 = document.getElementById('group-jenis3');
const select2 = document.getElementById('jenis-select2');
const fee = document.getElementById('fee');
const durasi = document.getElementById('durasi');
// Reset nilai input grup
function resetGroup(group) {
const input = group.querySelector('select, input');
if (input) {
input.value = '';
}
group.style.display = 'none';
}
// Tampilkan grup berdasarkan pilihan di dropdown
if (jenisSelect.value === "Hotspot") {
group1.style.display = 'block';
group1.querySelector('select').required = true;
} else {
resetGroup(group1);
}
if (jenishsSelect) {
if (jenishsSelect.value === "1") {
group2.style.display = 'block';
group3.style.display = 'block';
jenishsSelect.required = true;
fee.required = true;
durasi.required = true;
} else {
resetGroup(group2);
resetGroup(group3);
jenishsSelect.required = false;
fee.required = false;
durasi.required = false;
}
}
}
// Cek apakah select sudah ada isinya dan update tampilan
function initializeGroupVisibility() {
const jenisSelect = document.querySelector('select[name="jenis"]');
const jenishsSelect = document.querySelector('select[name="jenishs"]');
if (jenisSelect.value) {
updateGroupVisibility();
}
if (jenishsSelect && jenishsSelect.value) {
updateGroupVisibility();
}
}
// Tambahkan event listener untuk setiap dropdown
jenisSelects.forEach(select => {
select.addEventListener('change', updateGroupVisibility);
});
// Inisialisasi tampilan grup pada load
initializeGroupVisibility();
</script>
+273
View File
@@ -0,0 +1,273 @@
<?php
$apaket = mysqli_query($con,"SELECT * FROM profile_paket WHERE id = '$page[1]'");
$paket = mysqli_fetch_assoc($apaket);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Profile Paket</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<form method="post">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="card-body">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($paket['id_data_server'] == $value['id']) { echo "selected";} ?>><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Jenis Profile</label>
<select class="form-control" name="jenis" data-select="jenis-select1" required>
<option value="">Pilih</option>
<option value="PPPOE" <?php if($paket['jenis_profile'] == 'PPPOE') { echo "selected";} ?>>PPPOE</option>
<option value="Hotspot" <?php if($paket['jenis_profile'] == 'Hotspot') { echo "selected";} ?>>Hotspot</option>
</select>
</div>
<div class="form-group">
<label>Nama Profile Di Mikrotik</label>
<input type="text" class="form-control" value="<?php echo $paket['nama_profile']; ?>" name="profile" required>
</div>
<i class="text-danger"><small>Nama Profile Harus sama dengan yang ada di Mikrotik</small></i>
<div class="form-group" id="group-jenis1">
<label>Jenis Hotspot</label>
<select class="form-control" name="jenishs" id="jenis-select2" data-select="jenis-select2">
<option value="">Pilih</option>
<option value="1" <?php if($paket['status'] == '1') { echo "selected";} ?>>Sekali Pakai</option>
<option value="0" <?php if($paket['status'] == NULL) { echo "selected";} ?>>Berulangkali</option>
</select>
<i class="text-danger"><small>Pilih <b>Berulangkali</b> jika user hotspot di tagihan setiap bulan</small></i>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card-body">
<div class="form-group">
<label>Nama Paket</label>
<input type="text" class="form-control" value="<?php echo $paket['nama']; ?>" name="nama">
</div>
<div class="form-group">
<label>Harga Paket</label>
<input type="text" class="form-control rupiah" id="rupiah0" value="<?php echo $paket['harga_paket']; ?>" name="harga">
</div>
<div class="form-group" id="group-jenis3">
<label>Fee Agen Voucher</label>
<input type="text" class="form-control rupiah" id="rupiah0" value="<?php echo $paket['vi_agen']; ?>" name="fee" id="fee">
<i class="text-danger">Isi jika menggunakan Aplikasi Agen Voucher</i>
</div>
<div class="form-group" id="group-jenis2">
<label>Durasi</label>
<input type="text" class="form-control" name="durasi" value="<?php echo $paket['durasi']; ?>" placeholder="6H" id="durasi">
<i class="text-danger">Contoh : 3H => 3 Jam , 1D => 1 Hari </i>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="submit" class="btn btn-sm btn-secondary m-1" name="edit" value="Simpan Perubahan">
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['edit'])) {
try {
// Ambil dan sanitasi data dari form
$status = ($_POST['jenishs'] == 1) ? 1 : NULL;
$nominal = preg_replace("/[^0-9]/", "", $_POST['harga']);
$cekfee = preg_replace("/[^0-9]/", "", $_POST['fee']);
$fee = (!empty($cekfee)) ? $cekfee : NULL;
// Ambil server dari database
$stmt = $pdo->prepare("SELECT * FROM setting_mikrotik WHERE id_data_server = :id_data_server");
$stmt->execute([':id_data_server' => $_POST['ids']]);
$servers = $stmt->fetchAll(PDO::FETCH_ASSOC);
$messages = []; // Array untuk menyimpan pesan
foreach ($servers as $server) {
$mikrotikName = $server['nama'];
$API = new RouterosAPI();
$API->debug = false;
// Koneksi ke MikroTik
if ($API->connect2($server['ip_address'], $server['username'], $server['password'], $server['port_api'])) {
$profileName = $_POST['profile'];
if ($_POST['jenis'] == 'PPPOE') {
// Cek profil PPPOE
$profiles = $API->comm('/ppp/profile/print');
$found = false;
foreach ($profiles as $profile) {
if ($profile['name'] === $profileName) {
$found = true;
break;
}
}
if (!$found) {
$messages[] = "Profil PPPOE <b>$profileName</b> di <b>$mikrotikName</b> tidak ada.";
}
} else {
// Cek profil Hotspot
$profiles = $API->comm('/ip/hotspot/user/profile/print');
$found = false;
foreach ($profiles as $profile) {
if ($profile['name'] === $profileName) {
$profileId = $profile['.id'];
$found = true;
break;
}
}
if ($found) {
// Jika status sama dengan 1
if ($status == 1) {
// Pastikan intervalFormat() sudah terdefinisi
$interval = intervalFormat($_POST['durasi']);
// Skrip On Login yang akan dipasang
$onLoginScript = ':local nama $user; :local tanggal [/system clock get date]; :local waktu [/system clock get time]; :if ([/ip hotspot user get [find name=$nama] comment] = "") do={/ip hotspot user set [find name=$nama] comment="Login.$tanggal $waktu"; :log warning ("User " . $nama . " berhasil login.")} else={:log warning ("User " . $nama . " berhasil melakukan login ulang.")}; :if ([/system schedule find name=$nama] = "") do={/system schedule add name=$nama interval='.$interval.' on-event="/ip hotspot active remove [find user=$nama]; /ip hotspot user remove [find name=$nama]; /system schedule remove [find name=$nama]" start-date=$tanggal start-time=$waktu;}';
// Update skrip On Login
$API->comm('/ip/hotspot/user/profile/set', [
'.id' => $profileId,
'on-login' => $onLoginScript,
]);
} else {
$messages[] = "Gagal Upload Script: Profil Hotspot <b>$profileName</b> di <b>$mikrotikName</b> tidak aktif atau status tidak sesuai.";
}
} else {
$messages[] = "Profil Hotspot <b>$profileName</b> di <b>$mikrotikName</b> tidak ada.";
}
}
} else {
$messages[] = "Gagal terhubung ke MikroTik <b>$mikrotikName</b>.";
}
}
// Cek pesan sebelum menyimpan ke database
if (empty($messages)) {
$stmt = $pdo->prepare("UPDATE profile_paket SET
id_data_server = :id_data_server,
jenis_profile = :jenis_profile,
nama_profile = :nama_profile,
durasi = :durasi,
nama = :nama,
harga_paket = :harga_paket,
vi_agen = :vi_agen,
status = :status
WHERE id = :id");
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':jenis_profile', $_POST['jenis']);
$stmt->bindParam(':nama_profile', $_POST['profile']);
$stmt->bindParam(':durasi', $_POST['durasi']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':harga_paket', $nominal);
$stmt->bindParam(':vi_agen', $fee);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':id', $page[1]);
$stmt->execute();
sweetAlert("Profile Paket Telah di Ubah", "success", "?".encrypt_url('profile_paket'));
} else {
$message = implode("<br>", $messages);
detailAlert($message, strpos($message, 'tidak ada') !== false || strpos($message, 'Gagal') !== false);
}
} catch (PDOException $e) {
// Menangani kesalahan
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
?>
<script>
const jenisSelects = document.querySelectorAll('[data-select]');
// Sembunyikan semua grup pada awalnya
document.querySelectorAll('[id^="group-"]').forEach(group => {
group.style.display = 'none';
});
// Fungsi untuk mengupdate tampilan grup
function updateGroupVisibility() {
const jenisSelect = document.querySelector('select[name="jenis"]');
const jenishsSelect = document.querySelector('select[name="jenishs"]');
const group1 = document.getElementById('group-jenis1');
const group2 = document.getElementById('group-jenis2');
const group3 = document.getElementById('group-jenis3');
const select2 = document.getElementById('jenis-select2');
const fee = document.getElementById('fee');
const durasi = document.getElementById('durasi');
// Reset nilai input grup
function resetGroup(group) {
const input = group.querySelector('select, input');
if (input) {
input.value = '';
}
group.style.display = 'none';
}
// Tampilkan grup berdasarkan pilihan di dropdown
if (jenisSelect.value === "Hotspot") {
group1.style.display = 'block';
group1.querySelector('select').required = true;
} else {
resetGroup(group1);
}
if (jenishsSelect) {
if (jenishsSelect.value === "1") {
group2.style.display = 'block';
group3.style.display = 'block';
jenishsSelect.required = true;
fee.required = true;
durasi.required = true;
} else {
resetGroup(group2);
resetGroup(group3);
jenishsSelect.required = false;
fee.required = false;
durasi.required = false;
}
}
}
// Tambahkan event listener untuk setiap dropdown
jenisSelects.forEach(select => {
select.addEventListener('change', updateGroupVisibility);
});
// Memanggil fungsi untuk memperbarui tampilan berdasarkan nilai yang sudah ada
jenisSelects.forEach(select => {
if (select.value) {
updateGroupVisibility({ target: select });
}
});
</script>
+342
View File
@@ -0,0 +1,342 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Profile Tagihan</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Profile Tagihan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="card-body pb-0">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids" required="required">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Nama Profile Tagihan</label>
<input type="text" class="form-control" name="nama" required="required">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Tanggal Kirim Tagihan</label>
<input type="text" class="form-control" name="kirim" required="required">
<i class="text-danger">Isi tanggal pengiriman tagihan setiap bulan nya</i>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Konpensasi Tagihan</label>
<input type="text" class="form-control" name="konpensasi" required="required">
<i class="text-danger">Isi nilai persentase potongan tagihan perhari '3.333'</i>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Tanggal Isolir</label>
<input type="text" class="form-control" name="isolir" required="required">
<i class="text-danger">Isi tanggal saat isolir pelanggan</i>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Tanggal Buat Tagihan</label>
<input type="text" class="form-control" name="buat" required="required">
<i class="text-danger">Isi angka jumlah hari sebelum kirim tagihan</i>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>PPN Tagihan</label>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios1" value="1" checked>
<label class="form-check-label" for="exampleRadios1">
Harga Paket Tanpa PPN <?= $ppnnow.'%' ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios2" value="2">
<label class="form-check-label" for="exampleRadios2">
Harga Paket Ditambah PPN <?= $ppnnow.'%' ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios3" value="3">
<label class="form-check-label" for="exampleRadios3">
Harga Paket Termasuk PPN <?= $ppnnow.'%' ?>
</label>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" value="1" name="peringatan" checked>
<label>Kirim Pesan Peringatan</label><br>
<i class="text-danger">Mengirim pesan peringatan 1 hari sebelum isolir pelanggan</i>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
if($_POST['peringatan'] == 1) {
$peringatan = $_POST['isolir'] - 1 ;
} else {
$peringatan = '' ;
}
$SQLIN = "INSERT INTO profile_tagihan (id_data_server, nama, kirim_tagihan, buat_tagihan, limit_tagihan, konpensasi, ppn, peringatan_tagihan) VALUES ('$_POST[ids]', '$_POST[nama]', '$_POST[kirim]', '$_POST[buat]', '$_POST[isolir]','$_POST[konpensasi]', '$_POST[ppn]', '$peringatan')";
$input = mysqli_query($con,$SQLIN);
if ($input)
{
sweetAlert("Data telah di tambah", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<?php if($SvId == 1) { ?>
<th>Nama Server</th> <?php } ?>
<th>Nama Profile</th>
<th>PPN</th>
<th>Tanggal Kirim Tagihan</th>
<th>Tanggal Isoril</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM profile_tagihan $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
if($server['ppn'] == 1 ) { $ppnw = 'Harga Paket Tanpa PPN '.$ppnnow.'%'; } elseif($server['ppn'] == 2 ) { $ppnw = 'Harga Paket Ditambah PPN '.$ppnnow.'%'; } elseif($server['ppn'] == 3 ) { $ppnw = 'Harga Paket Termasuk PPN '.$ppnnow.'%'; } elseif($server['ppn'] == 4 ) { $ppnw = 'Harga Paket Ditambah PPN '.$ppnnow.'% dan Subsidi 3 angka terakhir'; }
?>
<tr>
<?php if($SvId == 1) { ?>
<td>
<?php
$datasv = explode("|", $server['id_data_server']);
foreach ($datasv as $isidata)
{
$asv = mysqli_query($con,"SELECT nama_server FROM data_server WHERE id = '$isidata'");
$sv = mysqli_fetch_assoc($asv);
echo $sv['nama_server'];
}
?>
</td>
<?php } ?>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $ppnw; ?></td>
<td><?php echo 'tanggal '.$server['kirim_tagihan']; ?></td>
<td><?php echo 'tanggal '.$server['limit_tagihan']; ?></td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Detail / Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Profile Tagihan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="card-body pb-0">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $server['id_data_server']) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Nama Profile Tagihan</label>
<input type="text" class="form-control" value="<?php echo $server['nama']; ?>" name="nama" required="required">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Tanggal Kirim Tagihan</label>
<input type="text" class="form-control" value="<?php echo $server['kirim_tagihan']; ?>" name="kirim" required="required">
<i class="text-danger">Isi tanggal pengiriman tagihan setiap bulan nya</i>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Konpensasi Tagihan</label>
<input type="text" class="form-control" value="<?php echo $server['konpensasi']; ?>" name="konpensasi" required="required">
<i class="text-danger">Isi nilai persentase potongan tagihan perhari '3.333'</i>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Tanggal Isolir</label>
<input type="text" class="form-control" value="<?php echo $server['limit_tagihan']; ?>" name="isolir" required="required">
<i class="text-danger">Isi tanggal saat isolir pelanggan</i>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Tanggal Buat Tagihan</label>
<input type="text" class="form-control" value="<?php echo $server['buat_tagihan']; ?>" name="buat" required="required">
<i class="text-danger">Isi angka jumlah hari sebelum kirim tagihan</i>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>PPN Tagihan</label>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios1" value="1" <?php echo ($server['ppn'] == 1 ) ? 'checked' : ''; ?>>
<label class="form-check-label" for="exampleRadios1">
Harga Paket Tanpa PPN <?= $ppnnow.'%' ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios2" value="2" <?php echo ($server['ppn'] == 2 ) ? 'checked' : ''; ?>>
<label class="form-check-label" for="exampleRadios2">
Harga Paket Ditambah PPN <?= $ppnnow.'%' ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios3" value="3" <?php echo ($server['ppn'] == 3 ) ? 'checked' : ''; ?>>
<label class="form-check-label" for="exampleRadios3">
Harga Paket Termasuk PPN <?= $ppnnow.'%' ?>
</label>
</div>
<?php if($server['ppn'] == 4) { ?>
<div class="form-check">
<input class="form-check-input" type="radio" name="ppn" id="exampleRadios4" value="4" <?php echo ($server['ppn'] == 4 ) ? 'checked' : ''; ?>>
<label class="form-check-label" for="exampleRadios4">
Harga Ditambah PPN <?= $ppnnow.'%' ?> dan Subsidi 3 angka terakhir
</label>
</div>
<?php } ?>
</div>
</div>
<div class="col-sm-6">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" value="1" name="peringatan" <?php if($server['peringatan_tagihan'] != '0'){ echo "checked";} ?>>
<label>Kirim Pesan Peringatan</label><br>
<i class="text-danger">Mengirim pesan peringatan 1 hari sebelum isolir pelanggan</i>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id']; ?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
if($_POST['peringatan'] == 1) {
$peringatan = $_POST['isolir'] - 1 ;
} else {
$peringatan = '' ;
}
$SQLUP = "UPDATE profile_tagihan SET id_data_server='$_POST[ids]', nama='$_POST[nama]', kirim_tagihan='$_POST[kirim]', buat_tagihan='$_POST[buat]', peringatan_tagihan='$peringatan', limit_tagihan='$_POST[isolir]', konpensasi='$_POST[konpensasi]', ppn='$_POST[ppn]' WHERE id = '$server[id]'";
$update = mysqli_query($con,$SQLUP);
if ($update)
{
sweetAlert("Data telah di ubah", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("profile_tagihan",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
<section class="content">
<div class="container-fluid">
<div class="card">
<div class="card-header">
<h4 class="text-center">Script ON LOGIN Hotspot Yang Sekali Pakai</h4>
</div>
<div class="row">
<div class="col-md-6">
<div class="card-body">
<?php echo '
:local nama $user;
:local tanggal [/system clock get date];
:local waktu [/system clock get time];
:if ([/ip hotspot user get [find name=$nama] comment] = "") do={
/ip hotspot user set [find name=$nama] comment="Login.$tanggal $waktu";
:log warning ("User " . $nama . " berhasil login.");
} else={
:log warning ("User " . $nama . " berhasil melakukan login ulang.");
}
:if ([/system schedule find name=$nama] = "") do={
/system schedule add name=$nama interval=ISI DENGAN INTERVAL on-event="/ip hotspot active remove [find user=$nama]; /ip hotspot user remove [find name=$nama]; /system schedule remove [find name=$nama]" start-date=$tanggal start-time=$waktu;
}'; ?>
</div>
</div>
<div class="col-md-6">
<div class="card-body">
<h5 class="text-danger"><u>PERHATIAN..!</u></h5>
<ul class="text-danger">
<li>Sebelum di paste ke On Login silakan modif dulu "ISI DURASI VOUCHER" sesuai dengan interval Voucher nya</li>
<li>Jika ingin memodifikasi script silahkan sesuaikan dengan fungsi yang anda mau.</li>
<li>Jika menambahankan Telegram atau yang lainnya silahkan sesuaikan.</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
+403
View File
@@ -0,0 +1,403 @@
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Setting Mikrotik</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
<button id="syncBtn" class="btn btn-secondary btn-sm">Sync Data</button>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah Mikrotik Router</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Mikrotik</label>
<input type="text" class="form-control" name="nmk" required="required">
</div>
<div class="form-group">
<label>IP Address</label>
<input type="text" class="form-control" name="ipa" required="required">
</div>
<div class="form-group">
<label>Port API Mikrotik</label>
<input type="text" class="form-control" name="pam" required="required">
</div>
<div class="form-group">
<label>Port Remote Modem</label>
<input type="text" class="form-control" name="prm" required="required">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" name="usm" required="required">
</div>
<div class="form-group">
<label>Password</label>
<input type="text" class="form-control" name="psw" required="required">
</div>
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Profile PPPOE Remote</label>
<input type="text" class="form-control" name="profile_remote" placeholder="Isi jika di perlukan">
<i class="text-danger">Khusus yang memiliki pelanggan hotspot bulanan, jika modem/router ingin bisa di remote oleh aplikasi menggunakan koneksi PPPOE</i>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
$user_remote = 'Test';
$last_remote = date('Y-m-d H:i:s');
try {
// Misalkan $pdo adalah koneksi PDO yang sudah dibuat sebelumnya
$stmt = $pdo->prepare("INSERT INTO setting_mikrotik
(id_data_server, nama, ip_address, port_api, port_remote, username, password, profile_remote, user_remote, last_remote)
VALUES (:id_data_server, :nama, :ip_address, :port_api, :port_remote, :username, :password, :profile_remote, :user_remote, :last_remote)");
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':nama', $_POST['nmk']);
$stmt->bindParam(':ip_address', $_POST['ipa']);
$stmt->bindParam(':port_api', $_POST['pam']);
$stmt->bindParam(':port_remote', $_POST['prm']);
$stmt->bindParam(':username', $_POST['usm']);
$stmt->bindParam(':password', $_POST['psw']);
$stmt->bindParam(':profile_remote', $_POST['profile_remote']);
$stmt->bindParam(':user_remote', $user_remote);
$stmt->bindParam(':last_remote', $last_remote);
if ($stmt->execute()) {
sweetAlert("Data telah ditambah", "success");
}
} catch (PDOException $e) {
// Menangani kesalahan dan menampilkan dengan sweetAlert
sweetAlert("Error: " . $e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Nama Mikrotik</th>
<th>Ip Address</th>
<th>Port API</th>
<th>Board</th>
<th>Uptime</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$stmt = $pdo->prepare("SELECT * FROM setting_mikrotik $SqlDataWHId");
$stmt->execute();
$servers = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($servers as $server) {
$s_time = strtotime($server['last_time']);
$b_time = strtotime(date('Y-m-d H:i:s')) - 60;
?>
<tr>
<td><?php echo $server['nama'];
if ($s_time >= $b_time) { ?>
<span class="badge badge-success">Connected</span>
<?php } else { ?>
<span class="badge badge-danger">Disconnected</span>
<?php } ?>
</td>
<td><?php echo $server['ip_address']; ?></td>
<td><?php echo $server['port_api']; ?></td>
<td><?php echo $server['board_name']; ?></td>
<td><?php echo $server['uptime']; ?></td>
<td>
<form class="form-inline" method="post" enctype="multipart/form-data">
<div class="row">
<input type="submit" name="test<?php echo $server['id']; ?>" class="btn btn-primary btn-sm" value="Test">
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit
</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
</div>
</form>
<?php
if (isset($_POST['test'.$server['id']]))
{
$script = ':global hsa "";:global pppa "";:local id [/system license get software-id];:local idbm ($id."'.$server['id'].'");:local uptim [/system resource get uptime];:local bname [/system resource get board-name];:foreach i in=[/ppp active find] do={:local name [/ppp active get $i name];:local ip [/ppp active get $i address];:set $pppa ("$pppa$name_$ip|");};:foreach h in=[/ip hotspot user find comment!="" and uptime<20m] do={:local cek [:pick [/ip hotspot user get $h comment] 0 6];:if ($cek = "Login.") do={:local hsuser [/ip hotspot user get $h name];:local hscom [:pick [/ip hotspot user get $h comment] 6 50];:set $hsa ("$hsa$hsuser_$hscom|");}};/tool fetch url="https://manjapro.net/api/mikrotik.php" mode=https http-method=post http-data="{\"id\":\"$idbm\",\"bm\":\"$bname\",\"ut\":\"$uptim\",\"hsa\":\"$hsa\",\"pppa\":\"$pppa\"}" keep-result=no;:delay 1s;:set $pppa ("");:set $hsa ("");';
error_reporting(0);
{
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($server['ip_address'], $server['username'], $server['password'],$server['port_api'] )) {
$API->write('/system/license/getall');
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
$arrsc=$API->comm('/system/scheduler/getall',
array(
".proplist"=> ".id",
"?name" => "SchBilsPro" ,
));
$scd = $arrsc[0][".id"];
$arrs=$API->comm('/system/script/getall',
array(
".proplist"=> ".id",
"?name" => "BilsProAPI" ,
));
$scp = $arrs[0][".id"];
if ($scd != '')
{
$API->comm("/system/scheduler/set",
array(
".id" => $scd,
"interval" => "40s",
"on-event" => "/system script run BilsProAPI",
)
);
}
else
{
$API->comm('/system/scheduler/add', array(
"name" => "SchBilsPro",
"interval" => "40s",
"on-event" => "/system script run BilsProAPI",
));
}
if ($scp != '' )
{
$API->comm("/system/script/set",
array(
".id" => $scp,
"source" => $script,
)
);
}
else
{
$API->comm('/system/script/add', array(
"name" => "BilsProAPI",
"source" => $script,
));
}
$API->disconnect();
}
}
if($ARRAY == "")
{
sweetAlert("Koneksi Mikrotik Gagal ..!!", "error");
}
else
{
$date = date('Y-m-d H:i:s');
$board_id = $ARRAY[0]['software-id'].$server['id'];
mysqli_query($con,"UPDATE setting_mikrotik SET board_id = '$board_id', last_time = '$date' WHERE id = '$server[id]' ");
sweetAlert("Koneksi Mikrotik Berhasil ..!!", "success");
}
}
?>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Mikrotik Router</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama Mikrotik</label>
<input type="text" class="form-control" value="<?php echo $server['nama']; ?>" name="nmk" required="required">
</div>
<div class="form-group">
<label>IP Address</label>
<input type="text" class="form-control" value="<?php echo $server['ip_address']; ?>" name="ipa" required="required">
</div>
<div class="form-group">
<label>Port API Mikrotik</label>
<input type="text" class="form-control" value="<?php echo $server['port_api']; ?>" name="pam" required="required">
</div>
<div class="form-group">
<label>Port Remote Modem</label>
<input type="text" class="form-control" value="<?php echo $server['port_remote']; ?>" name="prm" required="required">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" value="<?php echo $server['username']; ?>" name="usm" required="required">
</div>
<div class="form-group">
<label>Password</label>
<input type="text" class="form-control" value="<?php echo $server['password']; ?>" name="psw" required="required">
</div>
<div class="form-group">
<label>Nama Server</label>
<select class="form-control" name="ids">
<?php
$List = new Listdata();
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"
<?php if($server['id_data_server'] == $value['id']) { echo "selected"; } ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Profile PPPOE Remote</label>
<input type="text" class="form-control" value="<?php echo $server['profile_remote']; ?>" name="profile_remote" placeholder="Isi jika di perlukan">
<i class="text-danger">Khusus yang memiliki pelanggan hotspot bulanan, jika modem/router ingin bisa di remote oleh aplikasi menggunakan koneksi PPPOE</i>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id'];?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit' . $server['id']])) {
try {
// Misalkan $pdo adalah koneksi PDO yang sudah dibuat sebelumnya
$stmt = $pdo->prepare("UPDATE setting_mikrotik SET
id_data_server = :id_data_server,
nama = :nama,
ip_address = :ip_address,
port_api = :port_api,
port_remote = :port_remote,
username = :username,
password = :password,
profile_remote = :profile_remote
WHERE id = :id");
// Mengikat parameter
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':nama', $_POST['nmk']);
$stmt->bindParam(':ip_address', $_POST['ipa']);
$stmt->bindParam(':port_api', $_POST['pam']);
$stmt->bindParam(':port_remote', $_POST['prm']);
$stmt->bindParam(':username', $_POST['usm']);
$stmt->bindParam(':password', $_POST['psw']);
$stmt->bindParam(':profile_remote', $_POST['profile_remote']);
$stmt->bindParam(':id', $server['id']); // ID dari server yang ingin diupdate
// Eksekusi statement
if ($stmt->execute()) {
sweetAlert("Data telah diubah", "success");
}
} catch (PDOException $e) {
// Menangani kesalahan
sweetAlert("Error: " . $e->getMessage(), "error");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("setting_mikrotik",$iddata );
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
<script>
$('#syncBtn').on('click', function () {
Swal.fire({
title: 'Memproses...',
text: 'Sinkronisasi sedang berjalan',
allowOutsideClick: false,
didOpen: () => {
Swal.showLoading();
}
});
$.get('load/sync_mikrotik.php?id=<?= $SvId; ?>', function (data) {
Swal.fire({
icon: 'success',
title: 'Sinkronisasi Selesai!',
html: data,
confirmButtonText: 'OK'
});
}).fail(function () {
Swal.fire({
icon: 'error',
title: 'Gagal!',
text: 'Terjadi kesalahan saat sinkronisasi.',
confirmButtonText: 'Tutup'
});
});
});
</script>
+66
View File
@@ -0,0 +1,66 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Setting Pesan</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Jenis Pesan</th>
<th>Pesan WhataApp</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT backround_kwitansi, pesan_kirim_tagihan, pesan_peringatan_tagihan, pesan_isolir_pelanggan, pesan_melunasi_tagihan, pesan_koneksi_off, pesan_registrasi, pesan_aktivasi FROM data_server WHERE id = '$SvId' ");
$server = mysqli_fetch_assoc($aserver);
$data = array(
array("id" => "1", "nama" => "pesan_kirim_tagihan", "pesan" => $server['pesan_kirim_tagihan']),
array("id" => "2", "nama" => "pesan_peringatan_tagihan", "pesan" => $server['pesan_peringatan_tagihan']),
array("id" => "3", "nama" => "pesan_isolir_pelanggan", "pesan" => $server['pesan_isolir_pelanggan']),
array("id" => "4", "nama" => "pesan_melunasi_tagihan", "pesan" => $server['pesan_melunasi_tagihan']),
array("id" => "5", "nama" => "pesan_koneksi_off", "pesan" => $server['pesan_koneksi_off']),
array("id" => "6", "nama" => "pesan_registrasi", "pesan" => $server['pesan_registrasi']),
array("id" => "7", "nama" => "pesan_aktivasi", "pesan" => $server['pesan_aktivasi'])
);
// echo "<pre>";
// print_r($data);
// echo "</pre>";
foreach ($data as $key) {
?>
<tr>
<td><?php echo $key['nama']; ?></td>
<td><?php echo $key['pesan']; ?></td>
<td>
<a href="?<?php echo encrypt_url('setting_pesan_pesan|'.$key['nama']); ?>" type="button" class="btn btn-secondary btn-sm m-1" >Edit</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+220
View File
@@ -0,0 +1,220 @@
<?php
$aserver = mysqli_query($con,"SELECT $page[1],backround_kwitansi,status_koneksi_off, interval_koneksi_off, status_payment_gateway FROM data_server WHERE id = '$SvId' ");
$server = mysqli_fetch_assoc($aserver);
// print_r($_SESSION);
?>
<!-- Main content -->
<section class="content" style="zoom: 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Setting <?php echo $page[1]; ?></h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-sm-6">
<div class="text-danger" style="margin: 20px;">
<h6><b>Warning..!!</b></h6>
<p>Untuk memposisikan data dari pelanggan silahkan isi dengan Variabel di bawah ini :<br>
#usr => Nama Pelanggan<br>
#add => Alamat Pelanggan<br>
#ppp => PPPOE Pelanggan / ID Pelanggan<br>
#lyn => Paket Berlangganan<br>
#hly => Harga Layanan<br>
#jns => Jenis Layanan<br>
<?php if($page[1] == 'pesan_melunasi_tagihan' OR $page[1] == 'pesan_isolir_pelanggan' OR $page[1] == 'pesan_peringatan_tagihan' OR $page[1] == 'pesan_kirim_tagihan') { ?>
#ket => Keterangan Tagihan<br>
#jum => Jumlah Tagihan<br>
#ppn => PPN<br>
#unk => Kode Unik (for payment gateway)<br>
#tot => Total Tagihan<br>
#lmt => Limit Pembayaran
<?php }
if($server['status_payment_gateway'] == 'ACTIVE' AND $page[1] == 'pesan_kirim_tagihan') {
echo "<br>#lnk => Link Payment Gateway";
}
?>
</p>
<p><b>Contoh :</b><br>
*Tagihan layanan internet*<br>
Nama : #usr<br>
Jumlah Tagihan : #jum<br>
PPN 11% : #ppn<br>
Total Tagihan : #tot
</p>
<?php if ($page[1] == 'pesan_koneksi_off') { ?>
<hr>
<h5><u>PERHATIAN..!!</u></h5>
<p>Jika Status Pesan <b>Aktif</b> dan <b>Interval</b> di isi, maka pelanggan yang aktif dan koneksi nya mati akan di beri pesan otomatis setelah Interval yang telah anda tentukan</p>
<?php } ?>
</div>
</div>
<div class="col-sm-6">
<form method="post" enctype="multipart/form-data">
<?php
if ($page[1] == 'pesan_melunasi_tagihan')
{ ?>
<center>
<label>CONTOH</label>
<img src="img/<?php echo $server['backround_kwitansi']; ?>" width="100%"><br><br>
<div class="form-group">
<label>Upload Backround Kwitansi</label>
<input type="file" class="form-control" name="gambar">
</div>
</center>
<hr>
<?php } ?>
<center><label>Edit Pesan</label></center>
<div class="form-group">
<textarea type="text" class="form-control" rows="15" name="fpesan"><?php echo $server[$page[1]]; ?></textarea>
</div>
<?php if ($page[1] == 'pesan_koneksi_off') { ?>
<div class="row">
<div class="col-6">
<div class="form-group">
<label>Status Pesan</label>
<select class="form-control" name="status_koneksi_off" required="required">
<option value="Tidak Aktif" <?php if ($server['status_koneksi_off'] == "Tidak Aktif") { echo "selected"; }?>>Tidak Aktif</option>
<option value="Aktif" <?php if ($server['status_koneksi_off'] == "Aktif") { echo "selected"; }?>>Aktif</option>
</select>
</div>
</div>
<div class="col-6">
<label>Interval Saat Kirim Pesan</label>
<div class="input-group mb-4">
<input type="number" class="form-control" value="<?php echo $server['interval_koneksi_off']; ?>" name="interval">
<div class="input-group-append">
<div class="input-group-text">
<span> Menit </span>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
<input type="submit" class="btn btn-sm btn-secondary m-1" name="edit" value="Simpan">
<a type="button" class="btn btn-success btn-sm m-1" data-toggle="modal" data-target="#staticBackdrop">Test Kirim Pesan</a>
</form>
<?php
if(isset($_POST['edit'])){
// Periksa apakah file di-upload dan validasi halaman
if (isset($page[1]) && $page[1] == 'pesan_melunasi_tagihan' && isset($_FILES['gambar'])) {
// Validasi file upload
if ($_FILES['gambar']['error'] === UPLOAD_ERR_OK) {
$nameFile = basename($_FILES["gambar"]["name"]);
$targetDir = "img/";
$targetFile = $targetDir . $nameFile;
// Memindahkan file ke direktori tujuan
if (move_uploaded_file($_FILES["gambar"]["tmp_name"], $targetFile)) {
// Menyiapkan string SQL untuk pembaruan
$SqlPost = ", backround_kwitansi = '$nameFile'";
} else {
// Tangani kesalahan jika file gagal dipindahkan
echo "Gagal memindahkan file.";
$SqlPost = '';
}
} else {
echo "Terjadi kesalahan dalam upload file.";
$SqlPost = '';
}
} else {
$SqlPost = '';
}
if ($page[1] == 'pesan_koneksi_off') {
$status_koneksi_off = $_POST['status_koneksi_off'];
$interval = preg_replace("/[^0-9]/","",$_POST['interval']);
$sqlPostOff = ", status_koneksi_off = '".$status_koneksi_off."', interval_koneksi_off = '".$interval."' ";
} else {
$sqlPostOff = "";
}
$update = mysqli_query($con,"UPDATE data_server SET $page[1] = '$_POST[fpesan]' $SqlPost $sqlPostOff WHERE id = '$SvId'");
if($update){
sweetAlert("Data telah di ubah", "success");
// echo $SqlPost;
}
}
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Test Kirim <?php echo $page[1]; ?></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Masukan Nomor WhatsApp</label>
<input type="text" name="nomor" class="form-control" required="required" placeholder="085*******">
</div>
</div>
<div class="modal-footer">
<input type="submit" name="kirim" class="btn btn-primary" value="Kirim Pesan">
</div>
</form>
</div>
</div>
</div>
<?php
if (isset($_POST['kirim'])) {
// Kirim Pesan WhatsApp
$APIwa = new PesanWA();
// Menyiapkan query berdasarkan jenis pesan
if ($page[1] == 'pesan_registrasi' || $page[1] == 'pesan_aktivasi' || $page[1] == 'pesan_koneksi_off') {
$stmt = $pdo->prepare("SELECT id FROM pelanggan WHERE status = 'aktif' AND id_data_server = '$SvId'");
$stmt->execute();
$data = $stmt->fetchAll();
$id = $data[0]['id'];
$url = "";
$APIwa->Create_Pesan($SvId,$id,$page[1]);
} elseif ($page[1] == 'pesan_melunasi_tagihan' || $page[1] == 'pesan_isolir_pelanggan' || $page[1] == 'pesan_peringatan_tagihan' || $page[1] == 'pesan_kirim_tagihan') {
if($server['status_payment_gateway'] == 'ACTIVE' AND $page[1] == 'pesan_kirim_tagihan') {
$sqldata = "SELECT id,img_invoice FROM tagihan WHERE transaction_link != '' AND id_data_server = '$SvId'";
} else {
$sqldata = "SELECT id,img_invoice FROM tagihan WHERE status = 'lunas' AND id_data_server = '$SvId'";
}
$stmt = $pdo->prepare($sqldata);
$stmt->execute();
$data = $stmt->fetchAll();
$id = $data[0]['id'];
$url = baseurl()."/invoice/".$data[0]['img_invoice'];
$APIwa->Create_Pesan($SvId,$id,$page[1],'tag');
}
$Pesan = $APIwa->Get_Pesan();
if ($page[1] == 'pesan_melunasi_tagihan') {
$APIwa->Send_Pesan($SvId,'sendMediaFromUrl',[$_POST['nomor']],$Pesan, $url);
} else {
$APIwa->Send_Pesan($SvId,'sendMessage',[$_POST['nomor']],$Pesan);
}
sweetAlert("Pesan akan segera di kirim ke nomor ".$_POST['nomor'],"success");
}
?>
+550
View File
@@ -0,0 +1,550 @@
<?php
if (isset($_SESSION['user']))
{
$id = $_SESSION['user'];
$stmt = $pdo->prepare("SELECT * FROM user_akses WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
$nama = $data[0]['nama'];
$nomor = $data[0]['nomor_whatsapp'];
$username = $data[0]['username'];
$email = $data[0]['email'];
$profile = $data[0]['profile'];
$idserver = $data[0]['id_data_server'];
}
elseif (isset($_SESSION['master']))
{
$id = $_SESSION['master'];
$idserver = $_SESSION['master'];
$stmt = $pdo->prepare("SELECT * FROM data_server WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
$nama = $data[0]['nama_pemilik'];
$nomor = $data[0]['nomor_whatsapp'];
$username = $data[0]['username'];
$email = $data[0]['email'];
$profile = $data[0]['profile'];
}
//Pembayaran masal jika apk di gabungkan
if(isset($_SESSION['user']) && $_SESSION['user'] == 1) {
$stmt = $pdo->prepare("
SELECT expaired_date, SUM(harga_sewa) as harga_sewa
FROM data_server
WHERE id IN ($idserver)");
$stmt->execute();
$result1 = $stmt->fetch(PDO::FETCH_ASSOC);
$expiredall = $result1['expaired_date'] ?? null;
$hargasewaall = $result1['harga_sewa'] ?? 0;
}
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Setting My Profile</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-5">
<div class="card">
<div class="card-body">
<form method="post" enctype="multipart/form-data">
<table class="table table-borderless">
<center>
<label>Foto Profile</label>
<div class="uploadImage" data-id="profile" style="width: 25%; zoom: 60%;">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
<tbody>
<tr>
<td class="p-2">Nama</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $nama; ?>" name="nama" required="required"></td>
</tr>
<tr>
<td class="p-2">Nomor WhatsApp</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $nomor; ?>" name="nomor" required="required"></td>
</tr>
<tr>
<td class="p-2">Username</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $username; ?>" name="username" required="required"></td>
</tr>
<tr>
<td class="p-2">Email</td>
<td class="p-2">:</td>
<td class="p-2"><input type="text" class="form-control" value="<?php echo $email; ?>" name="email" required="required"></td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-sm btn-primary m-1" name="simpan" value="Simpan">
</form>
<?php if (isset($_SESSION['user'])) { ?>
<button class="btn btn-primary btn-block text-center" id="absenButton" onclick="handleAbsen()">Loading...</button>
<script>
let absenStatus = 'belum'; // default
function updateButtonFromStatus() {
absenStatus = AndroidInterface.getTrackingStatus();
const btn = document.getElementById('absenButton');
if (absenStatus === 'masuk') {
btn.innerText = 'Absen Keluar';
} else {
btn.innerText = 'Absen Masuk';
}
}
function handleAbsen() {
const userId = '<?=$id?>';
const btn = document.getElementById('absenButton');
if (absenStatus === 'masuk') {
AndroidInterface.stopTracking();
absenStatus = 'belum';
btn.innerText = 'Absen Masuk';
} else {
AndroidInterface.startTracking(userId);
absenStatus = 'masuk';
btn.innerText = 'Absen Keluar';
}
}
window.onload = updateButtonFromStatus;
</script>
<?php } ?>
<hr>
<form method="post" enctype="multipart/form-data">
<table class="table table-borderless">
<center>
<label>Ubah Password</label>
</center>
<tbody>
<tr>
<td class="p-2">Password</td>
<td class="p-2">:</td>
<td class="p-2">
<div class="input-group mb-4">
<input type="password" class="form-control" name="password" placeholder="Password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-eye toggle-password" style="cursor: pointer;"></span>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td class="p-2">Confirm Password</td>
<td class="p-2">:</td>
<td class="p-2">
<div class="input-group mb-4">
<input type="password" class="form-control" name="confirm_password" placeholder="Ulangi Password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-eye toggle-password" style="cursor: pointer;"></span>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-sm btn-primary m-1" name="simpanPassword" value="Simpan Password">
</form>
</div>
</div>
</div>
<div class="col-md-7">
<?php $data1111 = "123"; if (isset($_SESSION['master']) && $data1111 == "123" OR $_SESSION['user'] == '1') { ?>
<div class="card">
<div class="card-body">
<a type="button" class="btn btn-info btn-sm mb-3" data-toggle="modal" data-target="#staticBackdrop">Perpanjang Sewa</a>
<?php
$expiredDate = ($_SESSION['master']) ? $data[0]['expaired_date'] : $expiredall;
$currentDate = date('Y-m-d');
$diff = strtotime($expiredDate) - strtotime($currentDate);
$daysLeft = ceil($diff / (60 * 60 * 24));
?>
<?php if ($daysLeft <= 0) { ?>
<div class="card bg-danger text-center mb-1">
<p class="mb-0">Telah berakhir <b><?php echo substr($daysLeft,1); ?></b> hari lalu</p>
</div>
<?php } else { ?>
<div class="card bg-success text-center mb-1">
<p class="mb-0">Akan berakhir <b><?php echo $daysLeft; ?></b> hari lagi</p>
</div>
<?php } ?>
<h5 class="text-center">Tanggal Kedaluarsa : <?php echo $expiredDate; ?></h5>
<hr>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Pilih Periode Pembayaran</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="font-size: 20px;">
<?php
$harga_sewa = ($_SESSION['master']) ? $data[0]['harga_sewa'] : $hargasewaall;
$harga1bln = $harga_sewa;
$harga3bln = $harga_sewa * 3 * 0.95;
$harga6bln = $harga_sewa * 6 * 0.90;
$harga12bln = $harga_sewa * 12 * 0.85;
?>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio1" value="<?php echo $harga1bln; ?>" name="customRadio" checked>
<label for="customRadio1" class="custom-control-label">Pembayaran 1 Bulan => Rp. <?php echo number_format($harga1bln, 0, ',', '.'); ?></label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio2" value="<?php echo $harga3bln; ?>" name="customRadio">
<label for="customRadio2" class="custom-control-label">Pembayaran 3 Bulan => Rp. <?php echo number_format($harga3bln, 0, ',', '.'); ?></label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio3" value="<?php echo $harga6bln; ?>" name="customRadio">
<label for="customRadio3" class="custom-control-label">Pembayaran 6 Bulan => Rp. <?php echo number_format($harga6bln, 0, ',', '.'); ?></label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio4" value="<?php echo $harga12bln; ?>" name="customRadio">
<label for="customRadio4" class="custom-control-label">Pembayaran 12 Bulan => Rp. <?php echo number_format($harga12bln, 0, ',', '.'); ?></label>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="konfirmasi" class="btn btn-primary" value="Konfirmasi">
</div>
</form>
<?php
if (isset($_POST['konfirmasi'])) {
$harga = $_POST['customRadio'] ?? 0;
$expaired = ($_SESSION['master']) ? $data[0]['expaired_date'] : $expiredall;
$keterangan = '';
switch ($harga) {
case $harga1bln:
$expaired = date('Y-m-d', strtotime('+1 month', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 1 Bulan";
break;
case $harga3bln:
$expaired = date('Y-m-d', strtotime('+3 months', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 3 Bulan";
break;
case $harga6bln:
$expaired = date('Y-m-d', strtotime('+6 months', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 6 Bulan";
break;
case $harga12bln:
$expaired = date('Y-m-d', strtotime('+12 months', strtotime($expaired)));
$keterangan = "Pembayaran sewa Apk BilsPro 12 Bulan";
break;
default:
// Handle the case where the value of customRadio is not expected
$expaired = ($_SESSION['master']) ? $data[0]['expaired_date'] : $expiredall;
$keterangan = "Pembayaran tidak valid";
break;
}
// Set waktu transaksi
$waktu = date('Y-m-d H:i:s');
function generateOrderId($pdo) {
do {
//"ORDER_ID_" .
$order_id = sprintf('%010d', mt_rand(0, 9999999999999)); // Generate 13 digit number
$stmt = $pdo->prepare("SELECT COUNT(*) FROM apk_payment WHERE order_id = :order_id");
$stmt->bindParam(':order_id', $order_id);
$stmt->execute();
$exists = $stmt->fetchColumn();
} while ($exists > 0);
return $order_id;
}
$order_id = generateOrderId($pdo);
// Prepare and execute the SQL statement
$stmt = $pdo->prepare("INSERT INTO apk_payment
(id_data_server, order_id, keterangan, waktu_transaksi, nominal, expaired_time, status)
VALUES
(:id, :order_id, :keterangan, :waktu_transaksi, :nominal, :expaired_time, 'BELUM DIBAYAR')");
$stmt->bindParam(':id', $idserver);
$stmt->bindParam(':order_id', $order_id);
$stmt->bindParam(':keterangan', $keterangan);
$stmt->bindParam(':waktu_transaksi', $waktu);
$stmt->bindParam(':nominal', $harga);
$stmt->bindParam(':expaired_time', $expaired);
// Execute the statement
if ($stmt->execute()) {
sweetAlert("Pembayaran Telah dibuat, silahkan lanjutkan proses pembayaran", "success");
// Redirect to checkout process or any other page
// header("Location: ../midtrans/examples/snap/checkout-process-simple-version.php");
// exit();
} else {
sweetAlert("Terjadi kesalahan dalam proses pembayaran", "error");
}
}
?>
</div>
</div>
</div>
<h6>Riwayat Pembayaran</h6>
<table id="example2" class="table table-bordered" style="zoom: 90%;">
<thead>
<tr>
<th>Order Time</th>
<th>Priode</th>
<th>Nominal</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Query untuk mengambil data dari tabel apk_payment
// if(isset($_SESSION['master'])) {
// $stmt = $pdo->prepare("SELECT * FROM apk_payment WHERE id_data_server = :id ORDER BY waktu_transaksi");
// $stmt->bindParam(':id', $_SESSION['master']);
// $stmt->execute();
// } else {
// $stmt = $pdo->prepare("SELECT * FROM apk_payment WHERE id_data_server = :id ORDER BY waktu_transaksi");
// $stmt->bindParam(':id', $_SESSION['master']);
// $stmt->execute();
// }
$stmt = $pdo->prepare("SELECT * FROM apk_payment WHERE id_data_server = :id ORDER BY waktu_transaksi DESC");
$stmt->bindParam(':id', $idserver);
$stmt->execute();
// Ambil semua hasil dari query
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
?>
<tr>
<td><?php echo htmlspecialchars($row['waktu_transaksi']); ?></td>
<td><?php echo htmlspecialchars($row['keterangan']); ?></td>
<td><?php echo number_format($row['nominal'], 0, ',', '.'); ?></td>
<td><?php echo htmlspecialchars($row['status']); ?></td>
<td>
<form method="post">
<?php if($row['status'] == 'PENDING' || $row['status'] == 'BELUM DIBAYAR') { ?>
<a href="payment/paydisini/?order_id=<?php echo htmlspecialchars($row['order_id']); ?>" class="btn btn-sm btn-primary m-1">Bayar</a>
<?php if($row['status'] == 'BELUM DIBAYAR') { ?>
<input type="submit" name="hapus<?php echo $row['id']; ?>" class="btn btn-sm btn-danger m-1" value="Hapus" >
<?php } } else { ?>
<a href="payment/paydisini/?order_id=<?php echo htmlspecialchars($row['order_id']); ?>" class="btn btn-sm btn-secondary m-1">Detail</a>
<?php } ?>
</form>
</td>
</tr>
<?php
if(isset($_POST['hapus'.$row['id']]))
{
$iddata = $row['id'];
deleteAlert("apk_payment",$iddata );
}
}
?>
</tbody>
</table>
</div>
</div>
<?php } else { if($status_menu == "Tidak Aktif") { ?>
<div class="card">
<div class="card-body">
<center>
<h2 class="text-danger"><b>ACCESS DENIED</b></h2>
<img src="dist/img/denied.jpg" width="50%">
<h5>Silahkan hubungi admin untuk mengaktifkan akses aplikasi</h5>
</center>
</div>
</div>
<?php } } ?>
</div>
</div>
</div>
<div class="card-footer">
<?php if($_SESSION['user'] == 2) { ?>
<!--<button onclick="AndroidInterface.startOCR()">Ambil Foto KTP</button><br><br>-->
<button type="button" onclick="AndroidInterface.startOCR()">Ambil Foto KTP</button>
<form>
<label>NIK:</label><br>
<input id="nik"><br>
<label>Nama:</label><br>
<input id="nama"><br>
<label>Alamat:</label><br>
<textarea id="alamat"></textarea>
</form>
<script>
function handleOCRResult(jsonStr) {
try {
const data = JSON.parse(jsonStr);
document.getElementById('nik').value = data.nik || '';
document.getElementById('nama').value = data.nama || '';
document.getElementById('alamat').value = data.alamat || '';
alert("Data KTP berhasil dimuat!");
} catch (e) {
alert("Gagal parsing data KTP: " + e.message);
}
}
</script>
<?php } ?>
</div>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['simpanPassword'])) {
if ($_POST['password'] == $_POST['confirm_password']) {
$hashedPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
if (isset($_SESSION['user'])) {
$stmt = $pdo->prepare("UPDATE user_akses SET password = :password WHERE id = :idtik");
$stmt->bindParam(':password', $hashedPassword);
$stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
$stmt->execute();
session_destroy();
sweetAlert("Password telah di ubah silahkan Login kembali", "success", baseurl('../login'));
} elseif(isset($_SESSION['master'])) {
$stmt = $pdo->prepare("UPDATE data_server SET password = :password WHERE id = :idtik");
$stmt->bindParam(':password', $hashedPassword);
$stmt->bindParam(':idtik', $id, PDO::PARAM_INT);
$stmt->execute();
session_destroy();
sweetAlert("Password telah di ubah silahkan Login kembali", "success", baseurl('../login'));
}
}else{
sweetAlert("Password tidak sesuai, mohon periksa kembali", "info");
}
}
if (isset($_POST['simpan'])) {
// Validasi jika file sudah di-upload
if (!empty($_SESSION['uploaded_files']['profile'])) {
try {
// Pastikan PDO instance sudah diinisialisasi (contoh: $pdo)
$id = $_SESSION['user'] ?? $_SESSION['master'] ?? null;
if ($id === null) {
sweetAlert("ID pengguna tidak ditemukan.", "error");
exit;
}
// Tentukan tabel dan kolom sesuai role
if (isset($_SESSION['user'])) {
$table = "user_akses";
$columns = [
'email' => $_POST['email'],
'nama' => $_POST['nama'],
'nomor_whatsapp' => $_POST['nomor'],
'username' => $_POST['username'],
'profile' => $_SESSION['uploaded_files']['profile'],
];
} elseif (isset($_SESSION['master'])) {
$table = "data_server";
$columns = [
'email' => $_POST['email'],
'nama_pemilik' => $_POST['nama'],
'nomor_whatsapp' => $_POST['nomor'],
'username' => $_POST['username'],
'profile' => $_SESSION['uploaded_files']['profile'],
];
} else {
sweetAlert("Role pengguna tidak valid.", "error");
exit;
}
// Siapkan query dan bind parameter
$setPart = [];
foreach ($columns as $key => $value) {
$setPart[] = "$key = :$key";
}
$query = "UPDATE $table SET " . implode(", ", $setPart) . " WHERE id = :id";
$stmt = $pdo->prepare($query);
foreach ($columns as $key => $value) {
$stmt->bindValue(":$key", $value);
}
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
// Eksekusi query
$stmt->execute();
// Feedback ke pengguna
sweetAlert("Profile telah di edit", "success");
} catch (PDOException $e) {
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
} else {
sweetAlert("Gambar belum di upload", "error");
}
}
$_SESSION['uploaded_files']['profile'] = $profile;
?>
<script>
document.querySelectorAll('.toggle-password').forEach(function(toggle) {
toggle.addEventListener('click', function() {
// Mengambil elemen input yang bersangkutan
const input = this.closest('.input-group').querySelector('input');
// Mengubah tipe input
if (input.type === 'password') {
input.type = 'text';
this.classList.remove('fa-eye');
this.classList.add('fa-eye-slash');
} else {
input.type = 'password';
this.classList.remove('fa-eye-slash');
this.classList.add('fa-eye');
}
});
});
</script>
+62
View File
@@ -0,0 +1,62 @@
<?php
require('fpdf.php');
// Konversi cm ke mm (1 cm = 10 mm)
$lebar = 45; // 4.5 cm = 45 mm
$tinggi = 100; // Sesuaikan tinggi sesuai kebutuhan
$margin = 2; // Margin 2 mm
// Buat instance FPDF dengan orientasi potret
$pdf = new FPDF('P', 'mm', array($lebar, $tinggi));
$pdf->SetMargins($margin, $margin, $margin);
$pdf->AddPage();
// Set font
$pdf->SetFont('Helvetica', 'B', 8);
$pdf->Cell(0, 4, 'Struk Pembayaran', 0, 1, 'C');
$pdf->Ln(2);
// Tambahkan teks contoh
$pdf->SetFont('Helvetica', '', 7);
$pdf->Cell(0, 4, 'Tanggal : ' . date('d-m-Y H:i:s'), 0, 1, 'L');
$pdf->Cell(0, 4, 'Bulan : ' . date('M-Y'), 0, 1, 'L');
$pdf->Ln(2);
// Garis pemisah
$pdf->Cell(0, 0, str_repeat('-', 48), 0, 1, 'L');
$pdf->Ln(2);
// Contoh item
$items = [
['Nama', ':', 'Akhtar Biantara D'],
['No. Id', ':', '202576676623'],
['Server', ':', 'CC-NET'],
['Penagih', ':', 'Teknisi'],
['Pelunas', ':', 'Admin Finance'],
['Keterangan', ':', "Rek. PT, No 0812787682\nAlamat: Jl. Merdeka No.10, Jakarta"],
];
foreach ($items as $item) {
$ket = $item[0];
$spc = $item[1];
$itm = $item[2];
if ($ket == 'Keterangan') {
$pdf->Cell(15, 4, $ket, 0, 0, 'L');
$pdf->Cell(2, 4, $spc, 0, 1, 'L');
$pdf->MultiCell(0, 4, $itm, 0, 'R');
} else {
$pdf->Cell(15, 4, $ket, 0, 0, 'L');
$pdf->Cell(2, 4, $spc, 0, 0, 'L');
$pdf->Cell(0, 4, $itm, 0, 1, 'R');
}
}
$pdf->Ln(2);
$pdf->Cell(0, 1, str_repeat('-', 48), 0, 1, 'L');
$pdf->Cell(0, 1, str_repeat('-', 48), 0, 1, 'L');
$pdf->Ln(2);
// Output PDF
$pdf->Output('I', 'struk.pdf');
+79
View File
@@ -0,0 +1,79 @@
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Tagihan Akan Datang</h4>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<?php if(in_array("Tambah", $json_array[4]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('tagihan_buat_satuan'); ?>" class="btn btn-danger btn-sm">Buat Tagihan</a>
<?php } ?>
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr class="bg-warning">
<th style="max-width: 20px">No</th>
<th>Nama</th>
<th>Id Pelanggan</th>
<th>Alamat</th>
<th>Keterangan</th>
<th>Paket Berlanggan</th>
<th>Jumlah Tagihan</th>
<?php echo ($statuspaygw == "ACTIVE") ? '<th>Payment Link</th>' : ''; ?>
<th>Nama Server</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$no = 1;
$chunkSize = 200;
$stmt = $pdo->query("SELECT COUNT(id) FROM v_tagihan WHERE $SqlSvData status = 'buat'");
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT * FROM v_tagihan WHERE $SqlSvData status = 'buat' ORDER BY nama LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
foreach ($data as $row) {
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td style="max-width: 150px"><?php echo $row['nama']; ?></td>
<td style="max-width: 150px"><?php echo $row['akun']; ?></td>
<td style="max-width: 200px"><?php echo $row['alamat']; ?></td>
<td style="max-width: 200px"><?php echo $row['keterangan']; ?></td>
<td><?php echo $row['nama_paket']; ?></td>
<td>Rp. <?php echo number_format($row['verifikasi_tagihan']); ?></td>
<?php echo ($statuspaygw == "ACTIVE") ? '<td style="max-width: 200px">'.$row['transaction_link'].'</td>' : ''; ?>
<td style="max-width: 200px"><?php echo $row['nama_server']; ?></td>
<td style="max-width: 30px">
<a href="?<?php echo encrypt_url('tagihan_detail|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-info btn-sm m-1">Detail</a>
</td>
</tr>
<?php
$no++;
}} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+456
View File
@@ -0,0 +1,456 @@
<?php
// Periksa dan amankan input query
$idtag = isset($page[1]) ? (int)$page[1] : 0;
// Ambil data dari database
$stmt = $pdo->prepare("SELECT * FROM v_tagihan WHERE $SqlSvData id = :id");
$stmt->bindParam(':id', $idtag, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($data)) {
echo "Data tidak ditemukan.";
exit;
}
$datakonpensasi = ($data[0]['konpensasi'] == 0) ? $data[0]['jumlah_konpensasi'] : 0;
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-primary">
<div class="row">
<div class="col-sm-6">
<h5>Bayar Tagihan</h5>
</div>
<div class="col-sm-6"></div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-8">
<table class="table table-borderless">
<tbody>
<tr>
<td class="p-1">Status Tagihan</td>
<td class="p-1">:</td>
<td class="p-1">
<?php
$status = $data[0]['status'];
if ($status == 'buat') {
echo '<div class="badge badge-warning">Akan datang</div>';
} elseif ($status == 'nunggak') {
echo '<div class="badge badge-danger">Tunggakan</div>';
} elseif ($status == 'lunas') {
echo '<div class="badge badge-success">Telah dibayar</div>';
} else {
echo '<div class="badge badge-primary">Sedang Berjalan</div>';
}
?>
</td>
</tr>
<tr>
<td class="p-1">Id Pelanggan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo htmlspecialchars($data[0]['akun']); ?></td>
</tr>
<tr>
<td class="p-1">Nama</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo htmlspecialchars($data[0]['nama']); ?></td>
</tr>
<tr>
<td class="p-1">Alamat</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo htmlspecialchars($data[0]['alamat']); ?></td>
</tr>
<tr>
<td class="p-1">Jenis Layanan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo htmlspecialchars($data[0]['jenis_layanan']); ?></td>
</tr>
<tr>
<td class="p-1">Keterangan Tagihan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo htmlspecialchars($data[0]['keterangan']); ?></td>
</tr>
<tr>
<td class="p-1">Paket Berlangganan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo htmlspecialchars($data[0]['nama_paket']); ?></td>
</tr>
<tr>
<td class="p-1">Harga Layanan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['nominal_tagihan'], 0, ',', '.'); ?></td>
</tr>
<tr>
<td class="p-1">Jumlah Potongan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['jumlah_konpensasi'], 0, ',', '.'); ?></td>
</tr>
<tr>
<td class="p-1">Jumlah Tagihan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['jumlah_tagihan'], 0, ',', '.'); ?></td>
</tr>
<tr>
<td class="p-1">PPN 11%</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['ppn'], 0, ',', '.'); ?></td>
</tr>
<?php
if($data[0]['kode_unik'] != '0') { ?>
<tr>
<td class="p-1">Subsidi</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['kode_unik'], 0, ',', '.'); ?></td>
</tr>
<?php } ?>
<tr>
<td class="p-1"><b>Total Tagihan</b></td>
<td class="p-1">:</td>
<td class="p-1"><b>Rp. <?php echo number_format($data[0]['verifikasi_tagihan'], 0, ',', '.'); ?></b></td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-4">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>Upload Bukti Pembayaran</label>
<div class="uploadImage" data-id="tag<?php echo htmlspecialchars($data[0]['id']); ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</div>
<div class="form-group">
<label>Jenis Kas</label>
<select class="form-control" name="metode" required="required">
<option value="">Pilih</option>
<option value="Bank">Bank</option>
<option value="Tunai">Tunai</option>
</select>
</div>
<div class="form-group">
<label for="tanggal">Tanggal Pembayaran</label>
<div class="row align-items-center">
<div class="col-6">
<input class="form-control" type="date" id="tanggal" name="tanggal">
</div>
<div class="col-2">
<select class="form-control" id="jam" name="jam"></select>
</div>
<div class="col-2">
<select class="form-control" id="menit" name="menit"></select>
</div>
<div class="col-2">
<select class="form-control" id="detik" name="detik"></select>
</div>
</div>
</div>
<input type="hidden" id="formatted_datetime" name="formatted_datetime">
<div class="form-group m-1">
<label>Catatan</label>
<textarea class="form-control" name="catatan" rows="3"></textarea>
<i class="text-danger"><small>Isi jika di perlukan</small></i>
</div>
<div class="modal-footer">
<input type="submit" name="bayar" class="btn btn-primary btn-sm m-1" value="Bayar Tagihan">
</div>
</form>
<?php
// echo date('d-m-Y');
if (isset($_POST['bayar'])) {
// echo "<pre>";
// print_r($_POST);
// echo "</pre>";
try {
if (!isset($_SESSION['uploaded_files']) || empty($data[0])) {
throw new Exception('Data tidak lengkap.');
}
$bukti = $_SESSION['uploaded_files']['tag' . $data[0]['id']] ?? '';
if (empty($bukti)) {
throw new Exception('Bukti pembayaran tidak tersedia.');
}
// Pastikan variabel berikut sudah didefinisikan sebelumnya
$user = $data[0]['akun'];
$userHs = $data[0]['user_hotspot'];
$nama = $data[0]['nama']; // Contoh nama
$nominal = $data[0]['verifikasi_tagihan']; // Contoh nominal
$keterangan = 'Pembayaran '.$data[0]['keterangan']; // Contoh keterangan
$invoice = 'kwitansi_'.date('Ymd').$idtag.'.png'; // Nama file output
$paketint = $data[0]['nama_paket'];
$tagihan = 'Rp. '.number_format($data[0]['jumlah_tagihan'], 0, ',', '.');
$ppn = 'Rp. '.number_format($data[0]['ppn'], 0, ',', '.');
$subsidi = 'Rp. '.number_format($data[0]['kode_unik'], 0, ',', '.');
// Buat gambar dari file PNG yang ada
$stmt = $pdo->prepare("SELECT backround_kwitansi FROM data_server WHERE id = :id");
$stmt->bindParam(':id', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$gambarKwitansi = 'img/'.$result['backround_kwitansi']; // Pastikan variabel
$tanggalbayar = $_POST['formatted_datetime'];
// $img = imagecreatefrompng($gambarKwitansi);
// // Buat beberapa warna
// $white = imagecolorallocate($img, 245, 245, 245);
// $black = imagecolorallocate($img, 0, 0, 0);
// $orange = imagecolorallocate($img, 0, 0, 128);
// $fontPath = 'dist/X_10x20_LE.gdf';
// $font = imageloadfont($fontPath);
// $line = '_____________________________________________________________________________________';
// imagestring($img, $font, 320, 30, 'KWITANSI PEMBAYARAN', $black);
// imagestring($img, 5, 650, 52, 'No. '.date('Ymd').$idtag, $black);
// imagestring($img, 2, 650, 67, 'Tanggal pembayaran', $black);
// imagestring($img, 2, 650, 82, formatIndo(date('Y-m-d'), 'd F Y'), $black);
// imagestring($img, 5, 20, 91, $line, $orange);
// imagestring($img, 5, 20, 95, $line, $orange);
// imagestring($img, 4, 30, 125, 'Telah Diterima Dari', $black);
// imagestring($img, 5, 200, 125, ': '.$nama, $black);
// imagestring($img, 4, 30, 150, 'Dengan Nomor Layanan', $black);
// imagestring($img, 5, 200, 150, ': '.$user, $black);
// imagestring($img, 4, 30, 175, 'Sejumlah Uang', $black);
// imagestring($img, 4, 200, 175, ': '.terbilang($nominal).' rupiah', $black);
// imagestring($img, 4, 30, 200, 'Untuk Pembayaran', $black);
// imagestring($img, 4, 200, 200, ':', $black);
// imagestring($img, 5, 100, 225, $keterangan, $black);
// imagestring($img, 5, 20, 245, $line, $orange);
// imagestring($img, 5, 50, 280, '___________________________', $orange);
// imagestring($img, $font, 70, 300, 'Nominal : Rp. '.number_format($nominal, 0, ',', '.'), $black);
// imagestring($img, 5, 50, 310, '___________________________', $orange);
// imagestring($img, 4, 535, 280, $result['kabupaten'].', '.formatIndo(date('Y-m-d'), 'd F Y'), $black);
// // Simpan file ke direktori 'invoice'
// $invoicePath = 'invoice/'.$invoice;
$img = imagecreatefrompng($gambarKwitansi);
// Buat beberapa warna
$white = imagecolorallocate($img, 245, 245, 245);
$black = imagecolorallocate($img, 0, 0, 0);
$orange = imagecolorallocate($img, 0, 0, 128);
$fontPath = 'dist/X_10x20_LE.gdf';
$font = imageloadfont($fontPath);
$line = '_____________________________________________________________________________________';
imagestring($img, $font, 320, 30, 'KWITANSI PEMBAYARAN', $black);
imagestring($img, 3, 580, 30, 'No Faktur', $black);
imagestring($img, 3, 670, 30, ': '.date('Ymd').$idtag, $black);
imagestring($img, 3, 580, 50, 'Tanggal', $black);
imagestring($img, 3, 670, 50, ': '.formatIndo($tanggalbayar, 'd F Y'), $black);
imagestring($img, 3, 580, 70, 'No Pelanggan', $black);
imagestring($img, 3, 670, 70, ': '.$user, $black);
imagestring($img, 5, 20, 81, $line, $orange);
imagestring($img, 5, 20, 85, $line, $orange);
imagestring($img, 4, 30, 110, 'Telah Diterima Dari', $black);
imagestring($img, 5, 200, 110, ': '.$nama, $black);
imagestring($img, 4, 30, 135, 'Sejumlah Uang', $black);
imagestring($img, 4, 200, 135, ': '.terbilang($nominal).' rupiah', $black);
imagestring($img, 4, 30, 160, 'Untuk Pembayaran', $black);
imagestring($img, 4, 200, 160, ': '. $keterangan, $black);
imagestring($img, 5, 20, 175, $line, $orange);
imagestring($img, 4, 30, 190, 'NO', $black);
imagestring($img, 4, 70, 190, 'KETERANGAN', $black);
imagestring($img, 4, 620, 190, 'NOMINAL', $black);
imagestring($img, 5, 20, 195, $line, $orange);
imagestring($img, 4, 30, 215, '1', $black);
imagestring($img, 4, 70, 215, $paketint, $black);
imagestring($img, 4, 620, 215, $tagihan, $black);
if($data[0]['ppn'] != 0 ) {
imagestring($img, 4, 30, 235, '2', $black);
imagestring($img, 4, 70, 235, 'PPN 11%', $black);
imagestring($img, 4, 620, 235, $ppn, $black);
}
if($data[0]['kode_unik'] != 0 ) {
imagestring($img, 4, 30, 255, '3', $black);
imagestring($img, 4, 70, 255, 'Subsidi', $black);
imagestring($img, 4, 620, 255, $subsidi, $black);
}
imagestring($img, 5, 20, 265, $line, $orange);
imagestring($img, 4, 550, 290, 'TOTAL', $black);
imagestring($img, 4, 620, 290, 'Rp. '.number_format($nominal, 0, ',', '.'), $black);
imagestring($img, 5, 550, 300, '__________________________ ', $orange);
imagestring($img, 5, 50, 320, '______________________________', $orange);
imagestring($img, $font, 70, 340, 'Terbilang : Rp. '.number_format($nominal, 0, ',', '.'), $black);
imagestring($img, 5, 50, 350, '______________________________', $orange);
// Simpan file ke direktori 'invoice'
$invoicePath = 'invoice/'.$invoice;
if (!imagepng($img, $invoicePath)) {
echo "<br>".$invoicePath;
die('Gagal menyimpan gambar.');
} else {
imagedestroy($img);
//Get Mikrotik Setting
$Mikro = $pdo->prepare("SELECT ip_address, port_api, username, password FROM setting_mikrotik WHERE id = :idset");
$Mikro->bindParam(':idset', $data[0]['id_setting_mikrotik'], PDO::PARAM_INT);
$Mikro->execute();
$Mikrot = $Mikro->fetchAll(PDO::FETCH_ASSOC);
// print_r($Mikrot);
$m_ip = $Mikrot[0]['ip_address'];
$m_user = $Mikrot[0]['username'];
$m_pass = $Mikrot[0]['password'];
$m_port = $Mikrot[0]['port_api'];
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($m_ip, $m_user, $m_pass, $m_port)) {
if ($data[0]['jenis_layanan'] == 'Hotspot') {
$arrIDh = $API->comm("/ip/hotspot/user/getall", [
".proplist" => ".id",
"?name" => $userHs,
]);
if (!empty($arrIDh)) {
$API->comm("/ip/hotspot/user/set", [
".id" => $arrIDh[0][".id"],
"disabled" => "false",
]);
} else {
throw new Exception('Akun Hotspot tidak ada di Mikrotik');
}
} else {
$arrID = $API->comm("/ppp/secret/getall", [
".proplist" => ".id",
"?name" => $user,
]);
if (!empty($arrID)) {
$API->comm("/ppp/secret/set", [
".id" => $arrID[0][".id"],
"disabled" => "false",
]);
} else {
throw new Exception('Akun PPPOE tidak ada di Mikrotik');
}
}
$stmt = $pdo->prepare("UPDATE pelanggan SET status = 'aktif' WHERE id = :idpel");
$stmt->bindParam(':idpel', $data[0]['id_pelanggan'], PDO::PARAM_INT);
$stmt->execute();
$stmt = $pdo->prepare("UPDATE tagihan SET tanggal_bayar = :tanggal, bukti_pembayaran = :bukti, img_invoice = :inv, status = 'lunas', pelunas = :pelunas, catatan = :catatan WHERE id = :idtag");
$stmt->bindParam(':tanggal', $_POST['formatted_datetime']);
$stmt->bindParam(':bukti', $bukti);
$stmt->bindParam(':inv', $invoice);
$stmt->bindParam(':pelunas', $SvNama);
$stmt->bindParam(':catatan', $_POST['catatan']);
$stmt->bindParam(':idtag', $idtag, PDO::PARAM_INT);
$stmt->execute();
//Cek transaksi dengan id tagihan
$stmt = $pdo->prepare("SELECT id_tagihan FROM transaksi WHERE id_tagihan = :id");
$stmt->bindParam(':id', $idtag, PDO::PARAM_INT);
$stmt->execute();
$tagid = $stmt->fetchColumn();
if ($tagid === false) {
$sql = "INSERT INTO transaksi (id_data_server, id_tagihan, id_user_akses, keterangan, pemasukan, start_time, metode_pembayaran, status) VALUES (:idds, :idtag, :idua, :keterangan, :pemasukan, :start_time, :metode, 'Tagihan')";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':idds', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->bindParam(':idtag', $idtag, PDO::PARAM_INT);
$stmt->bindParam(':idua', $data[0]['id_marketing'], PDO::PARAM_INT);
$stmt->bindParam(':keterangan', $data[0]['keterangan']);
$stmt->bindParam(':pemasukan', $data[0]['verifikasi_tagihan']);
$stmt->bindParam(':start_time', $_POST['formatted_datetime']);
$stmt->bindParam(':metode', $_POST['metode']);
$stmt->execute();
}
if (in_array($data[0]['id_data_server'], [2, 3, 4, 5, 6, 8, 9])) {
$nomor = explode(',', $data[0]['nomor_whatsapp'] . ',6282130888937');
} else {
$nomor = explode(',', $data[0]['nomor_whatsapp']);
}
// Kirim Pesan WhatsApp
$Url = baseurl($invoicePath);
$APIwa = new PesanWA();
$APIwa->Create_Pesan($data[0]['id_data_server'],$idtag,'pesan_melunasi_tagihan','tag');
$Pesan = $APIwa->Get_Pesan();
$APIwa->Send_Pesan($data[0]['id_data_server'],'sendMediaFromUrl',$nomor,$Pesan,$Url);
// echo $Pesan;
sweetAlert("Pembayaran tagihan berhasil", "success", "?".encrypt_url('tagihan_detail_lunas|' . $idtag));
}
else{
throw new Exception('Aplikasi Gagal terhubung ke Mikrotik');
}
}
} catch (PDOException $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
} catch (Exception $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<script>
// Fungsi untuk mengisi dropdown jam, menit, dan detik
function isiDropdown(id, max) {
let select = document.getElementById(id);
for (let i = 0; i <= max; i++) {
let option = document.createElement("option");
option.value = i.toString().padStart(2, '0');
option.text = i.toString().padStart(2, '0');
select.appendChild(option);
}
}
isiDropdown("jam", 23);
isiDropdown("menit", 59);
isiDropdown("detik", 59);
// Waktu dari server (PHP)
const serverDatetime = "<?= date('Y-m-d H:i:s') ?>";
const [tanggal, waktu] = serverDatetime.split(" ");
const [jam, menit, detik] = waktu.split(":");
// Set input default sesuai waktu server
document.getElementById("tanggal").value = tanggal;
document.getElementById("jam").value = jam;
document.getElementById("menit").value = menit;
document.getElementById("detik").value = detik;
function updateHiddenDatetime() {
const tanggal = document.getElementById("tanggal").value;
const jam = document.getElementById("jam").value;
const menit = document.getElementById("menit").value;
const detik = document.getElementById("detik").value;
const formattedDatetime = `${tanggal} ${jam}:${menit}:${detik}`;
document.getElementById("formatted_datetime").value = formattedDatetime;
}
document.getElementById("tanggal").addEventListener("input", updateHiddenDatetime);
document.getElementById("jam").addEventListener("change", updateHiddenDatetime);
document.getElementById("menit").addEventListener("change", updateHiddenDatetime);
document.getElementById("detik").addEventListener("change", updateHiddenDatetime);
updateHiddenDatetime();
</script>
+175
View File
@@ -0,0 +1,175 @@
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-primary">
<div class="row">
<div class="col-sm-6">
<h5>Buat Tagihan</h5>
</div>
<div class="col-sm-6"></div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Nama Pelanggan</label>
<select class="form-control select2bs4" required="required" name="idpel">
<option value="">Pilih</option>
<?php
$List->set_list("pelanggan", $SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>"><?php echo htmlspecialchars($value['nama'].' ('.$value['alamat'].')'); ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Limit Pembayaran</label>
<input class="form-control" type="date" name="tanggal" required="required">
</div>
</div>
<div class="col-md-6">
</div>
</div>
<div id="form-content"></div>
</div>
<div class="card-footer">
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah'])) {
try {
// Prepare and execute statement to fetch customer data
$stmt = $pdo->prepare("SELECT * FROM pelanggan WHERE id = :id");
$stmt->bindParam(':id', $_POST['idpel'], PDO::PARAM_INT);
$stmt->execute();
$pelanggan = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$pelanggan) {
throw new Exception('Customer not found.');
}
// Fetch package price
$stmt = $pdo->prepare("SELECT harga_paket FROM profile_paket WHERE id = :id_profile_paket");
$stmt->bindParam(':id_profile_paket', $pelanggan['id_profile_paket'], PDO::PARAM_INT);
$stmt->execute();
$tagihan = $stmt->fetchColumn();
// Fetch payment gateway data
$stmt = $pdo->prepare("SELECT payment_gateway, apikey_payment_gateway, url_payment_gateway,status_payment_gateway FROM data_server WHERE id = :id_data");
$stmt->bindParam(':id_data', $pelanggan['id_data_server'], PDO::PARAM_INT);
$stmt->execute();
$paygw = $stmt->fetch(PDO::FETCH_ASSOC);
// Fetch PPN data
$stmt = $pdo->prepare("SELECT ppn FROM profile_tagihan WHERE id = :id_profile_tagihan");
$stmt->bindParam(':id_profile_tagihan', $pelanggan['id_profile_tagihan'], PDO::PARAM_INT);
$stmt->execute();
$ppn = $stmt->fetchColumn();
if ($ppn == 1 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan;
$ppn_amount = 0;
$total_tagihan = $jumlah_tagihan + $ppn_amount;
$kode_unik = 0;
$verifikasi_tagihan = $total_tagihan + $kode_unik;
}
elseif($ppn == 2 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan;
$ppn_amount = $jumlah_tagihan / 100 * 11;
$total_tagihan = $jumlah_tagihan + $ppn_amount;
$kode_unik = 0;
$verifikasi_tagihan = $total_tagihan + $kode_unik;
}
elseif($ppn == 3 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan - ($tagihan / 100 * 9.91);
$ppn_amount = $jumlah_tagihan / 100 * 11;
$total_tagihan = $jumlah_tagihan + $ppn_amount;
$kode_unik = 0;
$verifikasi_tagihan = $total_tagihan + $kode_unik;
}
elseif($ppn == 4 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan;
$ppn_amount = $jumlah_tagihan / 100 * 11;
$total_tagihan = $jumlah_tagihan + $ppn_amount;
$kode_unik = substr($total_tagihan, -3);
$verifikasi_tagihan = $total_tagihan - $kode_unik;
}
// Calculate billing details
$limit_tag = $_POST['tanggal'];
$keterangan = "Tagihan Layanan Internet bulan " . formatIndo($limit_tag, 'F Y');
$status = 'pending';
// Payment gateway processing
$transaction_id = '';
$transaction_link = '';
$transaction_status = '';
$total_desimal = round($verifikasi_tagihan);
if (!empty($paygw['apikey_payment_gateway']) && $paygw['status_payment_gateway'] === 'ACTIVE') {
require 'payment/flip/Flip/Transaction.php';
$flip = new FlipPaymentGateway($paygw['apikey_payment_gateway'], $paygw['url_payment_gateway']);
$response = $flip->createBill($keterangan, $total_desimal, $pelanggan['email'], $pelanggan['nama'], $pelanggan['nomor_whatsapp'], $pelanggan['alamat']);
if (isset($response['link_id'])) {
$transaction_id = $response['link_id'];
$transaction_link = $response['link_url'];
$transaction_status = $response['status'];
} else {
$er = implode(",", $response);
throw new Exception($er);
}
}
// Insert into the tagihan table
$stmt = $pdo->prepare("INSERT INTO tagihan
(id_data_server, id_pelanggan, id_profile_paket, id_profile_tagihan, nominal_tagihan, jumlah_tagihan, ppn, total_tagihan, verifikasi_tagihan, keterangan, limit_pembayaran, status, transaction_link, transaction_id, transaction_status, kode_unik)
VALUES (:id_data_server, :id_pelanggan, :id_profile_paket, :id_profile_tagihan, :nominal_tagihan, :jumlah_tagihan, :ppn, :total_tagihan, :verifikasi_tagihan, :keterangan, :limit_pembayaran, :status, :transaction_link, :transaction_id, :transaction_status, :kode_unik)");
$stmt->execute([
':id_data_server' => $pelanggan['id_data_server'],
':id_pelanggan' => $pelanggan['id'],
':id_profile_paket' => $pelanggan['id_profile_paket'],
':id_profile_tagihan' => $pelanggan['id_profile_tagihan'],
':nominal_tagihan' => round($nominal_tagihan),
':jumlah_tagihan' => round($jumlah_tagihan),
':ppn' => round($ppn_amount),
':total_tagihan' => round($total_tagihan),
':verifikasi_tagihan' => round($verifikasi_tagihan),
':keterangan' => $keterangan,
':limit_pembayaran' => $limit_tag,
':status' => $status,
':transaction_link' => $transaction_link,
':transaction_id' => $transaction_id,
':transaction_status' => $transaction_status,
':kode_unik' => $kode_unik,
]);
$last_id = $pdo->lastInsertId();
sweetAlert("Tagihan telah ditambahkan", "success", '?' . encrypt_url('tagihan_detail|' . $last_id . '|tagihan_sedang_berjalan'));
} catch (Exception $e) {
// Handle exceptions and errors gracefully
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
?>
</div>
</div>
</div>
</div>
</div>
</section>
+307
View File
@@ -0,0 +1,307 @@
<?php
$stmt = $pdo->prepare("SELECT * FROM v_tagihan WHERE $SqlSvData id = '$page[1]'");
$stmt->execute();
$data = $stmt->fetchAll();
if ($data[0]['konpensasi'] == 0) {
$datakonpensasi = $data[0]['jumlah_konpensasi'];
} else {
$datakonpensasi = 0;
}
// echo "<pre>";
// print_r($_SERVER);
// echo "</pre>";
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h5>Detail Tagihan</h5>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table class="table table-borderless">
<tbody>
<tr>
<td class="p-1">Status Tagihan</td>
<td class="p-1">:</td>
<td class="p-1">
<?php
if($data[0]['status'] == 'buat') {
echo '<div class="badge badge-warning">Akan datang</div>';
} elseif($data[0]['status'] == 'nunggak') {
echo '<div class="badge badge-danger">Tunggakan</div>';
} elseif($data[0]['status'] == 'lunas') {
echo '<div class="badge badge-success">Telah dibayar</div>';
} else {
echo '<div class="badge badge-primary">Sedang Berjalan</div>';
}
?>
</td>
</tr>
<tr>
<td class="p-1">Id Pelanggan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['akun']; ?></td>
</tr>
<tr>
<td class="p-1">Nama</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama']; ?></td>
</tr>
<tr>
<td class="p-1">Alamat</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['alamat']; ?></td>
</tr>
<tr>
<td class="p-1">Jenis Layanan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['jenis_layanan']; ?></td>
</tr>
<tr>
<td class="p-1">Keterangan Tagihan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['keterangan']; ?></td>
</tr>
<tr>
<td class="p-1">Paket Berlangganan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_paket']; ?></td>
</tr>
<tr>
<td class="p-1">Harga Layanan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['nominal_tagihan']); ?></td>
</tr>
<tr>
<td class="p-1">Jumlah Potongan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['jumlah_konpensasi']); ?></td>
</tr>
<tr>
<td class="p-1">Jumlah Tagihan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['jumlah_tagihan']); ?></td>
</tr>
<tr>
<td class="p-1">PPN 11%</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['ppn']); ?></td>
</tr>
<?php
if($data[0]['kode_unik'] != '0') { ?>
<tr>
<td class="p-1">Subsidi</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['kode_unik'], 0, ',', '.'); ?></td>
</tr>
<?php } ?>
<tr>
<td class="p-1"><b>Total Tagihan</b></td>
<td class="p-1">:</td>
<td class="p-1"><b>Rp. <?php echo number_format($data[0]['verifikasi_tagihan']); ?></b></td>
</tr>
<?php
if(isset($data[0]['transaction_link'])) { ?>
<tr>
<td class="p-1">Status Payment</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['transaction_status']; ?></td>
</tr>
<tr>
<td class="p-1">Link Pembayaran</td>
<td class="p-1">:</td>
<td class="p-1" style="max-width: 200px;">
<?php
$validStat = ['ACTIVE','INACTIVE'];
if (in_array($data[0]['transaction_status'], $validStat)) { ?>
<a href="https://<?php echo $data[0]['transaction_link']; ?>" target="_blank">https://<?php echo $data[0]['transaction_link']; ?></a>
<?php } else { echo "NO LINK"; }?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<div class="col-md-6">
<form method="post" enctype="mulipart/form-data">
<div class="form-group">
<label>Potongan Persentase Perhari</label>
<input class="form-control" value="<?php echo $data[0]['konpensasi']; ?>" type="text" name="potongan">
<i>Masukan jumlah hari dari potongan</i>
</div>
<div class="form-group">
<label>Jumlah Potongan Fix</label>
<input type="text" class="form-control rupiah" value="<?php echo $datakonpensasi; ?>" id="rupiah0" name="nominal">
<i>Masukan nominal potongan</i>
</div>
<?php if(in_array("Ubah", $json_array[4]['sub_menu'])){
$validStatus = ['CANCELLED','CANCEL'];
if (in_array($data[0]['transaction_status'], $validStatus)) { ?>
<input type="submit" name="simpan" class="btn btn-primary btn-sm m-1" value="Ganerate Link Baru">
<?php } else { ?>
<input type="submit" name="simpan" class="btn btn-primary btn-sm m-1" value="Edit / Simpan">
<?php } if($data[0]['status'] != 'buat'){ ?>
<input type="submit" name="kirim" class="btn btn-success btn-sm m-1" value="Kirim Ulang Tagihan">
<?php }} if(in_array("Ubah", $json_array[4]['sub_menu'])){ ?>
<input type="submit" name="hapus" class="btn btn-danger btn-sm m-1" value="Hapus">
<?php } ?>
</form>
<?php
if(isset($_POST['simpan'])) {
try {
$stmt = $pdo->prepare("SELECT * FROM profile_tagihan WHERE id = :id1 ");
$stmt->bindParam(':id1', $data[0]['id_profile_tagihan']);
$stmt->execute();
$profiletag = $stmt->fetchAll();
$ppn = $profiletag[0]['ppn'];
if (empty($_POST['potongan'])) {
$nominal = preg_replace("/[^0-9]/","",$_POST['nominal']);
$konpensasi = 0;
$jumlahkon = $nominal;
$tagihan = $data[0]['nominal_tagihan'] - $jumlahkon ;
} else {
$konpensasi = $_POST['potongan'];
$jumhari = date('t');
$jumlahkon = $data[0]['nominal_tagihan'] / $jumhari * $konpensasi;
$tagihan = $data[0]['nominal_tagihan'] - $jumlahkon ;
}
if ($ppn == 1 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan;
$ppn_amount = 0;
$total_tagihan = round($jumlah_tagihan + $ppn_amount);
$kode_unik = 0;
$verifikasi_tagihan = round($total_tagihan + $kode_unik);
}
elseif($ppn == 2 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan;
$ppn_amount = $jumlah_tagihan / 100 * 11;
$total_tagihan = round($jumlah_tagihan + $ppn_amount);
$kode_unik = 0;
$verifikasi_tagihan = round($total_tagihan + $kode_unik);
}
elseif($ppn == 3 ) {
$nominal_tagihan = $tagihan - ($tagihan / 100 * 9.91);
$jumlah_tagihan = $tagihan - ($tagihan / 100 * 9.91);
$ppn_amount = $jumlah_tagihan / 100 * 11;
$total_tagihan = round($jumlah_tagihan + $ppn_amount);
$kode_unik = 0;
$verifikasi_tagihan = round($total_tagihan + $kode_unik);
}
elseif($ppn == 4 ) {
$nominal_tagihan = $tagihan;
$jumlah_tagihan = $tagihan;
$ppn_amount = $jumlah_tagihan / 100 * 11;
$total_tagihan = round($jumlah_tagihan + $ppn_amount);
$kode_unik = substr($total_tagihan, -3);
$verifikasi_tagihan = round($total_tagihan - $kode_unik);
}
// Cari Payment Gateway
$stmt = $pdo->prepare("SELECT payment_gateway,apikey_payment_gateway,url_payment_gateway,status_payment_gateway FROM data_server WHERE id = :id_data ");
$stmt->bindParam(':id_data', $data[0]['id_data_server'], PDO::PARAM_INT);
$stmt->execute();
$paygw = $stmt->fetchAll(PDO::FETCH_ASSOC);
// print_r($paygw);
//Jika menggunakan payment gateway
if (!empty($paygw[0]['apikey_payment_gateway']) && isset($paygw[0]['status_payment_gateway']) && $paygw[0]['status_payment_gateway'] === 'ACTIVE') {
require 'payment/flip/Flip/Transaction.php';
$apiKey = $paygw[0]['apikey_payment_gateway'];
$apiUrl = $paygw[0]['url_payment_gateway'];
$transactionId = $data[0]['transaction_id'];
$status = $data[0]['transaction_status'];
$title = $data[0]['keterangan'];
$amount = $verifikasi_tagihan;
// echo $apiUrl;
//Buat Fungsion Flip Payment Gateway
$flip = new FlipPaymentGateway($apiKey,$apiUrl);
if ($status == 'ACTIVE') {
$response = $flip->editBill($transactionId,$status,$title, $amount);
} else {
$response = $flip->createBill($title, $amount, $data[0]['email'], $data[0]['nama'], $data[0]['nomor_whatsapp'], $data[0]['alamat']);
}
// echo $verifikasi_tagihan;
// print_r($response);
$transaction_id = $response['link_id'];
$transaction_link = $response['link_url'];
$transaction_status = $response['status'];
}
else {
$transaction_id = "";
$transaction_link = "";
$transaction_status = "";
}
$stmt = $pdo->prepare("UPDATE tagihan SET konpensasi = :konpensasi, jumlah_konpensasi = :jumlahkon, jumlah_tagihan = :jumlah_tagihan, ppn = :ppn, total_tagihan = :total_tagihan, verifikasi_tagihan = :verifikasi_tagihan, transaction_id = :transaction_id, transaction_link = :transaction_link, transaction_status = :transaction_status, kode_unik = :kode_unik WHERE id = :idtag");
$stmt->bindParam(':jumlahkon', $jumlahkon);
$stmt->bindParam(':jumlah_tagihan', $jumlah_tagihan);
$stmt->bindParam(':ppn', $ppn_amount);
$stmt->bindParam(':total_tagihan', $total_tagihan);
$stmt->bindParam(':verifikasi_tagihan', $verifikasi_tagihan);
$stmt->bindParam(':konpensasi', $konpensasi);
$stmt->bindParam(':transaction_id', $transaction_id);
$stmt->bindParam(':transaction_link', $transaction_link);
$stmt->bindParam(':transaction_status', $transaction_status);
$stmt->bindParam(':kode_unik', $kode_unik);
$stmt->bindParam(':idtag', $page[1]);
$stmt->execute();
sweetAlert("Tagihan telah di edit", "success");
} catch (PDOException $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
}
}
if (isset($_POST['kirim']))
{
// KIRIM PESAN WHATSAPP
$phone = array($data[0]['nomor_whatsapp']);
$API_WA = new PesanWA();
$API_WA->Create_Pesan($data[0]['id_data_server'], $page[1], 'pesan_kirim_tagihan', 'tag');
$Pesan = $API_WA->Get_Pesan();
$API_WA->Send_Pesan($data[0]['id_data_server'], 'sendMessage', $phone, $Pesan);
if($API_WA){
// echo $data[0]['id_data_server']. 'sendMessage'. $phone. $Pesan;
sweetAlert("Tagihan Akan Segera di Kirim", "success");
}
}
if (isset($_POST['hapus']))
{
$iddata = $data[0]['id'];
deleteAlert("tagihan",$iddata, '?'.encrypt_url($page[2]) );
}
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
+293
View File
@@ -0,0 +1,293 @@
<?php
// error_reporting(1);
// ini_set('display_errors', 1);
// $idtag = substr($_SERVER['QUERY_STRING'],-10);
$stmt = $pdo->prepare("SELECT * FROM v_tagihan WHERE $SqlSvData id = '$page[1]' AND status = 'lunas'");
$stmt->execute();
$data = $stmt->fetchAll();
if ($data[0]['konpensasi'] == 0) {
$datakonpensasi = $data[0]['jumlah_konpensasi'];
} else {
$datakonpensasi = 0;
}
// echo "<pre>";
// print_r($_SERVER);
// echo "</pre>";
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-success">
<div class="row">
<div class="col-sm-6">
<h5>Detail Tagihan Lunas</h5>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table class="table table-borderless">
<tbody>
<tr>
<td class="p-1">Status Tagihan</td>
<td class="p-1">:</td>
<td class="p-1">
<?php
if($data[0]['status'] == 'buat') {
echo '<div class="badge badge-warning">Akan datang</div>';
} elseif($data[0]['status'] == 'nunggak') {
echo '<div class="badge badge-danger">Tunggakan</div>';
} elseif($data[0]['status'] == 'lunas') {
echo '<div class="badge badge-success">Telah dibayar lunas</div>';
} else {
echo '<div class="badge badge-primary">Sedang Berjalan</div>';
}
?>
</td>
</tr>
<tr>
<td class="p-1">Id Pelanggan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['akun']; ?></td>
</tr>
<tr>
<td class="p-1">Nama</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama']; ?></td>
</tr>
<tr>
<td class="p-1">Alamat</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['alamat']; ?></td>
</tr>
<tr>
<td class="p-1">Jenis Layanan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['jenis_layanan']; ?></td>
</tr>
<tr>
<td class="p-1">Keterangan Tagihan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['keterangan']; ?></td>
</tr>
<tr>
<td class="p-1">Paket Berlangganan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_paket']; ?></td>
</tr>
<tr>
<td class="p-1">Harga Layanan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['nominal_tagihan']); ?></td>
</tr>
<tr>
<td class="p-1">Jumlah Potongan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['jumlah_konpensasi']); ?></td>
</tr>
<tr>
<td class="p-1">Jumlah Tagihan</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['jumlah_tagihan']); ?></td>
</tr>
<tr>
<td class="p-1">PPN 11%</td>
<td class="p-1">:</td>
<td class="p-1">Rp. <?php echo number_format($data[0]['ppn']); ?></td>
</tr>
<?php
if($data[0]['kode_unik'] != '0') { ?>
<tr>
<td class="p-1">Kode Unik</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['kode_unik']; ?></td>
</tr>
<?php } ?>
<tr>
<td class="p-1"><b>Total Tagihan</b></td>
<td class="p-1">:</td>
<td class="p-1"><b>Rp. <?php echo number_format($data[0]['verifikasi_tagihan']); ?></b></td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-6">
<center>
<h6>Bukti Pembayaran</h6><hr>
<img src="img/user/<?php echo $data[0]['bukti_pembayaran']; ?>" height="400px"><br>
<h6>Kwitansi Lunas</h6><hr>
<img src="invoice/<?php echo $data[0]['img_invoice']; ?>" width="100%">
</center>
</div>
</div>
<div class="modal-footer">
<form method="post" enctype="mulipart/form-data">
<?php if(in_array("Bayar", $json_array[4]['sub_menu'])){ ?>
<input type="submit" name="return" class="btn btn-primary btn-sm m-1" value="Return Pembayaran">
<input type="submit" name="kirim" class="btn btn-success btn-sm m-1" value="Kirim Ulang Kwitansi">
<input type="submit" name="thermal" class="btn btn-warning btn-sm m-1" value="Ganerate Struk">
<?php } ?>
</form>
</div>
<?php
if (isset($_POST['return'])) {
try {
$user = $data[0]['akun'];
$userHs = $data[0]['user_hotspot'];
// Get Mikrotik Setting
$Mikro = $pdo->prepare("SELECT ip_address, port_api, username, password FROM setting_mikrotik WHERE id = :idset");
$Mikro->bindParam(':idset', $data[0]['id_setting_mikrotik'], PDO::PARAM_INT);
$Mikro->execute();
$Mikrot = $Mikro->fetchAll(PDO::FETCH_ASSOC);
$m_ip = $Mikrot[0]['ip_address'];
$m_user = $Mikrot[0]['username'];
$m_pass = $Mikrot[0]['password'];
$m_port = $Mikrot[0]['port_api'];
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($m_ip, $m_user, $m_pass, $m_port)) {
// Cek jenis layanan
if ($data[0]['jenis_layanan'] == 'Hotspot') {
// Hotspot
$arrIDh = $API->comm("/ip/hotspot/user/getall", [
".proplist" => ".id",
"?name" => $userHs,
]);
if (!empty($arrIDh)) {
$API->comm("/ip/hotspot/user/set", [
".id" => $arrIDh[0][".id"],
"disabled" => "true",
]);
$arrIDha = $API->comm("/ip/hotspot/active/getall", [
".proplist" => ".id",
"?user" => $userHs,
]);
if (!empty($arrIDha)) {
$API->comm("/ip/hotspot/active/remove", [
".id" => $arrIDha[0][".id"],
]);
}
} else {
throw new Exception('Akun Hotspot tidak ada di Mikrotik');
}
} else {
// PPPOE
$arrID = $API->comm("/ppp/secret/getall", [
".proplist" => ".id",
"?name" => $user,
]);
if (!empty($arrID)) {
$API->comm("/ppp/secret/set", [
".id" => $arrID[0][".id"],
"disabled" => "true",
]);
$arrID1 = $API->comm("/ppp/active/getall", [
".proplist" => ".id",
"?name" => $user,
]);
if (!empty($arrID1)) {
$API->comm("/ppp/active/remove", [
".id" => $arrID1[0][".id"],
]);
}
} else {
throw new Exception('Akun PPPOE tidak ada di Mikrotik');
}
}
// Update status tagihan dan hapus transaksi
$idtag = $page[1];
$stmt = $pdo->prepare("UPDATE tagihan SET status = 'pending' WHERE id = :idtag");
$stmt->bindParam(':idtag', $idtag, PDO::PARAM_INT);
$stmt->execute();
$stmt = $pdo->prepare("DELETE FROM transaksi WHERE id_tagihan = :idtag");
$stmt->bindParam(':idtag', $idtag, PDO::PARAM_INT);
$stmt->execute();
// Success alert
sweetAlert("Return Tagihan Berhasil", "success", "?".encrypt_url('tagihan_sedang_berjalan'));
} else {
throw new Exception('Gagal terhubung ke Mikrotik');
}
} catch (PDOException $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
} catch (Exception $e) {
sweetAlert("Gagal: " . $e->getMessage(), "error");
}
}
if (isset($_POST['kirim'])) {
$Nomor = array($data[0]['nomor_whatsapp']);
$Url = baseurl('invoice/'.$data[0]['img_invoice']);
$Pesan = "Kwitansi Pembayaran bulan ".formatIndo($data[0]['tanggal_bayar'], 'F Y');
$APIwa = new PesanWA();
$APIwa->Send_Pesan($data[0]['id_data_server'],'sendMediaFromUrl',$Nomor,$Pesan,$Url);
sweetAlert("Kwitansi telah dikirim ulang", "success");
}
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['thermal'])) {
require("invoice/thermal.php");
// Pastikan variabel $data sudah tersedia
if (!isset($data) || !is_array($data) || empty($data[0])) {
die("Data tidak ditemukan!");
}
$lebar = 45; // 4.5 cm = 45 mm
$tinggi = 100; // Sesuaikan tinggi sesuai kebutuhan
$margin = 2; // Margin 2 mm
$pdf = new PDF($lebar, $tinggi, $margin);
$items = [
['Nama', ':', $data[0]['nama']],
['No. Id', ':', $data[0]['akun']],
['Nominal', ':', 'Rp. ' . number_format($data[0]['verifikasi_tagihan'])],
['Server', ':', $data[0]['nama_server']],
['Marketing', ':', $data[0]['nama_marketing']],
['Pelunas', ':', $data[0]['pelunas']],
['Keterangan', ':', $data[0]['catatan']],
];
$pdf->dataItems($items, $data[0]['tanggal_bayar'], formatIndo($data[0]['limit_pembayaran'], 'F Y'));
$outputPath = "invoice/thermal/INV-" . preg_replace("/[^a-zA-Z0-9]/", "_", $data[0]['nama']) . "-" . $data[0]['tanggal_bayar'] . ".pdf";
$pdf->Output('F', $outputPath);
echo '<script type="text/javascript">window.open("' . $outputPath . '", "_blank")</script>';
}
?>
+170
View File
@@ -0,0 +1,170 @@
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/2.2.1/css/dataTables.dataTables.css">
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
<script src="https://cdn.datatables.net/2.2.1/js/dataTables.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
<script>
const ENCRYPTION_KEY = CryptoJS.enc.Hex.parse('9a307dfcf16ac2e4406b1a59a31c1d096eafe37e40c60ddee4bb827b6a947079');
function encrypt_url_js(data) {
const iv = CryptoJS.lib.WordArray.random(16);
const encrypted = CryptoJS.AES.encrypt(data, ENCRYPTION_KEY, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
// IV ke hex
const ivHex = iv.toString(CryptoJS.enc.Hex);
// Ciphertext base64
const encryptedBase64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
// Gabung ivHex + "::" + encryptedBase64 (string)
const combined = ivHex + "::" + encryptedBase64;
// Base64 encode seluruh string agar aman
return btoa(combined);
}
</script>
<section class="content" style="zoom: 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Tagihan Lunas</h4>
</div>
<div class="col-sm-6 text-right">
<!-- Placeholder untuk tombol filter atau aksi tambahan -->
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="tableLunas" class="table table-bordered table-striped" style="width: 100%;">
<thead>
<tr class="bg-success">
<th>No</th>
<th>Nama</th>
<th>Id Pelanggan</th>
<th>Alamat</th>
<th>Keterangan</th>
<th>Paket Berlanggan</th>
<th>Jumlah Tagihan</th>
<th>Nama Server</th>
<th>Tgl Bayar</th>
<th>Marketing</th>
<th>Pelunas</th>
<th>Catatan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<!-- Data akan dimuat melalui server-side processing -->
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
<script>
$(document).ready(function () {
$('#tableLunas').DataTable({
processing: true,
serverSide: true,
responsive: true,
autoWidth: false,
ajax: {
url: "list_data/list_tagihan_lunas.php?idsv=<?php echo $SqlSvData; ?>",
type: "GET"
},
columns: [
{ data: 'id', render: (data, type, row, meta) => meta.row + 1 }, // Nomor urut
{ data: 'nama' },
{ data: 'akun' },
{ data: 'alamat' },
{ data: 'keterangan' },
{ data: 'nama_paket' },
{
data: 'verifikasi_tagihan',
render: data => `Rp. ${parseInt(data).toLocaleString('id-ID')}`
},
{ data: 'nama_server' },
{ data: 'tanggal_bayar' },
{ data: 'nama_marketing' },
{ data: 'pelunas' },
{ data: 'catatan' },
{
data: 'id',
render: data => {
const encryptedUrl = encrypt_url_js('tagihan_detail_lunas|' + data);
return `
<a href="?${encryptedUrl}" class="btn btn-sm btn-info m-1">Detail</a>
<form method="POST" action="" style="display:inline;">
<input type="hidden" name="thermal" value="${data}">
<button type="submit" class="btn btn-sm btn-secondary m-1">Struk</button>
</form>
`;
}
}
],
order: [[8, 'desc']], // Mengurutkan berdasarkan Tgl Bayar
columnDefs: [
{ targets: 3, width: "250px" }, // Alamat
{ targets: 4, width: "250px" }, // Keterangan
],
language: {
infoFiltered: "" // Menonaktifkan teks "(filtered from X total entries)"
}
});
});
</script>
<?php
if (isset($_POST['thermal'])) {
require("invoice/thermal.php");
$idpost = $_POST['thermal'];
$stmt = $pdo->prepare("SELECT nama, akun, verifikasi_tagihan, nama_server, nama_marketing, pelunas, catatan, tanggal_bayar, limit_pembayaran FROM v_tagihan WHERE id = :id");
$stmt->bindParam(':id', $idpost, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Pastikan variabel $data sudah tersedia
if (!isset($data) || !is_array($data) || empty($data[0])) {
die("Data tidak ditemukan!");
}
$lebar = 45; // 4.5 cm = 45 mm
$tinggi = 90; // Sesuaikan tinggi sesuai kebutuhan
$margin = 2; // Margin 2 mm
$pdf = new PDF($lebar, $tinggi, $margin);
$items = [
['Nama', ':', $data[0]['nama']],
['No. Id', ':', $data[0]['akun']],
['Nominal', ':', 'Rp. ' . number_format($data[0]['verifikasi_tagihan'])],
['Server', ':', $data[0]['nama_server']],
['Marketing', ':', $data[0]['nama_marketing']],
['Pelunas', ':', $data[0]['pelunas']],
['Keterangan', ':', $data[0]['catatan']],
];
$pdf->dataItems($items, $data[0]['tanggal_bayar'], formatIndo($data[0]['limit_pembayaran'], 'F Y'));
$outputPath = "invoice/thermal/INV-" . preg_replace("/[^a-zA-Z0-9]/", "_", $data[0]['nama']) . "-" . $data[0]['tanggal_bayar'] . ".pdf";
$pdf->Output('F', $outputPath);
echo '<script type="text/javascript">window.open("' . $outputPath . '", "_blank")</script>';
}
?>
+77
View File
@@ -0,0 +1,77 @@
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Tagihan Sedang Berjalan</h4>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr class="bg-primary">
<th style="max-width: 20px">No</th>
<th>Nama</th>
<th>Id Pelanggan</th>
<th>Alamat</th>
<th>Keterangan</th>
<th>Paket Berlanggan</th>
<th>Jumlah Tagihan</th>
<?php echo ($statuspaygw == "ACTIVE") ? '<th>Payment Link</th>' : ''; ?>
<th>Nama Server</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$no = 1;
$chunkSize = 200;
$stmt = $pdo->query("SELECT COUNT(id) FROM v_tagihan WHERE $SqlSvData status IN ('pending','pending1')");
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT * FROM v_tagihan WHERE $SqlSvData status IN ('pending','pending1') LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
foreach ($data as $row) {
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td style="max-width: 150px"><?php echo $row['nama']; ?></td>
<td style="max-width: 150px"><?php echo $row['akun']; ?></td>
<td style="max-width: 200px"><?php echo $row['alamat']; ?></td>
<td style="max-width: 200px"><?php echo $row['keterangan']; ?></td>
<td><?php echo $row['nama_paket']; ?></td>
<td>Rp. <?php echo number_format($row['verifikasi_tagihan']); ?></td>
<?php echo ($statuspaygw == "ACTIVE") ? '<td style="max-width: 200px">'.$row['transaction_link'].'</td>' : ''; ?>
<td style="max-width: 200px"><?php echo $row['nama_server']; ?></td>
<td>
<?php if(in_array("Bayar", $json_array[4]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('tagihan_bayar|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-primary btn-sm m-1">Bayar</a>
<?php } ?>
<a href="?<?php echo encrypt_url('tagihan_detail|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-info btn-sm m-1">Detail</a>
</td>
</tr>
<?php
$no++;
}} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+76
View File
@@ -0,0 +1,76 @@
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Tunggakan Tagihan</h4>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr class="bg-danger">
<th style="max-width: 20px">No</th>
<th>Nama</th>
<th>Id Pelanggan</th>
<th>Alamat</th>
<th>Keterangan</th>
<th>Paket Berlanggan</th>
<th>Jumlah Tagihan</th>
<th>Nama Server</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$no = 1;
$chunkSize = 200;
$stmt = $pdo->query("SELECT COUNT(id) FROM v_tagihan WHERE $SqlSvData $tagihanJalan status = 'lewat'");
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT * FROM v_tagihan WHERE $SqlSvData $tagihanJalan status = 'lewat' LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
foreach ($data as $row) {
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td style="max-width: 150px"><?php echo $row['nama']; ?></td>
<td style="max-width: 150px"><?php echo $row['akun']; ?></td>
<td style="max-width: 200px"><?php echo $row['alamat']; ?></td>
<td style="max-width: 200px"><?php echo $row['keterangan']; ?></td>
<td><?php echo $row['nama_paket']; ?></td>
<td>Rp. <?php echo number_format($row['verifikasi_tagihan']); ?></td>
<td style="max-width: 200px"><?php echo $row['nama_server']; ?></td>
<td>
<?php if(in_array("Bayar", $json_array[4]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('tagihan_bayar|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-primary btn-sm m-1">Bayar</a>
<?php } ?>
<a href="?<?php echo encrypt_url('tagihan_detail|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-info btn-sm m-1">Detail</a>
</td>
</tr>
<?php
$no++;
}} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+95
View File
@@ -0,0 +1,95 @@
<!-- Main content -->
<section class="content" style="zoom: 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Tiket Gangguan</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<?php if(in_array("Tambah", $json_array[36]['sub_menu'])) { ?>
<a class="btn btn-danger btn-sm" href="?<?php echo encrypt_url('tiket_buat_baru') ?>">Buat Tiket</a>
<?php } ?>
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead class="bg-warning">
<tr>
<th>No</th>
<th>Time</th>
<th>Nama Server</th>
<th>Jenis</th>
<th>Keterangan</th>
<th>Lokasi</th>
<th>Koordinat</th>
<th>URL Tracking</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_tiket_gangguan WHERE status = '1' $SqlDataId");
while ($server = mysqli_fetch_assoc($aserver)) {
if ($server['jenis_tiket'] == 'Pelanggan') {
$ket = '<a href="?'.encrypt_url('user_detail|'.$server['id_pelanggan']).'"><b>'.$server['nama_pelanggan'].'</b></a><br>'.$server['permasalahan'];
} else {
$ket = $server['permasalahan'];
}
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 75px;"><?php echo $server['start_time']; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['jenis_tiket']; ?></td>
<td style="max-width: 150px;"><?php echo $ket; ?></td>
<td style="max-width: 150px;"><?php echo $server['lokasi']; ?></td>
<td style="max-width: 150px;"><a href="https://www.google.com/maps/search/?api=1&query=<?php echo $server['latitude'].', '.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td style="max-width: 150px;"><a href="<?= 'https://manjapro.net/tracking/' . $server['tiket_id']; ?>" target="_blank"><?= 'https://manjapro.net/tracking/' . $server['tiket_id']; ?></a></td>
<td>
<form method="post">
<?php if(in_array("Ubah", $json_array[36]['sub_menu'])) { ?>
<input type="submit" name="proses<?php echo $server['id'];?>" value="Proses Tiket" class="btn btn-primary btn-sm ml-1" />
<?php } if(in_array("Hapus", $json_array[36]['sub_menu'])) { ?>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
<?php } ?>
</form>
</td>
</tr>
<?php
if (isset($_POST['proses'.$server['id']])) {
$waktu = date('Y-m-d H:i:s');
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET id_penyelesai_tiket = :idpenyet, sebelum_proses_time = :waktu, status = '2' WHERE id = :idtik");
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':idpenyet', $UserId, PDO::PARAM_INT);
$stmt->bindParam(':idtik', $server['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket akan di proses", "success", "?".encrypt_url('tiket_proses'));
}
if (isset($_POST['hapus'.$server['id']])) {
$iddata = $server['id'];
deleteAlert("tiket_gangguan", $iddata);
}
$no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+205
View File
@@ -0,0 +1,205 @@
<?php
$idTiket = array();
$listid = mysqli_query($con,"SELECT id_pelanggan FROM tiket_gangguan WHERE status IN (1,2,3,4) $SqlDataId");
while ($tiapId = mysqli_fetch_assoc($listid)) {
$idTiket[] = $tiapId['id_pelanggan'];
}
// print_r($idTiket);
$datapel = array();
$ambil = $con->query("SELECT * FROM pelanggan WHERE status ='aktif' $SqlDataId ORDER BY nama ASC");
while ($tiap = $ambil->fetch_assoc()) {
$datapel[] = $tiap;
}
// echo base_url();
// echo encryptNumberID('123');
?>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-primary">
<div class="row">
<div class="col-sm-6">
<h5>Buat Tiket</h5>
</div>
<div class="col-sm-6"></div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Pilih Server</label>
<select class="form-control" required="required" name="ids">
<option value="">Pilih</option>
<?php
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>"><?php echo htmlspecialchars($value['nama_server']); ?></option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jenis Gangguan</label>
<select id="jenis" class="form-control" name="jenis">
<option value="">Pilih Jenis</option>
<option value="Pelanggan">Pelanggan</option>
<option value="Jalur Utama">Jalur Utama</option>
<option value="Lainnya">Lainnya</option>
</select>
</div>
</div>
</div>
<div id="form-content"></div>
</div>
<div class="card-footer">
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['tambah'])) {
$cekinput = true;
if ($_POST['jenis'] == 'Pelanggan') {
if(!in_array($_POST['pelanggan'],$idTiket)) {
$stmt = $pdo->prepare("SELECT id_data_server, alamat, latitude, longitude FROM pelanggan WHERE id = :idp");
$stmt->bindParam(':idp', $_POST['pelanggan'], PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$idds = $result['id_data_server'];
$idpel = $_POST['pelanggan'];
$idpet = $UserId;
$jenis = $_POST['jenis'];
$permasalahan = $_POST['masalah'];
$timestart = date('Y-m-d H:i:s');
$lokasi = $result['alamat'];
$latitude = $result['latitude'];
$longitude = $result['longitude'];
} else {
$cekinput = false;
}
} else {
$idds = $_POST['ids'];
$idpel = '0';
$idpet = $UserId;
$jenis = $_POST['jenis'];
$permasalahan = $_POST['masalah'];
$timestart = date('Y-m-d H:i:s');
$lokasi = $_POST['tempat'];
$latitude = NULL;
$longitude = NULL;
}
$stmt = $pdo->prepare("INSERT INTO tiket_gangguan (id_data_server, id_pelanggan, id_pembuat_tiket, jenis_tiket, permasalahan, start_time, status, lokasi, latitude, longitude) VALUES
(:idds, :idpel, :idpet, :jenis, :permasalahan, :timestart, '1', :lokasi, :latitude, :longitude)");
$stmt->bindParam(':idds', $idds, PDO::PARAM_INT);
$stmt->bindParam(':idpel', $idpel, PDO::PARAM_INT);
$stmt->bindParam(':idpet', $idpet, PDO::PARAM_INT);
$stmt->bindParam(':jenis', $jenis);
$stmt->bindParam(':permasalahan', $permasalahan);
$stmt->bindParam(':timestart', $timestart);
$stmt->bindParam(':lokasi', $lokasi);
$stmt->bindParam(':latitude', $latitude);
$stmt->bindParam(':longitude', $longitude);
$stmt->execute();
$lastId = $pdo->lastInsertId();
if($cekinput){
$tiketId = encryptNumberID($lastId);
// 4. Update kolom tiket_id
$update = $pdo->prepare("UPDATE tiket_gangguan SET tiket_id = :tiket_id WHERE id = :id");
$update->bindParam(':tiket_id', $tiketId);
$update->bindParam(':id', $lastId, PDO::PARAM_INT);
$update->execute();
sweetAlert("Tiket gangguan telah dibuat", "success", "?".encrypt_url('tiket_buat'));
}
else {
sweetAlert("Pelanggan sudah di buatkan Tiket atau Tiket masih dalam proses", "error");
}
}
?>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
const jenisSelect = document.getElementById('jenis');
const formContent = document.getElementById('form-content');
// Show appropriate form based on selected type
jenisSelect.addEventListener('change', function() {
const jenis = this.value;
formContent.innerHTML = '';
if (jenis === 'Pelanggan') {
formContent.innerHTML = `
<div class="form-group">
<label>Nama Pelanggan</label>
<select class="form-control select2bs4" name="pelanggan" required="required">
<option value="">Pilih</option>
${<?php echo json_encode($datapel); ?>.map(pelanggan =>
`<option value="${pelanggan.id}">${pelanggan.nama} (${pelanggan.alamat})</option>`
).join('')}
</select>
</div>
<div class="form-group">
<label>Indikasi Masalah</label>
<textarea name="masalah" rows="5" class="form-control" required="required"></textarea>
</div>
<input type="hidden" name="jenis1" value="${jenis}">
`;
$('.select2bs4').select2({
theme: 'bootstrap4',
placeholder: 'Pilih Pelanggan',
allowClear: true
});
} else if (jenis === 'Jalur Utama' || jenis === 'Lainnya') {
formContent.innerHTML = `
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Tempat</label>
<input type="text" class="form-control" name="tempat" required="required">
</div>
<div class="form-group">
<label>Indikasi Masalah</label>
<textarea name="masalah" rows="5" class="form-control" required="required"></textarea>
</div>
</div>
<div class="col-md-6">
</div>
</div>
`;
// Initialize map after content is added
if (typeof initMap === 'function') {
initMap();
}
}
});
// Pre-select the previous value
const previousJenis = "<?php echo $_POST['jenis'] ?? ''; ?>";
if (previousJenis) {
jenisSelect.value = previousJenis;
jenisSelect.dispatchEvent(new Event('change'));
}
});
</script>
+89
View File
@@ -0,0 +1,89 @@
<!-- Main content -->
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Proses Tiket Gangguan</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead class="bg-primary">
<tr>
<th>No</th>
<th>Time</th>
<th>Nama Server</th>
<th>Jenis</th>
<th>Keterangan</th>
<th>Lokasi</th>
<th>Koordinat</th>
<th>URL Tracking</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_tiket_gangguan WHERE status IN ('2','3','4') $SqlDataId ORDER BY status");
while ($server = mysqli_fetch_assoc($aserver)) {
if ($server['jenis_tiket'] == 'Pelanggan') {
$ket = '<a href="?'.encrypt_url('user_detail|'.$server['id_pelanggan']).'"><b>'.$server['nama_pelanggan'].'</b></a><br>'.$server['permasalahan'];
} else {
$ket = $server['permasalahan'];
}
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 75px;"><?php echo $server['start_time']; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['jenis_tiket']; ?></td>
<td style="max-width: 150px;"><?php echo $ket; ?></td>
<td style="max-width: 150px;"><?php echo $server['lokasi']; ?></td>
<td style="max-width: 150px;"><a href="https://www.google.com/maps/search/?api=1&query=<?php echo $server['latitude'].', '.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td style="max-width: 150px;"><a href="<?= 'https://manjapro.net/tracking/' . $server['tiket_id']; ?>" target="_blank"><?= 'https://manjapro.net/tracking/' . $server['tiket_id']; ?></a></td>
<td>
<?php
if($server['status'] == '2' OR $server['status'] == '3') {
echo '<a href="?'.encrypt_url('tiket_update_proses|'.$server['id']).'" type="button" class="btn btn-primary btn-sm ml-1">Update Proses</a>'; }
elseif($server['status'] == '4') {
echo '<a href="?'.encrypt_url('tiket_update_proses|'.$server['id']).'" type="button" class="btn btn-secondary btn-sm ml-1">Verifikasi</a>'; }
elseif($server['status'] == '5') {
echo '<a href="?'.encrypt_url('tiket_update_proses|'.$server['id']).'" type="button" class="btn btn-success btn-sm ml-1">Detail</a>'; }
?>
</td>
</tr>
<?php
if (isset($_POST['proses'.$server['id']])) {
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET id_penyelesai_tiket = :idpenyet, status = '2' WHERE id = :idtik");
$stmt->bindParam(':idpenyet', $UserId, PDO::PARAM_INT);
$stmt->bindParam(':idtik', $server['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket akan di proses", "success");
}
if (isset($_POST['hapus'.$server['id']])) {
$iddata = $server['id'];
deleteAlert("tiket_gangguan", $iddata);
}
$no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+89
View File
@@ -0,0 +1,89 @@
<!-- Main content -->
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Proses Tiket Gangguan</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead class="bg-success">
<tr>
<th>No</th>
<th>Time</th>
<th>Nama Server</th>
<th>Jenis</th>
<th>Keterangan</th>
<th>Lokasi</th>
<th>Koordinat</th>
<th>URL Tracking</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT * FROM v_tiket_gangguan WHERE status = '5' $SqlDataId ORDER BY telah_proses_time DESC");
while ($server = mysqli_fetch_assoc($aserver)) {
if ($server['jenis_tiket'] == 'Pelanggan') {
$ket = '<a href="?'.encrypt_url('user_detail|'.$server['id_pelanggan']).'"><b>'.$server['nama_pelanggan'].'</b></a><br>'.$server['permasalahan'];
} else {
$ket = $server['permasalahan'];
}
?>
<tr>
<td style="max-width: 30px;"><?php echo $no; ?></td>
<td style="max-width: 75px;"><?php echo $server['start_time']; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['jenis_tiket']; ?></td>
<td style="max-width: 150px;"><?php echo $ket; ?></td>
<td style="max-width: 150px;"><?php echo $server['lokasi']; ?></td>
<td style="max-width: 150px;"><a href="https://www.google.com/maps/search/?api=1&query=<?php echo $server['latitude'].', '.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td style="max-width: 150px;"><a href="<?= 'https://manjapro.net/tracking/' . $server['tiket_id']; ?>" target="_blank"><?= 'https://manjapro.net/tracking/' . $server['tiket_id']; ?></a></td>
<td>
<?php
if($server['status'] == '2' OR $server['status'] == '3') {
echo '<a href="?'.encrypt_url('tiket_update_proses|'.$server['id']).'" type="button" class="btn btn-primary btn-sm ml-1">Update Proses</a>'; }
elseif($server['status'] == '4') {
echo '<a href="?'.encrypt_url('tiket_update_proses|'.$server['id']).'" type="button" class="btn btn-secondary btn-sm ml-1">Verifikasi</a>'; }
elseif($server['status'] == '5') {
echo '<a href="?'.encrypt_url('tiket_update_proses|'.$server['id']).'" type="button" class="btn btn-success btn-sm ml-1">Detail</a>'; }
?>
</td>
</tr>
<?php
if (isset($_POST['proses'.$server['id']])) {
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET id_penyelesai_tiket = :idpenyet, status = '2' WHERE id = :idtik");
$stmt->bindParam(':idpenyet', $UserId, PDO::PARAM_INT);
$stmt->bindParam(':idtik', $server['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket akan di proses", "success");
}
if (isset($_POST['hapus'.$server['id']])) {
$iddata = $server['id'];
deleteAlert("tiket_gangguan", $iddata);
}
$no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+235
View File
@@ -0,0 +1,235 @@
<?php
$stmt = $pdo->prepare("SELECT * FROM v_tiket_gangguan WHERE $SqlSvData id = '$page[1]'");
$stmt->execute();
$data = $stmt->fetchAll();
// echo "<pre>";
// print_r($data);
// echo "</pre>";
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-secondary">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Proses Tiket Gangguan</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<form method="post" enctype="multipart/form-data">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table class="table table-borderless">
<tbody>
<tr>
<td class="p-1">Status</td>
<td class="p-1">:</td>
<td class="p-1">
<?php
if($data[0]['status'] == '1') {
echo '<div class="badge badge-warning">Dalam Antrian</div>';
} elseif($data[0]['status'] == '2') {
echo '<div class="badge badge-primary">Akan di Proses</div>';
} elseif($data[0]['status'] == '3') {
echo '<div class="badge badge-primary">Sedang di Proses</div>';
} elseif($data[0]['status'] == '4') {
echo '<div class="badge badge-secondary">Sedang di Verifikasi</div>';
} else {
echo '<div class="badge badge-success">Tiket Selesai</div>';
}
?>
</td>
</tr>
<tr>
<td class="p-1">Dibuat Oleh</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_pembuat']; ?></td>
</tr>
<tr>
<td class="p-1">Waktu Dibuat Tiket</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['start_time']; ?></td>
</tr>
<tr>
<td class="p-1">Jenis Gangguan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['jenis_tiket']; ?></td>
</tr>
<?php if($data[0]['jenis_tiket'] == "Pelanggan") { ?>
<tr>
<td class="p-1">Nama Pelanggan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_pelanggan']; ?></td>
</tr>
<?php } ?>
<tr>
<td class="p-1">Lokasi Gangguan</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['lokasi']; ?></td>
</tr>
<tr>
<td class="p-1">Titik Koordinat</td>
<td class="p-1">:</td>
<td class="p-1"><a href="https://www.google.com/maps/search/?api=1&query=<?php echo $data[0]['latitude'].','.$data[0]['longitude']; ?>" target="_blank"><?php echo $data[0]['latitude'].', '.$data[0]['longitude']; ?></a></td>
</tr>
<tr>
<td class="p-1">Indikasi Masalah</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['permasalahan']; ?></td>
</tr>
<tr style="border-top: 1px solid #d3d3d3;">
<td class="p-1">Mulai di Proses</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['sebelum_proses_time']; ?></td>
</tr>
<tr>
<td class="p-1">Di Proses Oleh</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['nama_penyelesai']; ?></td>
</tr>
<?php if($data[0]['status'] == 4 OR $data[0]['status'] == 5) { ?>
<tr style="border-top: 1px solid #d3d3d3;">
<td class="p-1">Selesai di Proses</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['telah_proses_time']; ?></td>
</tr>
<tr>
<td class="p-1">Catatan Penyelesaian</td>
<td class="p-1">:</td>
<td class="p-1"><?php echo $data[0]['penyelesaian']; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<div class="col-md-6">
<center>
<div class="row">
<div class="col-md-6">
<?php if($data[0]['status'] == 4 OR $data[0]['status'] == 5) { ?>
<h6>Foto Sebelum Perbaikan</h6><br>
<img src="img/user/<?php echo $data[0]['img_sebelum']; ?>" width="100%">
</div>
<div class="col-md-6">
<h6>Foto Setelah Perbaikan</h6><br>
<img src="img/user/<?php echo $data[0]['img_selesai']; ?>" width="100%">
<!-- Sebelum di perbaikai -->
<?php } if($data[0]['status'] == 2) { ?>
<label>Foto sebelum di perbaikan</label>
<div class="uploadImage" data-id="fsb<?php echo $data[0]['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
<div class="form-group m-1">
<label>Pilih Lokasi Maps</label><br>
<input type="hidden" id="latitude" value="<?php echo $data[0]['latitude']; ?>" name="latitude">
<input type="hidden" id="longitude" value="<?php echo $data[0]['longitude']; ?>" name="longitude">
<div id="map" style="height:250px; margin-top: 10px;"></div>
</div>
<!-- Setelah di perbaiki -->
<?php } if($data[0]['status'] == 3) { ?>
<label>Foto setelah di perbaiki</label>
<div class="uploadImage" data-id="fst<?php echo $data[0]['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Penyelesaian Masalah</label>
<textarea name="penyelesaian" rows="5" class="form-control" required="required"></textarea>
</div>
<?php } ?>
</div>
</div>
</center>
</div>
</div>
</div>
<div class="card-footer">
<?php if($data[0]['status'] == 2 && in_array("Ubah", $json_array[36]['sub_menu'])) { ?>
<input type="submit" class="btn btn-sm btn-primary m-1" name="lanjut" value="Lanjutkan Proses">
<?php } if($data[0]['status'] == 3 && in_array("Ubah", $json_array[36]['sub_menu'])) { ?>
<input type="submit" class="btn btn-sm btn-primary m-1" name="selesai" value="Selesaikan Proses">
<?php } if($data[0]['status'] == 4 && in_array("Verifikasi", $json_array[36]['sub_menu'])) { ?>
<input type="submit" class="btn btn-sm btn-secondary m-1" name="verifikasi" value="Verifikasi">
<input type="submit" class="btn btn-sm btn-danger m-1" name="kembali" value="Kembalikan ke Proses">
<input type="submit" class="btn btn-sm btn-warning m-1" name="sebelum" value="Kembalikan ke Sebelum Proses">
<?php } if($data[0]['status'] == 2 && in_array("Verifikasi", $json_array[36]['sub_menu'])) { ?>
<input type="submit" class="btn btn-sm btn-warning m-1" name="sebelum" value="Kembalikan ke Sebelum Proses">
<?php } if($data[0]['status'] == 3 && in_array("Verifikasi", $json_array[36]['sub_menu'])) { ?>
<input type="submit" class="btn btn-sm btn-warning m-1" name="sebelum" value="Kembalikan ke Sebelum Proses">
<?php } ?>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['lanjut'])) {
if(!empty($_SESSION['uploaded_files']['fsb'.$data[0]['id']])) {
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET img_sebelum = :imgsebelum, status = '3', latitude = :latitude, longitude = :longitude WHERE id = :idtik");
$stmt->bindParam(':latitude', $_POST['latitude']);
$stmt->bindParam(':longitude', $_POST['longitude']);
$stmt->bindParam(':imgsebelum', $_SESSION['uploaded_files']['fsb'.$data[0]['id']]);
$stmt->bindParam(':idtik', $data[0]['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Proses di lanjutkan", "success");
}else{
sweetAlert("Gambar belum di upload", "error");
}
}
if (isset($_POST['selesai'])) {
$waktu = date('Y-m-d H:i:s');
if(!empty($_SESSION['uploaded_files']['fst'.$data[0]['id']])) {
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET penyelesaian = :penyelesaian, telah_proses_time = :waktu, img_selesai = :imgsebelum, status = '4' WHERE id = :idtik");
$stmt->bindParam(':waktu', $waktu);
$stmt->bindParam(':penyelesaian', $_POST['penyelesaian']);
$stmt->bindParam(':imgsebelum', $_SESSION['uploaded_files']['fst'.$data[0]['id']]);
$stmt->bindParam(':idtik', $data[0]['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket akan di verifikasi", "success");
}else{
sweetAlert("Gambar belum di upload", "error");
}
}
if (isset($_POST['verifikasi'])) {
$waktu = date('Y-m-d H:i:s');
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET status = '5', verifikasi_time = :verifikasi_time WHERE id = :idtik");
$stmt->bindParam(':verifikasi_time', $waktu);
$stmt->bindParam(':idtik', $data[0]['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket selesai di verifikasi", "success");
}
if (isset($_POST['kembali'])) {
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET status = '2' WHERE id = :idtik");
$stmt->bindParam(':idtik', $data[0]['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket telah di kembalikan ke proses", "success");
}
if (isset($_POST['sebelum'])) {
$stmt = $pdo->prepare("UPDATE tiket_gangguan SET status = '1' WHERE id = :idtik");
$stmt->bindParam(':idtik', $data[0]['id'], PDO::PARAM_INT);
$stmt->execute();
sweetAlert("Tiket telah di kembalikan ke sebeum proses", "success", "?".encrypt_url('tiket_buat'));
}
?>
+58
View File
@@ -0,0 +1,58 @@
<?php
$stmt = $pdo->prepare("SELECT akun,id_setting_mikrotik FROM pelanggan WHERE id = :id");
$stmt->execute(['id' => $page[1]]);
$isi = $stmt->fetch(PDO::FETCH_ASSOC);
$user = $isi['akun'];
$stmt = $pdo->prepare("SELECT * FROM setting_mikrotik WHERE id = :id");
$stmt->execute(['id' => $isi['id_setting_mikrotik']]);
$mik = $stmt->fetch(PDO::FETCH_ASSOC);
$API = new RouterosAPI(); // Inisialisasi objek API
$API->debug = false; // Ubah ke true untuk debugging jika ada masalah
if ($API->connect2($mik['ip_address'], $mik['username'], $mik['password'], $mik['port_api'])) {
try {
// Ambil daftar pengguna PPP aktif
$API->write('/ppp/active/print');
$activeUsers = $API->read();
if (!empty($activeUsers)) {
$trafikData = []; // Array untuk menyimpan data trafik
foreach ($activeUsers as $user) {
$interface = $user['.id']; // ID unik antarmuka PPP
$usernamePPP = $user['name']; // Nama pengguna PPP
// Ambil data trafik dari antarmuka terkait
$API->write('/interface/monitor-traffic', false);
$API->write('=interface=' . $user['.id'], false);
$API->write('=once=');
$trafficStats = $API->read();
// Parsing trafik untuk antarmuka pengguna
if (!empty($trafficStats)) {
$trafikData[] = [
'username' => $usernamePPP,
'tx' => $trafficStats[0]['tx-bits-per-second'] ?? 0, // Trafik TX
'rx' => $trafficStats[0]['rx-bits-per-second'] ?? 0 // Trafik RX
];
}
}
// Mengirimkan data trafik sebagai JSON
header('Content-Type: application/json');
echo json_encode(['status' => 'success', 'data' => $trafikData]);
} else {
echo json_encode(['status' => 'error', 'message' => 'No active PPP users found']);
}
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
} finally {
$API->disconnect(); // Tutup koneksi
}
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to connect to MikroTik']);
}
?>
+264
View File
@@ -0,0 +1,264 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">User Akses</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<a type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#staticBackdrop">Tambah</a>
</ol>
</div>
<!-- Modal Tambah -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-primary">
<h5 class="modal-title" id="staticBackdropLabel">Tambah User Akses</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" name="nma" required="required">
</div>
<div class="form-group">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nwa" required="required">
</div>
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" name="usm" required="required">
</div>
<div class="form-group">
<label>Password</label>
<input type="text" class="form-control" name="psw" required="required">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Group Akses</label>
<select class="form-control" name="iga" required="required">
<?php
$List = new Listdata();
$List->set_list("group_akses",$SqlDataWHId);
foreach ($List->get_list() as $key => $ak): ?>
<option value="<?php echo $ak['id']; ?>"><?php echo $ak['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Data Server</label>
<div class="select2-primary">
<select class="select2" name="ids[]" multiple="multiple" data-placeholder="Select a State" data-dropdown-css-class="select2-primary" style="width: 100%;" required="required">
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="tambah" class="btn btn-primary" value="Tambah">
</div>
</form>
<?php
if (isset($_POST['tambah']))
{
$idsv = implode(",", $_POST['ids']);
$hashedPassword = password_hash($_POST[psw], PASSWORD_DEFAULT);
$input = mysqli_query($con,"INSERT INTO user_akses (nama, nomor_whatsapp, username, password, id_group_akses, id_data_server) VALUES ('$_POST[nma]','$_POST[nwa]','$_POST[usm]','$hashedPassword','$_POST[iga]','$idsv')");
if ($input)
{
sweetAlert("User Akses telah di tambahkan", "success");
}
}
?>
</div>
</div>
</div>
<!-- END Modal Tambah -->
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example3" class="table table-bordered table-striped">
<thead>
<tr>
<th>Nama</th>
<th>Nomor WhatsApp</th>
<th>Server Akses</th>
<th>Group Akses</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM user_akses $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td><?php echo $server['nama']; ?></td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td>
<?php
$datasv = explode(", ", $server['id_data_server']);
foreach ($datasv as $isidata)
{
$asv = mysqli_query($con,"SELECT nama_server FROM data_server WHERE id = '$isidata'");
$sv = mysqli_fetch_assoc($asv);
echo '<span class="badge badge-primary ml-1">'.$sv['nama_server'].'</span>';
}
?>
</td>
<td>
<?php
$asva = mysqli_query($con,"SELECT nama FROM group_akses WHERE id = '$server[id_group_akses]'");
$sva = mysqli_fetch_assoc($asva);
echo $sva['nama'];
?>
</td>
<td>
<form method="post">
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
</form>
</td>
</tr>
<!-- Modal Edit -->
<div class="modal fade" id="modal-edit<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<form method="post" enctype="multipart/form-data">
<div class="modal-header bg-secondary">
<h5 class="modal-title" id="staticBackdropLabel">Edit Mikrotik Router</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control" value="<?php echo $server['nama']; ?>" name="nma" required="required">
</div>
<div class="form-group">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" value="<?php echo $server['nomor_whatsapp']; ?>" name="nwa" required="required">
</div>
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" value="<?php echo $server['username']; ?>" name="usm" required="required">
</div>
<div class="form-group">
<label>Ganti Password</label>
<input type="text" class="form-control" name="psw">
<i>Isi Password baru jika di perlukan</i>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="card-body pb-0">
<div class="form-group">
<label>Group Akses</label>
<select class="form-control" name="iga">
<?php
$List = new Listdata();
$List->set_list("group_akses",$SqlDataWHId);
foreach ($List->get_list() as $key => $ak): ?>
<option value="<?php echo $ak['id']; ?>" <?php if($server['id_group_akses'] == $ak['id']) { echo "selected";} ?>><?php echo $ak['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Data Server</label>
<div class="select2-primary">
<select class="select2" name="ids[]" multiple="multiple" data-placeholder="Select a State" data-dropdown-css-class="select2-primary" style="width: 100%;">
<?php
$List = new Listdata();
$List->set_list("data_server",$SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php $c = $value['id']; $k = $server['id_data_server']; if(preg_match("/$c/i", $k)) { echo "selected";} ?> ><?php echo $value['nama_server']; ?></option>
<?php endforeach ?>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="edit<?php echo $server['id'];?>" class="btn btn-warning" value="Edit">
</div>
</form>
<?php
if (isset($_POST['edit'.$server['id']]))
{
$hashedPassword = (empty($_POST['psw'])) ? '' : ", password = '" . password_hash($_POST['psw'], PASSWORD_DEFAULT) . "'";
$idsv = implode(",", $_POST['ids']);
$update = mysqli_query($con, "UPDATE user_akses SET
id_data_server='$idsv',
id_group_akses='" . mysqli_real_escape_string($con, $_POST['iga']) . "',
nama='" . mysqli_real_escape_string($con, $_POST['nma']) . "',
nomor_whatsapp='" . mysqli_real_escape_string($con, $_POST['nwa']) . "',
username='" . mysqli_real_escape_string($con, $_POST['usm']) . "'"
. $hashedPassword . "
WHERE id = '" . mysqli_real_escape_string($con, $server['id']) . "'"
);
if ($update)
{
sweetAlert("User Akses telah di ubah", "success");
}
}
if (isset($_POST['hapus'.$server['id']]))
{
$iddata = $server['id'];
deleteAlert("user_akses", $iddata);
}
?>
</div>
</div>
</div>
<!-- END Modal Edit -->
<?php } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+294
View File
@@ -0,0 +1,294 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Akumulasi Kinerja Karyawan</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>Bulan</th>
<th>Nama</th>
<th>Jumlah Tiket</th>
<th>Tiket Jalur</th>
<th>Tiket Lain</th>
<th>Bobot Pekerjaan</th>
<th>Create to Proses</th>
<th>Proses to Close</th>
<!--<th>Action</th>-->
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con,"SELECT * FROM v_akumulasi_kinerja_by_tiket $SqlDataWHId ORDER BY waktu DESC");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td><?php echo substr(formatIndo($server['waktu']),3); ?></td>
<td><?php echo $server['nama_teknisi']; ?></td>
<td><?php echo $server['jumlah_tiket']; ?></td>
<td><?php echo $server['tiket_jalur']; ?></td>
<td><?php echo $server['tiket_lain']; ?></td>
<td><?php echo $server['bobot']; ?></td>
<td><?php echo $server['rata_rata_sebelum']; ?> Menit</td>
<td><?php echo $server['rata_rata_sesudah']; ?> Menit</td>
<!--<td>-->
<!-- <a type="button" class="btn btn-secondary btn-sm ml-1">Detail</a>-->
<!--</td>-->
</tr>
<?php } ?>
</tbody>
</table>
</div>
<div class="col-md-6">
<div class="card" id="reportChartid">
<div class="card-body">
<center>
<h5>Grafik Kinerja Berdasarkan Tiket</h5>
</center>
<label><small>Tahun :</small></label>
<select id="yearSelect">
<option value="2024">2024</option>
<option value="2025" selected>2025</option>
<option value="2026">2026</option>
</select>
<label><small>Karyawan :</small></label>
<select id="userSelect">
<option value="all">All</option>
<?php
$userOp = mysqli_query($con,"SELECT id_penyelesai_tiket,nama_teknisi FROM v_akumulasi_kinerja_by_tiket $SqlDataWHId GROUP BY id_penyelesai_tiket ORDER BY nama_teknisi");
while ($userOption = mysqli_fetch_assoc($userOp))
{ ?>
<option value="<?php echo $userOption['id_penyelesai_tiket'] ?>"><?php echo $userOption['nama_teknisi'] ?></option>
<?php } ?>
</select>
<button id="fullscreenBtn" style="float: right;" class="btn btn-sm btn-secondary">Fullscreen</button>
<canvas id="reportChart"></canvas>
</div>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
<script>
document.addEventListener('DOMContentLoaded', () => {
const canvas = document.getElementById('reportChart'); // Mendapatkan elemen canvas
const rcrt = canvas.getContext('2d'); // Mendapatkan konteks dari canvas
const yearSelect = document.getElementById('yearSelect');
const userSelect = document.getElementById('userSelect');
const fullscreenBtn = document.getElementById('fullscreenBtn');
// Mengatur ukuran awal canvas
canvas.style.maxHeight = '350px'; // Kembali ke ukuran asli
canvas.style.width = '100%'; // Kembali ke ukuran asli
let reportChart; // Simpan referensi chart di sini
// Fungsi untuk mengambil data dari file PHP berdasarkan tahun
async function fetchData(year,kar) {
try {
const response = await fetch(`load/data_kpi_teknisi.php?year=${year}&d=${kar}&i=<?php echo $SqlDataId; ?>`);
const data = await response.json();
// console.log(data); // Log data yang diterima
const bulanSingkatan = ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'];
const bulanArray = bulanSingkatan.map((singkatan, index) => `${year}-${String(index + 1).padStart(2, '0')}`);
const jumlah = new Array(12).fill(0);
const createToProses = new Array(12).fill(0);
const prosesToClose = new Array(12).fill(0);
const tiketJalur = new Array(12).fill(0);
const tiketLain = new Array(12).fill(0);
const bobot = new Array(12).fill(0);
data.bulan.forEach((bulan, index) => {
const monthIndex = bulanArray.indexOf(bulan);
if (monthIndex !== -1) {
jumlah[monthIndex] = data.jumlah[index];
createToProses[monthIndex] = data.createToProses[index];
prosesToClose[monthIndex] = data.prosesToClose[index];
tiketJalur[monthIndex] = data.tiketJalur[index];
tiketLain[monthIndex] = data.tiketLain[index];
bobot[monthIndex] = data.bobot[index];
}
});
const report = {
labels: bulanSingkatan,
datasets: [
{
label: 'Create To Proses',
data: createToProses,
backgroundColor: 'rgba(255, 206, 86, 0.5)', // Warna kuning transparan
borderColor: 'rgb(255, 206, 86)', // Kuning solid
borderWidth: 1,
fill: true,
type: 'bar',
},
{
label: 'Proses To Close',
data: prosesToClose,
backgroundColor: 'rgba(54, 162, 235, 0.5)', // Warna biru transparan
borderColor: 'rgb(54, 162, 235)', // Biru solid
borderWidth: 1,
fill: true,
type: 'bar',
},
{
label: 'Jumlah',
data: jumlah,
backgroundColor: 'rgba(75, 192, 192, 0.5)', // Warna hijau kebiruan transparan
borderColor: 'rgb(75, 192, 192)', // Hijau kebiruan solid
borderWidth: 1,
fill: true,
type: 'bar',
},
{
label: 'Bobot',
data: bobot,
backgroundColor: 'rgba(153, 102, 255, 0.5)', // Warna ungu transparan
borderColor: 'rgb(153, 102, 255)', // Ungu solid
borderWidth: 1,
fill: true,
type: 'bar',
},
{
label: 'Tiket Jalur',
data: tiketJalur,
backgroundColor: 'rgba(255, 99, 132, 0.5)', // Warna merah transparan
borderColor: 'rgb(255, 99, 132)', // Merah solid
borderWidth: 1,
fill: true,
},
{
label: 'Tiket Lain',
data: tiketLain,
backgroundColor: 'rgba(201, 203, 207, 0.5)', // Warna abu-abu transparan
borderColor: 'rgb(201, 203, 207)', // Abu-abu solid
borderWidth: 1,
fill: true,
}
]
};
// Hapus chart lama jika sudah ada
if (reportChart) {
reportChart.destroy();
}
const rconfig = {
type: 'line',
data: report,
options: {
scales: {
y: {
beginAtZero: true,
ticks: {
callback: function(value) {
const absValue = Math.abs(value);
if (absValue >= 1000000) {
return (value / 1000000) + 'M';
} else if (absValue >= 1000) {
return (value / 1000) + 'K';
} else {
return value;
}
}
}
}
}
}
};
// Membuat chart baru
reportChart = new Chart(rcrt, rconfig);
} catch (error) {
console.error('Error fetching data:', error);
}
}
// Fungsi untuk mengaktifkan mode fullscreen
function toggleFullscreen() {
const canvasContainer = document.getElementById('reportChartid');
if (!document.fullscreenElement) {
canvasContainer.requestFullscreen().catch(err => {
console.error(`Error attempting to enable full-screen mode: ${err.message}`);
});
} else {
document.exitFullscreen();
}
}
// Event listener untuk tombol fullscreen
fullscreenBtn.addEventListener('click', toggleFullscreen);
// Memanggil fetchData saat halaman dimuat
fetchData(yearSelect.value, userSelect.value);
// Menangani perubahan pada select year
yearSelect.addEventListener('change', () => {
fetchData(yearSelect.value, userSelect.value);
});
// Menangani perubahan pada select user
userSelect.addEventListener('change', () => {
fetchData(yearSelect.value, userSelect.value);
});
// Mengatur tinggi canvas saat masuk dan keluar fullscreen
document.addEventListener('fullscreenchange', () => {
if (document.fullscreenElement) {
canvas.style.height = ''; // Kembali ke ukuran asli
canvas.style.maxHeight = '100%';
canvas.style.width = '100%'; // Atur lebar canvas menjadi 100vw
fullscreenBtn.textContent = 'Close Fullscreen';
} else {
canvas.style.height = ''; // Kembali ke ukuran asli
canvas.style.maxHeight = '350px'; // Kembali ke max-height asli
canvas.style.width = '100%'; // Kembali ke lebar asli
fullscreenBtn.textContent = 'Fullscreen';
}
});
});
</script>
<script>
window.onload = function() {
const body = document.body;
// Tambahkan kelas 'sidebar-collapse' saat halaman dimuat
body.classList.add('sidebar-collapse');
};
</script>
+109
View File
@@ -0,0 +1,109 @@
<?php
$stmt = $pdo->prepare("SELECT
SUM(user_hs_aktif) AS user_hs_aktif
FROM v_jumlah_pelanggan $SqlDataWHIdM");
$stmt->execute();
$datauser = $stmt->fetchAll();
?>
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Pelanggan Aktif</h4>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example3" class="table table-bordered table-striped">
<thead>
<tr class="bg-success">
<th style="max-width: 20px">No</th>
<th>Nama</th>
<th>NIK</th>
<th>Id Pelanggan</th>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<th>Akun Hotspot</th>
<?php } ?>
<th>Alamat</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Mikrotik</th>
<th>Paket</th>
<th>Status Koneksi</th>
<th>Mulai Berlangganan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$no = 1;
$chunkSize = 200;
$stmt = $pdo->query("SELECT COUNT(id) FROM v_pelanggan WHERE $SqlSvData status = 'aktif' ORDER BY nama");
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT id,akun,user_hotspot,nama,alamat,latitude,longitude,nomor_whatsapp,email,nik,nama_server,nama_paket,time_start,status_koneksi,nama_mikrotik,id_setting_mikrotik,time_update,ip_address FROM v_pelanggan WHERE $SqlSvData status = 'aktif' ORDER BY nama LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
foreach ($data as $row) {
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['nik']; ?></td>
<td><?php echo $row['akun']; ?></td>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<td><?php echo $row['user_hotspot']; ?></td>
<?php } ?>
<td style="max-width: 200px"><?php echo $row['alamat']; ?></td>
<td style="max-width: 200px">
<?php if(substr($row['latitude'],0,1) != '-') { ?>
<a href="https://google.com/maps/?q=<?php echo $row['latitude']; ?>" target="_blank"><?php echo $row['latitude']; ?></a>
<?php } else { ?>
<a href="https://google.com/maps/?q=<?php echo $row['latitude'].','.$row['longitude']; ?>" target="_blank"><?php echo $row['latitude'].', '.$row['longitude']; ?></a>
<?php } ?>
</td>
<td>
<?php echo $row['nomor_whatsapp'];?>
<a href="https://wa.me/<?php echo $row['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px;" class="btn btn-sm btn-success"><i class="fab fa-whatsapp"></i></a><br>
<?php echo $row['email']; ?>
</td>
<td><?php echo $row['nama_server']; ?></td>
<td><?php echo $row['nama_mikrotik']; ?></td>
<td><?php echo $row['nama_paket']; ?></td>
<td>
<?php echo $row['status_koneksi']; if($row['status_koneksi'] == 'On') { ?>
<a href="?<?php echo encrypt_url('user_remote|'.$row['id'].'|'.$row['id_setting_mikrotik']); ?>" class="btn btn-sm btn-success ml-1" style="border-radius: 20px;">Remote</a>
<br><?php echo $row['ip_address']; ?>
<?php } ?>
<br><?php echo $row['time_update']; ?>
</td>
<td><?php echo $row['time_start']; ?></td>
<td style="max-width: 30px">
<a href="?<?php echo encrypt_url('user_detail|'.$row['id']); ?>" class="btn btn-sm btn-info btn-sm m-1">Detail</a>
</td>
</tr>
<?php
$no++;
}} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+638
View File
@@ -0,0 +1,638 @@
<?php
// error_reporting(E_ALL);
// ini_set('display_errors', 1);
$date = date('Y-m-d H:i:s');
$stmt = $pdo->prepare("SELECT * FROM pelanggan WHERE id = :id");
$stmt->execute(['id' => $page[1]]);
$isi = $stmt->fetch(PDO::FETCH_ASSOC);
$user = $isi['akun'];
$stmt1 = $pdo->prepare("SELECT catatan FROM order_list WHERE akun = :akun");
$stmt1->execute(['akun' => $user]);
$isi1 = $stmt1->fetch(PDO::FETCH_ASSOC);
?>
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-primary">
<div class="row">
<div class="col-sm-6">
<h5>Detail Pelanggan</h5>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<form method="post" enctype="multipart/form-data">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<center><label>INFORMASI LAYANAN</label></center>
<div class="form-group m-1">
<label>Pilih Server</label>
<select id="dropdown0" class="form-control" required="required" name="ids">
<option value="">Pilih</option>
<?php
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>" <?php if($value['id'] == $isi['id_data_server']) { echo "selected";} ?> ><?php echo htmlspecialchars($value['nama_server']); ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label>Jenis Layanan</label>
<select id="dropdown1" class="form-control" name="jenis">
<option value="PPPOE" <?php if($isi['jenis_layanan'] == 'PPPOE') { echo "selected";} ?>>PPPOE</option>
<option value="Hotspot" <?php if($isi['jenis_layanan'] == 'Hotspot') { echo "selected";} ?>>Hotspot</option>
</select>
</div>
<div class="form-group m-1" id="group-dropdown5">
<label>Mikrotik</label>
<select id="dropdown5" class="form-control select2bs4" required="required" name="ism" data-id="<?php echo $isi['id_setting_mikrotik']; ?>">
</select>
</div>
<div class="form-group m-1" id="group-dropdown2">
<label>Paket Berlangganan</label>
<select id="dropdown2" class="form-control select2bs4" required="required" name="idp" data-id="<?php echo $isi['id_profile_paket']; ?>">
</select>
</div>
<div class="form-group m-1" id="group-dropdown6">
<label>Profile Tagihan</label>
<select id="dropdown6" class="form-control select2bs4" required="required" name="profiletag" data-id="<?php echo $isi['id_profile_tagihan']; ?>">
</select>
</div>
<div class="form-group m-1" id="group-dropdown3">
<label>Marketing Area / Penagih</label>
<select id="dropdown3" class="form-control select2bs4" required="required" name="idm" data-id="<?php echo $isi['id_marketing']; ?>">
<option value="">Pilih</option>
</select>
</div>
<div class="form-group m-1">
<label>Id Pelanggan</label>
<input type="text" class="form-control" name="akun" value="<?php echo $isi['akun']; ?>">
</div>
<div class="form-group m-1" id="group-hotspot">
<label>User Hotspot</label>
<input type="text" class="form-control" name="user_hotspot" value="<?php echo $isi['user_hotspot']; ?>">
</div>
<hr><center><label>INFORMASI PRIBADI</label></center>
<div class="form-group m-1">
<label>NIK</label>
<input type="text" class="form-control" name="nik" value="<?php echo $isi['nik']; ?>">
</div>
<div class="form-group m-1">
<label>Nama</label>
<input type="text" class="form-control" name="nama" value="<?php echo $isi['nama']; ?>">
</div>
<div class="form-group m-1">
<label>Email</label>
<input type="text" class="form-control" name="email" value="<?php echo $isi['email']; ?>">
</div>
<div class="form-group m-1">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nowa" value="<?php echo $isi['nomor_whatsapp']; ?>">
</div>
<div class="form-group m-1">
<label>Alamat</label>
<input type="text" class="form-control" name="alamat" value="<?php echo $isi['alamat']; ?>">
</div>
<div class="form-group m-1" id="group-dropdown4">
<label>Desa</label>
<select id="dropdown4" class="form-control select2bs4" required="required" name="desa" data-id="<?php echo $isi['id_master_desa']; ?>">
</select>
</div>
<hr><center><label>INFORMASI TOPOLOGI</label></center>
<div class="form-group m-1">
<label for="firstDropdown">Topologi ODP</label>
<select class="select2bs4" name="odp" style="width: 100%" id="firstDropdown" required="required" onchange="updateSecondDropdown()">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("master_topologi", $SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>" <?php if($value['id'] == $isi['id_master_topologi']){ echo "selected"; } ?>><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label for="secondDropdown">Port ODP</label>
<select id="secondDropdown" name="port" class="form-control" required="required" data-id="<?php echo $isi['port_odp']; ?>">
</select>
</div>
</div>
<div class="col-sm-6">
<?php if($isi['status'] != 'sampah') { ?>
<div class="row">
<div class="col-6">
<label class="ml-2">Status Pelanggan</label><br>
<?php if($isi['status'] == 'aktif') { ?>
<a href="#" class="btn btn-success btn-sm m-2 btn-block" disabled>Aktif</a>
<?php } elseif($isi['status'] == 'register') { ?>
<a href="#" class="btn btn-warning btn-sm m-2 btn-block" disabled>Register</a>
<?php } else { ?>
<a href="#" class="btn btn-danger btn-sm m-2 btn-block" disabled>Tidak Aktif</a>
<?php } ?>
<a href="?<?php echo encrypt_url('monitoring_pelanggan|'.$page[1]); ?>" class="btn btn-sm btn-secondary m-2 btn-block"><i class="fas fa-chart-bar mr-3"></i>Riwayat Koneksi</a>
<a href="https://google.com/maps/?q=<?php echo $isi['latitude'].','.$isi['longitude']; ?>" target="_blank" class="btn btn-sm btn-warning m-2 btn-block"><i class="fas fa-motorcycle mr-3"></i><?php echo $isi['latitude'].', '.$isi['longitude']; ?></a>
</div>
<div class="col-6">
<label class="ml-2">Status Koneksi</label>
<?php if($isi['status_koneksi'] == 'On') { ?>
<a href="#" class="btn btn-success btn-sm m-2 btn-block" disabled>Connected</a>
<a href="?<?php echo encrypt_url('user_remote|'.$isi['id'].'|'.$isi['id_setting_mikrotik']); ?>" class="btn btn-sm btn-primary m-2 btn-block"><i class="fas fa-podcast mr-3"></i>Remote Router</a>
<?php } else { ?>
<a href="#" class="btn btn-danger btn-sm m-2 btn-block" disabled>Disconnected</a>
<?php } ?>
</div>
</div>
<?php } ?>
<div class="form-group m-1">
<label>Pilih Lokasi Maps / Isi Koordinat</label>
<input class="form-control" type="text" id="latlong" required name="koordinat">
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" name="latitude" value="<?php echo $isi['latitude']; ?>" required="required">
<input type="hidden" id="longitude" data-maps="longitude" name="longitude" value="<?php echo $isi['longitude']; ?>" required="required">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
<div class="row">
<div class="col-sm-6">
<center>
<label>Upload Foto Port ODP</label>
<div class="uploadImage" data-id="odp<?php echo $isi['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
<label>Upload Foto Rumah</label>
<div class="uploadImage" data-id="rmh<?php echo $isi['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
<div class="col-sm-6">
<center>
<label>Upload Foto ONU terinstalasi</label>
<div class="uploadImage" data-id="onu<?php echo $isi['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
<label>Upload SpeedTest</label>
<div class="uploadImage" data-id="tes<?php echo $isi['id']; ?>">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
</div>
<div class="form-group m-1">
<label>Catatan Saat Order</label>
<textarea class="form-control" rows="2" disabled><?php echo $isi1['catatan']; ?></textarea>
</div>
</div>
</div>
<div class="card-footer">
<?php if(in_array("Ubah", $json_array[2]['sub_menu'])){ ?>
<button type="submit" class="btn btn-secondary btn-sm m-1" name="ubah">Simpan Perubahan</button>
<?php } if($isi['status'] == 'register' && in_array("Aktivasi", $json_array[2]['sub_menu'])) { ?>
<button type="submit" class="btn btn-warning btn-sm m-1" name="aktivasi">Aktivasi Pelanggan</button>
<button type="submit" class="btn btn-danger btn-sm m-1" name="hapus">Hapus Permanen</button>
<?php } if($isi['status'] == 'tidak aktif' && in_array("Aktivasi", $json_array[2]['sub_menu'])) { ?>
<button type="submit" class="btn btn-primary btn-sm m-1" name="aktifkan">Aktifkan Status Pelanggan</button>
<button type="submit" class="btn btn-danger btn-sm m-1" name="sampah">Hapus Pelanggan</button>
<button type="submit" class="btn btn-success btn-sm m-1" name="berita_acara">Buat Berita Acara Pengambilan Alat</button>
<?php } if($isi['status'] == 'aktif' && in_array("Aktivasi", $json_array[2]['sub_menu'])) { ?>
<button type="submit" class="btn btn-danger btn-sm m-1" name="nonaktifkan">Non Aktifkan Status Pelanggan</button>
<?php } if($isi['status'] == 'sampah' && in_array("Aktivasi", $json_array[2]['sub_menu'])) { ?>
<button type="submit" class="btn btn-primary btn-sm m-1" name="aktifkan">Aktifkan Status Pelanggan</button>
<button type="submit" class="btn btn-danger btn-sm m-1" name="hapus">Hapus Permanen</button>
<?php } ?>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['aktivasi'])) {
try {
// Fetching setting_mikrotik
$stmt = $pdo->prepare("SELECT * FROM setting_mikrotik WHERE id = :id");
$stmt->execute(['id' => $isi['id_setting_mikrotik']]);
$mik = $stmt->fetch(PDO::FETCH_ASSOC);
// Fetching profile_paket
$stmt = $pdo->prepare("SELECT nama_profile FROM profile_paket WHERE id = :id");
$stmt->execute(['id' => $isi['id_profile_paket']]);
$pro = $stmt->fetch(PDO::FETCH_ASSOC);
// Fetching master_topologi
$stmt = $pdo->prepare("SELECT nama FROM master_topologi WHERE id = :id");
$stmt->execute(['id' => $isi['id_master_topologi']]);
$top = $stmt->fetch(PDO::FETCH_ASSOC);
$API = new RouterosAPI();
$API->debug = false;
$komen = $top['nama'] . ' Port ' . $isi['port_odp'] . '-' . $isi['nama'];
$akun = $isi['akun'];
$profile = $pro['nama_profile'];
$idsv = $isi['id_data_server'];
$profRemote = $mik['profile_remote'];
$hotspot = $isi['user_hotspot'];
// Connect to Mikrotik
if ($API->connect2($mik['ip_address'], $mik['username'], $mik['password'], $mik['port_api'])) {
// PPPOE add mikrotik
if ($isi['jenis_layanan'] == "PPPOE") {
$in = $API->comm('/ppp/secret/add', [
"name" => $akun,
"password" => $akun,
"profile" => $profile,
"service" => "pppoe",
"comment" => $komen,
]);
} else { // Hotspot add mikrotik
$in = $API->comm('/ppp/secret/add', [
"name" => $akun,
"password" => $akun,
"profile" => $profRemote,
"service" => "pppoe",
"comment" => $komen,
]);
$in2 = $API->comm('/ip/hotspot/user/add', [
"name" => $hotspot,
"password" => $hotspot,
"profile" => $profile,
"server" => "all",
"comment" => $komen,
]);
}
$API->disconnect();
// Memeriksa hasil dari API
if (!isset($in['!trap']) && (!isset($in2['!trap']) || $isi['jenis_layanan'] == "PPPOE")) {
// IF Success bikin akun
// Kirim Pesan WhatsApp
$nomor = [$isi['nomor_whatsapp']];
$time_start = date('Y-m-d H:i:s');
$APIwa = new PesanWA();
$APIwa->Create_Pesan($isi['id_data_server'], $isi['id'], 'pesan_aktivasi');
$Pesan = $APIwa->Get_Pesan();
$APIwa->Send_Pesan($isi['id_data_server'], 'sendMessage', $nomor, $Pesan);
// Menggunakan prepared statement untuk keamanan
$stmt = $pdo->prepare("SELECT kode_unik_tagihan FROM pelanggan WHERE id_data_server = :id ORDER BY kode_unik_tagihan DESC LIMIT 1");
$stmt->execute(['id' => $idsv]);
$pckut1 = $stmt->fetch(PDO::FETCH_ASSOC);
if ($pckut1) {
$lastCode = $pckut1['kode_unik_tagihan'];
$arr2 = range(1, $lastCode);
$stmt = $pdo->prepare("SELECT kode_unik_tagihan FROM pelanggan WHERE id_data_server = :id ORDER BY kode_unik_tagihan");
$stmt->execute(['id' => $idsv]);
$arr1 = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
$missing = array_diff($arr2, $arr1);
$kodeuser = !empty($missing) ? reset($missing) : $lastCode + 1;
} else {
$kodeuser = 1;
}
// Update Pelanggan
$stmt = $pdo->prepare("UPDATE pelanggan SET
id_setting_mikrotik = :id_setting_mikrotik,
id_profile_paket = :id_profile_paket,
id_marketing = :id_marketing,
id_master_desa = :id_master_desa,
id_profile_tagihan = :id_profile_tagihan,
status = 'aktif',
user_hotspot = :user_hotspot,
kode_unik_tagihan = :kodeuser,
time_start = :time_start
WHERE id = :id");
$stmt->execute([
':id_setting_mikrotik' => $_POST['ism'],
':id_profile_paket' => $_POST['idp'],
':id_marketing' => $_POST['idm'],
':id_master_desa' => $_POST['desa'],
':id_profile_tagihan' => $_POST['profiletag'],
'user_hotspot' => $hotspot,
'kodeuser' => $kodeuser,
'time_start' => $time_start,
'id' => $isi['id']
]);
sweetAlert("Aktivasi Pelanggan Berhasil..!!", "success");
} else {
// IF Gagal bikin akun
$meror = isset($in['!trap']) ? $in['!trap'][0]['message']." In PPPOE" : $in2['!trap'][0]['message']." In Hotspot";
sweetAlert($meror, "error");
}
} else {
// IF Koneksi mikrotik gagal
sweetAlert("Aktivasi gagal..!! Aplikasi ke Mikrotik Tidak Terhubung", "error");
}
} catch (PDOException $e) {
// Tangani pengecualian PDO
sweetAlert("Kesalahan Database: " . $e->getMessage(), "error");
} catch (Exception $e) {
// Tangani pengecualian lainnya
sweetAlert("Terjadi kesalahan: " . $e->getMessage(), "error");
}
}
// Buat Berita Acara Pengambilan Alat di Rumah pelanggan OFF
if (isset($_POST['berita_acara'])) {
try {
// Ambil data perusahaan
$ainvp = mysqli_query($con,"SELECT
nama_perusahaan,
alamat_perusahaan,
telepon_perusahaan,
logo_perusahaan
FROM data_server WHERE id = '$isi[id_data_server]'");
// Cek apakah query berhasil
if (!$ainvp) {
throw new Exception('Gagal mengambil data perusahaan: ' . mysqli_error($con));
}
$invp = mysqli_fetch_assoc($ainvp);
$nama = $invp['nama_perusahaan'];
$alamat = $invp['alamat_perusahaan'];
$telepon = $invp['telepon_perusahaan'];
$logo = $invp['logo_perusahaan'];
// Membuat PDF
require ('berita_acara/berita_acara.php');
$pdf = new PDF();
// Set header data perusahaan
$pdf->setHeaderData($nama, $alamat, $telepon, $logo);
$pdf->AddPage();
// Tambahkan data pelanggan
$pdf->AddBeritaAcara($isi['akun'], $isi['nomor_whatsapp'], $isi['nama'], $isi['alamat']);
// Output PDF ke file
$pdfFile = 'berita_acara/BA-pengambilan-alat-' . $isi['nama'] . '-' . $isi['akun'] . '.pdf';
$pdf->Output('F', $pdfFile);
// Tampilkan PDF di tab baru
echo '<script type="text/javascript">window.open("' . $pdfFile . '", "_blank")</script>';
} catch (Exception $e) {
sweetAlert("Error: ' . $e->getMessage() . '", "error");
}
}
if (isset($_POST['ubah'])) {
$fotoodp1 = $_SESSION['uploaded_files']['odp'.$isi['id']];
$fotorumah1 = $_SESSION['uploaded_files']['rmh'.$isi['id']];
$fotoonu1 = $_SESSION['uploaded_files']['onu'.$isi['id']];
$fototes1 = $_SESSION['uploaded_files']['tes'.$isi['id']];
if($_POST['jenis'] == "Hotspot"){
$hotspot = $_POST['user_hotspot'];
} else {
$hotspot = "";
}
$SQL = "UPDATE pelanggan SET
id_data_server = :id_data_server,
id_setting_mikrotik = :id_setting_mikrotik,
id_profile_paket = :id_profile_paket,
id_master_topologi = :id_master_topologi,
id_marketing = :id_marketing,
id_master_desa = :id_master_desa,
id_profile_tagihan = :id_profile_tagihan,
port_odp = :port_odp,
jenis_layanan = :jenis_layanan,
nama = :nama,
nik = :nik,
alamat = :alamat,
latitude = :latitude,
longitude = :longitude,
nomor_whatsapp = :nomor_whatsapp,
email = :email,
akun = :akun,
user_hotspot = :user_hotspot,
foto_odp = :foto_odp,
foto_rumah = :foto_rumah,
foto_onu = :foto_onu,
foto_test = :foto_test
WHERE id = :id";
try {
$stmt = $pdo->prepare($SQL);
$stmt->execute([
':id_data_server' => $_POST['ids'],
':id_setting_mikrotik' => $_POST['ism'],
':id_profile_paket' => $_POST['idp'],
':id_master_topologi' => $_POST['odp'],
':id_marketing' => $_POST['idm'],
':id_master_desa' => $_POST['desa'],
':id_profile_tagihan' => $_POST['profiletag'],
':port_odp' => $_POST['port'],
':jenis_layanan' => $_POST['jenis'],
':nama' => $_POST['nama'],
':nik' => $_POST['nik'],
':alamat' => $_POST['alamat'],
':latitude' => $_POST['latitude'],
':longitude' => $_POST['longitude'],
':nomor_whatsapp' => $_POST['nowa'],
':email' => $_POST['email'],
':akun' => $_POST['akun'],
':user_hotspot' => $hotspot,
':foto_odp' => $fotoodp1,
':foto_rumah' => $fotorumah1,
':foto_onu' => $fotoonu1,
':foto_test' => $fototes1,
':id' => $page[1]
]);
sweetAlert("Data pelanggan sudah diubah", "success");
} catch (PDOException $e) {
// Handle error appropriately
sweetAlert("Error: " . $e->getMessage(), "error");
// echo "Error: " . $e->getMessage();
}
}
//Nonaktifkan Pelanggan
if (isset($_POST['nonaktifkan'])) {
$set1 = $con->query("SELECT ip_address,username,password,port_api FROM setting_mikrotik WHERE id = '$isi[id_setting_mikrotik]'");
$pset = $set1->fetch_assoc();
$m_ip = $pset['ip_address'];
$m_user = $pset['username'];
$m_pass = $pset['password'];
$m_port = $pset['port_api'];
// require('router_api/routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($m_ip, $m_user, $m_pass, $m_port))
{
$arrID=$API->comm("/ppp/secret/getall",
array(
".proplist"=> ".id",
"?name" => $user ,
));
$API->comm("/ppp/secret/set",
array(
".id" => $arrID[0][".id"],
"disabled" => "true",
));
$arrID1=$API->comm("/ppp/active/getall",
array(
".proplist"=> ".id",
"?name" => $user ,
));
$API->comm("/ppp/active/remove",
array(
".id" => $arrID1[0][".id"],
));
$API->disconnect();
}
$up = $con->query("UPDATE pelanggan SET status = 'tidak aktif', status_koneksi = 'Off' WHERE id = '$page[1]'");
if ($up)
{
sweetAlert("Pelanggan Telah di Non Aktifkan", "success");
}
}
//Aktifkan Pelanggan
if (isset($_POST['aktifkan'])) {
$set1 = $con->query("SELECT ip_address,username,password,port_api FROM setting_mikrotik WHERE id = '$isi[id_setting_mikrotik]'");
$pset = $set1->fetch_assoc();
$m_ip = $pset['ip_address'];
$m_user = $pset['username'];
$m_pass = $pset['password'];
$m_port = $pset['port_api'];
// require('router_api/routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($m_ip, $m_user, $m_pass, $m_port))
{
$arrID=$API->comm("/ppp/secret/getall",
array(
".proplist"=> ".id",
"?name" => $user ,
));
$API->comm("/ppp/secret/set",
array(
".id" => $arrID[0][".id"],
"disabled" => "false",
));
$API->disconnect();
}
$up = $con->query("UPDATE pelanggan SET status = 'aktif' WHERE id = '$page[1]'");
if ($up)
{
sweetAlert("Pelanggan Telah di Aktifkan", "success");
}
}
if (isset($_POST['sampah']))
{
$set1 = $con->query("SELECT ip_address,username,password,port_api FROM setting_mikrotik WHERE id = '$isi[id_setting_mikrotik]'");
$pset = $set1->fetch_assoc();
$m_ip = $pset['ip_address'];
$m_user = $pset['username'];
$m_pass = $pset['password'];
$m_port = $pset['port_api'];
// require('router_api/routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($m_ip, $m_user, $m_pass, $m_port))
{
$arrID=$API->comm("/ppp/secret/getall",
array(
".proplist"=> ".id",
"?name" => $user ,
));
$API->comm("/ppp/secret/set",
array(
".id" => $arrID[0][".id"],
"disabled" => "true",
));
$arrID1=$API->comm("/ppp/active/getall",
array(
".proplist"=> ".id",
"?name" => $user ,
));
$API->comm("/ppp/active/remove",
array(
".id" => $arrID1[0][".id"],
));
$API->disconnect();
}
$up = $con->query("UPDATE pelanggan SET status = 'sampah', status_koneksi = 'Off' WHERE id = '$page[1]'");
if ($up)
{
sweetAlert("Pelanggan Telah di pindahkan ke Sampah", "info", "?".encrypt_url('user_sampah'));
}
}
if (isset($_POST['hapus']))
{
$iddata = $page[1];
deleteAlert("pelanggan",$iddata, '?'.encrypt_url($page[2]));
}
$_SESSION['uploaded_files']['odp'.$isi['id']] = $isi['foto_odp'];
$_SESSION['uploaded_files']['rmh'.$isi['id']] = $isi['foto_rumah'];
$_SESSION['uploaded_files']['onu'.$isi['id']] = $isi['foto_onu'];
$_SESSION['uploaded_files']['tes'.$isi['id']] = $isi['foto_test'];
?>
+184
View File
@@ -0,0 +1,184 @@
<style>
.file-upload {
display: none; /* Sembunyikan input file asli */
}
.upload-icon {
cursor: pointer;
width: 150px; /* Ukuran ikon */
height: 150px; /* Ukuran ikon */
vertical-align: middle; /* Align icon with button */
}
.upload-button {
display: inline-block;
margin-left: 10px;
margin-top: 30px;
}
.file-name {
margin-top: 10px;
font-weight: bold;
}
</style>
<!-- Main content -->
<section class="content" style="zoom : 88%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Import Data Pelanggan</h4>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<center>
<a href="excel/template_pelanggan.xlsx" class="btn btn-success m-4" download>Download Template</a>
<hr>
<h5>Klik untuk Select File Excel</h5>
<form id="uploadForm">
<input type="file" name="file" accept=".xlsx" class="file-upload" id="fileUpload" required>
<label for="fileUpload">
<img src="https://gwcareercampus.com/wp-content/uploads/sites/40/Microsoft-Excel.png" alt="Upload Icon" class="upload-icon" id="uploadIcon">
</label>
<br>
<div class="file-name" id="fileName"></div>
<button type="submit" class="upload-button btn btn-success">Import Data Pelanggan</button>
</form>
</center>
</div>
<div class="col-md-3">
<center>
<h5>Daftar sudah ter Upload</h5>
</center>
<table id="validTable" class="table table-bordered" style="margin-top: 20px;">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Status</th>
</tr>
</thead>
<tbody id="validTableBody"></tbody>
</table>
</div>
<div class="col-md-3">
<center>
<h5>Daftar Gagal Upload</h5>
</center>
<table id="errorTable" class="table table-bordered" style="margin-top: 20px;">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Status Error</th>
</tr>
</thead>
<tbody id="errorTableBody"></tbody>
</table>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<script>
const form = document.getElementById('uploadForm');
const fileInput = document.getElementById('fileUpload');
const uploadIcon = document.getElementById('uploadIcon');
const fileNameDisplay = document.getElementById('fileName');
form.addEventListener('submit', function(event) {
event.preventDefault(); // Mencegah pengiriman form default
const formData = new FormData(form);
fetch('excel/import.php?id=<?php echo $SvId; ?>', {
method: 'POST',
body: formData
})
.then(response => response.json()) // Mengambil respons sebagai JSON
.then(data => {
// Clear previous table data
const validTableBody = document.getElementById('validTableBody');
validTableBody.innerHTML = '';
const errorTableBody = document.getElementById('errorTableBody');
errorTableBody.innerHTML = '';
// Menampilkan data valid
if (data.status === 'success') {
if (data.dataValid.length > 0) {
document.getElementById('validTable').style.display = 'table';
data.dataValid.forEach((item, index) => {
const row = document.createElement('tr');
const noCell = document.createElement('td');
const nameCell = document.createElement('td');
const errorTypeCell = document.createElement('td');
noCell.textContent = index + 1; // Menambahkan nomor urut
nameCell.textContent = item[5] || 'Tidak ada nama'; // Ambil nama dari data valid
errorTypeCell.textContent = 'Success'; // Menunjukkan bahwa ini adalah data valid
row.appendChild(noCell);
row.appendChild(nameCell);
row.appendChild(errorTypeCell);
validTableBody.appendChild(row);
});
}
// Menampilkan data error
if (data.dataError.length > 0) {
document.getElementById('errorTable').style.display = 'table';
data.dataError.forEach((error, index) => {
const row = document.createElement('tr');
const noCell = document.createElement('td');
const nameCell = document.createElement('td');
const errorTypeCell = document.createElement('td');
noCell.textContent = index + 1; // Menambahkan nomor urut
nameCell.textContent = error.name || 'Tidak ada nama'; // Ganti dengan nama yang sesuai
errorTypeCell.textContent = error.errorType || 'Tidak ada jenis error'; // Ganti dengan jenis error yang sesuai
row.appendChild(noCell);
row.appendChild(nameCell);
row.appendChild(errorTypeCell);
errorTableBody.appendChild(row);
});
}
}
})
.catch(error => {
console.error('Error:', error);
});
});
fileInput.addEventListener('change', function() {
if (fileInput.files.length > 0) {
const fileName = fileInput.files[0].name;
fileNameDisplay.textContent = fileName; // Tampilkan nama file
validTableBody.innerHTML = '';
errorTableBody.innerHTML = '';
uploadIcon.src = "https://gwcareercampus.com/wp-content/uploads/sites/40/Microsoft-Excel.png"; // Ikon yang menunjukkan file telah dipilih
} else {
fileNameDisplay.textContent = 'Nama file akan muncul di sini'; // Kembali ke teks default
uploadIcon.src = "https://gwcareercampus.com/wp-content/uploads/sites/40/Microsoft-Excel.png"; // Kembali ke ikon default
}
});
</script>
+88
View File
@@ -0,0 +1,88 @@
<?php
$stmt = $pdo->prepare("SELECT
SUM(user_hs_aktif) AS user_hs_aktif
FROM v_jumlah_pelanggan $SqlDataWHIdM");
$stmt->execute();
$datauser = $stmt->fetchAll();
?>
<!-- Main content -->
<section class="content" style="zoom : 88%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Pelanggan Register</h4>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
<?php if(in_array("Tambah", $json_array[2]['sub_menu'])){ ?>
<a href="?<?php echo encrypt_url('user_tambah');?>" class="btn btn-danger btn-sm">Tambah</a></ol>
<?php } ?>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr class="bg-secondary">
<th style="max-width: 20px">No</th>
<th>Id Pelanggan</th>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<th>Akun Hotspot</th>
<?php } ?>
<th>Nama</th>
<th>Alamat</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Paket</th>
<th>Topologi</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
$aserver = mysqli_query($con,"SELECT id,akun,user_hotspot,nama,alamat,latitude,longitude,nomor_whatsapp,nama_server,nama_paket,nama_topologi,port_odp FROM v_pelanggan WHERE $SqlSvData status = 'register'");
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td><?php echo $server['akun']; ?></td>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<td><?php echo $server['user_hotspot']; ?></td>
<?php } ?>
<td><?php echo $server['nama']; ?></td>
<td style="max-width: 200px"><?php echo $server['alamat']; ?></td>
<td><a href="https://google.com/maps/?q=<?php echo $server['latitude'].','.$server['longitude']; ?>" target="_blank"><?php echo $server['latitude'].', '.$server['longitude']; ?></a></td>
<td>
<?php echo $server['nomor_whatsapp'];?>
<a href="https://wa.me/<?php echo $server['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px;" class="btn btn-sm btn-success"><i class="fab fa-whatsapp"></i></a>
</td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nama_paket']; ?></td>
<td style="max-width: 100px"><?php echo $server['nama_topologi'].' Port '.$server['port_odp']; ?></td>
<td>
<a href="?<?php echo encrypt_url('user_detail|'.$server['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-warning btn-sm m-1">Aktivasi / Edit</a>
</td>
</tr>
<?php $no++; } ?>
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
+142
View File
@@ -0,0 +1,142 @@
<section class="content" style="zoom : 90%;">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Remote Router / ONU Pelanggan</h4>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<?php
$ambil=$con->query("SELECT id,ip_address,username,password,port_api,port_remote,user_remote,last_remote FROM setting_mikrotik WHERE id='$page[2]'");
$pecah= $ambil->fetch_assoc();
if ($page[1] == 0000) {
$addressuser = $page[3];
$nama = $page[4];
$lasttime = "";
$alamat = "";
} else {
$sqlpel=$con->query("SELECT id,nama,ip_address,time_update,alamat FROM pelanggan WHERE id='$page[1]'");
$pel= $sqlpel->fetch_assoc();
// print_r($pecah);
$addressuser = $pel['ip_address'];
$nama = $pel['nama'];
$lasttime = $pel['time_update'];
$alamat = $pel['alamat'];
}
$idset = $pecah['id'];
$addressmik = $pecah['ip_address'];
$username = $pecah['username'];
$password = $pecah['password'];
$portapi = $pecah['port_api'];
$portremote = $pecah['port_remote'];
$last_remote = $pecah['last_remote'];
$user_remote = $pecah['user_remote'];
$now = date('Y-m-d H:i:s');
$start = new DateTime($last_remote);
$end = new DateTime($now);
$diff_in_seconds = $end->getTimestamp() - $start->getTimestamp();//
// print_r($pecah);
// echo "<br><br><br>";
// print_r($pel);
if ($SvNama != $user_remote && $diff_in_seconds <= 180)
{
?>
<div class="card-body">
<div class="text-center">
<div class="alert alert-danger">
<h5>
<b>PERHATIAN..!!</b><br>
Akun <b><?php echo $user_remote;?></b> Sedang remote pelanggan lain..<br>
Tunggu beberapa saat untuk bisa buka Router/Modem Pelanggan.</h5>
</div>
</div>
</div>
<?php
}
else
{
$con->query("UPDATE setting_mikrotik SET user_remote='$SvNama', last_remote='$now' WHERE id = '$idset'");
$linkremote = $addressmik.':'.$portremote;
//set dst-nat mikrotik
//require('router_api/routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect2($addressmik, $username, $password, $portapi)) {
$arrID=$API->comm("/ip/firewall/nat/getall",
array(
".proplist"=> ".id",
"?dst-port" => $portremote ,
));
$S=$API->comm("/ip/firewall/nat/set",
array(
".id" => $arrID[0][".id"],
"to-addresses" => $addressuser,
)
);
$API->disconnect();
} else {
echo "APLIKASI TIDAK DAPAT TERHUBUNG DENGAN MIKROTIK";
}
if($S !='')
{
?>
<div class="card-body">
<table class="table table-borderless">
<tr>
<td>Nama</td>
<td><?php echo $nama; ?></td>
</tr>
<tr>
<td>Alamat</td>
<td><?php echo $alamat; ?></td>
</tr>
<tr>
<td>Last Ip Address</td>
<td><?php echo $addressuser; ?></td>
</tr>
<tr>
<td>Last Up Time</td>
<td><?php echo $lasttime; ?></td>
</tr>
</table><br><br>
<div class="text-center">
<div class="alert alert-danger">
<b>PERINGATAN..!!</b>
Router / Modem Pelanggan bisa di remote jika fitur remote di Router/Modem di aktifkan.
</div>
<a target="_blank" class="btn btn-primary btn-rouded btn-sm" href="http://<?php echo $linkremote;?>">Buka Web Browser</a>
</div>
</div>
<?php
}
}
?>
</div></div></div></div></section>
+85
View File
@@ -0,0 +1,85 @@
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<!--<h4>Pelanggan Tidak Aktif</h4>-->
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr class="bg-danger">
<th style="max-width: 20px">No</th>
<th>Nama</th>
<th>Id Pelanggan</th>
<th>Alamat</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Paket</th>
<th>Mulai Berlangganan</th>
<th>Terakhir Bayar</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$no = 1;
$chunkSize = 200;
$stmt = $pdo->query("SELECT COUNT(id) FROM v_pelanggan WHERE $SqlSvData status = 'sampah' ORDER BY nama");
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT id,akun,nama,alamat,latitude,longitude,nomor_whatsapp,nama_server,nama_paket,time_start,status_koneksi,nama_mikrotik,id_setting_mikrotik,time_update,ip_address,tanggal_bayar FROM v_pelanggan WHERE $SqlSvData status = 'sampah' ORDER BY nama LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
foreach ($data as $row) {
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['akun']; ?></td>
<td style="max-width: 200px"><?php echo $row['alamat']; ?></td>
<td style="max-width: 200px">
<?php if(substr($row['latitude'],0,1) != '-') { ?>
<a href="https://google.com/maps/?q=<?php echo $row['latitude']; ?>" target="_blank"><?php echo $row['latitude']; ?></a>
<?php } else { ?>
<a href="https://google.com/maps/?q=<?php echo $row['latitude'].','.$row['longitude']; ?>" target="_blank"><?php echo $row['latitude'].', '.$row['longitude']; ?></a>
<?php } ?>
</td>
<td>
<?php echo $row['nomor_whatsapp'];?>
<a href="https://wa.me/<?php echo $row['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px;" class="btn btn-sm btn-success"><i class="fab fa-whatsapp"></i></a>
</td>
<td><?php echo $row['nama_server']; ?></td>
<td><?php echo $row['nama_paket']; ?></td>
<td><?php echo $row['time_start']; ?></td>
<td><?php echo $row['tanggal_bayar']; ?></td>
<td style="max-width: 30px">
<a href="?<?php echo encrypt_url('user_detail|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-info btn-sm m-1">Detail</a>
</td>
</tr>
<?php
$no++;
}} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+253
View File
@@ -0,0 +1,253 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-primary">
<div class="row">
<div class="col-sm-6">
<h5>Tambah Pelanggan</h5>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<form method="post" enctype="multipart/form-data">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<center><label>INFORMASI LAYANAN</label></center>
<div class="form-group m-1">
<label>Pilih Server</label>
<select id="dropdown0" class="form-control" required="required" name="ids">
<option value="">Pilih</option>
<?php
$List->set_list("data_server", $SqlDataWH);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo htmlspecialchars($value['id']); ?>"><?php echo htmlspecialchars($value['nama_server']); ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label>Jenis Layanan</label>
<select id="dropdown1" class="form-control" name="jenis" required>
<option value="">Pilih</option>
<option value="PPPOE">PPPOE</option>
<option value="Hotspot">Hotspot</option>
</select>
</div>
<div class="form-group m-1" id="group-dropdown5">
<label>Mikrotik</label>
<select id="dropdown5" class="form-control select2bs4" name="ism">
</select>
</div>
<div class="form-group m-1" id="group-dropdown2">
<label>Paket Berlangganan</label>
<select id="dropdown2" class="form-control select2bs4" required name="idp">
</select>
</div>
<div class="form-group m-1" id="group-dropdown3">
<label>Marketing Area / Penagih</label>
<select id="dropdown3" class="form-control select2bs4" required name="idm">
</select>
</div>
<hr><center><label>INFORMASI PRIBADI</label></center>
<div class="form-group m-1">
<label>NIK</label>
<input type="text" class="form-control" name="nik">
</div>
<div class="form-group m-1">
<label>Nama</label>
<input type="text" class="form-control" name="nama">
</div>
<div class="form-group m-1">
<label>Email</label>
<input type="email" class="form-control" name="email">
</div>
<div class="form-group m-1">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nowa">
</div>
<div class="form-group m-1">
<label>Alamat</label>
<input type="text" class="form-control" name="alamat">
</div>
<div class="form-group m-1" id="group-dropdown4">
<label>Desa</label>
<select id="dropdown4" class="form-control select2bs4" required="required" name="desa" data-id="">
<option value="">Pilih</option>
</select>
</div>
<hr><center><label>INFORMASI TOPOLOGI</label></center>
<div class="form-group m-1">
<label for="firstDropdown">Topologi ODP</label>
<select class="select2bs4" name="odp" style="width: 100%" id="firstDropdown" required="required" onchange="updateSecondDropdown()">
<option value="">Pilih</option>
<?php
$List = new Listdata();
$List->set_list("master_topologi", $SqlDataWHId);
foreach ($List->get_list() as $key => $value): ?>
<option value="<?php echo $value['id']; ?>"><?php echo $value['nama']; ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group m-1">
<label for="secondDropdown">Port ODP</label>
<select id="secondDropdown" name="port" class="form-control" required="required" data-id="">
</select>
</div>
</div>
<div class="col-sm-6">
<div class="form-group m-1">
<label>Pilih Lokasi Maps / Isi Koordinat</label>
<input class="form-control" type="text" id="latlong" required name="koordinat">
<i class="text-danger"><small>Anda bisa pilih salah satu untuk mengisi bagian ini</small></i>
<!-- Input hidden untuk latitude dan longitude -->
<input type="hidden" id="latitude" data-maps="latitude" name="latitude" required="required">
<input type="hidden" id="longitude" data-maps="longitude" name="longitude" required="required">
<div id="map" style="height:250px;margin-top: 10px;"></div>
</div>
<div class="row">
<div class="col-sm-6">
<center>
<label>Upload Foto Port ODP</label>
<div class="uploadImage" data-id="odp">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
<label>Upload Foto Rumah</label>
<div class="uploadImage" data-id="rmh">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
<div class="col-sm-6">
<center>
<label>Upload Foto ONU terinstalasi</label>
<div class="uploadImage" data-id="onu">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
<label>Upload SpeedTest</label>
<div class="uploadImage" data-id="tes">
<span>Click to upload image</span>
<img src="#" alt="Image preview">
<div class="progressContainer">
<div class="progressBar"></div>
</div>
</div>
</center>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm" name="tambah">Tambah Pelanggan</button>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<?php
if (isset($_POST['tambah'])) {
$akun = date('YmdHis');
$fotoodp1 = $_SESSION['uploaded_files']['odp'];
$fotorumah1 = $_SESSION['uploaded_files']['rmh'];
$fotoonu1 = $_SESSION['uploaded_files']['onu'];
$fototes1 = $_SESSION['uploaded_files']['tes'];
$nowa = preg_replace("/[^0-9]/", "", $_POST['nowa']);
try {
$cekExist = $pdo->prepare("SELECT id FROM pelanggan WHERE email = :email OR nik = :nik");
$cekExist->execute([
':email' => $_POST['email'],
':nik' => $_POST['nik']
]);
if ($cekExist->rowCount() === 0) {
// Siapkan pernyataan SQL
$stmt = $pdo->prepare("INSERT INTO pelanggan (id_data_server, id_setting_mikrotik, id_profile_paket, id_master_topologi, id_marketing, id_master_desa, port_odp, jenis_layanan, nama, nik, alamat, latitude, longitude, nomor_whatsapp, email, foto_odp, foto_rumah, foto_onu, foto_test, akun, status) VALUES
(:id_data_server, :id_setting_mikrotik, :id_profile_paket, :id_master_topologi, :id_marketing, :id_master_desa, :port_odp, :jenis_layanan, :nama, :nik, :alamat, :latitude, :longitude, :nomor_whatsapp, :email, :foto_odp, :foto_rumah, :foto_onu, :foto_test, :akun, 'register')");
// Ikat parameter
$stmt->bindParam(':id_data_server', $_POST['ids']);
$stmt->bindParam(':id_setting_mikrotik', $_POST['ism']);
$stmt->bindParam(':id_profile_paket', $_POST['idp']);
$stmt->bindParam(':id_master_topologi', $_POST['odp']);
$stmt->bindParam(':id_marketing', $_POST['idm']);
$stmt->bindParam(':id_master_desa', $_POST['desa']);
$stmt->bindParam(':port_odp', $_POST['port']);
$stmt->bindParam(':jenis_layanan', $_POST['jenis']);
$stmt->bindParam(':nama', $_POST['nama']);
$stmt->bindParam(':nik', $_POST['nik']);
$stmt->bindParam(':alamat', $_POST['alamat']);
$stmt->bindParam(':latitude', $_POST['latitude']);
$stmt->bindParam(':longitude', $_POST['longitude']);
$stmt->bindParam(':nomor_whatsapp', $nowa);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':foto_odp', $fotoodp1);
$stmt->bindParam(':foto_rumah', $fotorumah1);
$stmt->bindParam(':foto_onu', $fotoonu1);
$stmt->bindParam(':foto_test', $fototes1);
$stmt->bindParam(':akun', $akun);
// Eksekusi pernyataan
$stmt->execute();
$last_id = $pdo->lastInsertId();
$watsap = $pdo->prepare("SELECT nomor_whatsapp FROM data_server WHERE id = :iddata");
$watsap->execute([':iddata' => $_POST['ids']]);
$watsapp = $watsap->fetch(PDO::FETCH_ASSOC);
// Kirim Pesan WhatsApp
$nomor = explode(',', $nowa.','.$watsapp['nomor_whatsapp']);
$APIwa = new PesanWA();
$APIwa->Create_Pesan($_POST['ids'], $last_id, 'pesan_registrasi');
$Pesan = $APIwa->Get_Pesan();
$APIwa->Send_Pesan($_POST['ids'], 'sendMessage', $nomor, $Pesan);
$_SESSION['uploaded_files'] = '';
$_SESSION['uploaded_files'] = '';
$_SESSION['uploaded_files'] = '';
$_SESSION['uploaded_files'] = '';
sweetAlert("Data pelanggan telah di tambahkan", "success", "?".encrypt_url('user_register'));
} else {
$existRow = $cekExist->fetch(PDO::FETCH_ASSOC);
if ($existRow['email'] === $_POST['email']) {
sweetAlert("Registrasi GAGAL..! EMAIL sudah terdaftar", "error");
} elseif ($existRow['nik'] === $_POST['nik']) {
sweetAlert("Registrasi GAGAL..! NIK sudah terdaftar", "error");
} else {
sweetAlert("Registrasi GAGAL..! Data sudah terdaftar", "error");
}
}
// print_r($nomor);
} catch (PDOException $e) {
// Tangani kesalahan
sweetAlert("Error: " . $e->getMessage(), "error");
}
}
?>
+108
View File
@@ -0,0 +1,108 @@
<?php
$stmt = $pdo->prepare("SELECT
SUM(user_hs_aktif) AS user_hs_aktif
FROM v_jumlah_pelanggan $SqlDataWHIdM");
$stmt->execute();
$datauser = $stmt->fetchAll();
?>
<section class="content" style="zoom : 85%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h4>Pelanggan Tidak Aktif</h4>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr class="bg-danger">
<th style="max-width: 20px">No</th>
<th>Nama</th>
<th>Id Pelanggan</th>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<th>Akun Hotspot</th>
<?php } ?>
<th>Alamat</th>
<th>Koordinat</th>
<th>Nomor WhatsApp</th>
<th>Server</th>
<th>Mikrotik</th>
<th>Paket</th>
<th>Status Koneksi</th>
<th>Mulai Berlangganan</th>
<th>Terakhir Bayar</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
// Teknik CHUNGKING
$no = 1;
$chunkSize = 200;
$stmt = $pdo->query("SELECT COUNT(id) FROM v_pelanggan WHERE $SqlSvData status = 'tidak aktif' ORDER BY nama");
$totalRows = $stmt->fetchColumn();
for ($offset = 0; $offset < $totalRows; $offset += $chunkSize) {
$stmt = $pdo->prepare("SELECT id,akun,user_hotspot,nama,alamat,latitude,longitude,nomor_whatsapp,nama_server,nama_paket,time_start,status_koneksi,nama_mikrotik,id_setting_mikrotik,time_update,ip_address,tanggal_bayar FROM v_pelanggan WHERE $SqlSvData status = 'tidak aktif' ORDER BY nama LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $chunkSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
foreach ($data as $row) {
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['akun']; ?></td>
<?php if($datauser[0]['user_hs_aktif'] > 0) { ?>
<td><?php echo $row['user_hotspot']; ?></td>
<?php } ?>
<td style="max-width: 200px"><?php echo $row['alamat']; ?></td>
<td style="max-width: 200px">
<?php if(substr($row['latitude'],0,1) != '-') { ?>
<a href="https://google.com/maps/?q=<?php echo $row['latitude']; ?>" target="_blank"><?php echo $row['latitude']; ?></a>
<?php } else { ?>
<a href="https://google.com/maps/?q=<?php echo $row['latitude'].','.$row['longitude']; ?>" target="_blank"><?php echo $row['latitude'].', '.$row['longitude']; ?></a>
<?php } ?>
</td>
<td>
<?php echo $row['nomor_whatsapp'];?>
<a href="https://wa.me/<?php echo $row['nomor_whatsapp']; ?>" target="_blank" style="border-radius: 20px;" class="btn btn-sm btn-success"><i class="fab fa-whatsapp"></i></a>
</td>
<td><?php echo $row['nama_server']; ?></td>
<td><?php echo $row['nama_mikrotik']; ?></td>
<td><?php echo $row['nama_paket']; ?></td>
<td>
<?php echo $row['status_koneksi']; if($row['status_koneksi'] == 'On') { ?>
<a href="?<?php echo encrypt_url('user_remote|'.$row['id'].'|'.$row['id_setting_mikrotik']); ?>" class="btn btn-sm btn-success ml-1" style="border-radius: 20px;">Remote</a>
<br><?php echo $row['ip_address']; ?>
<?php } ?>
<br><?php echo $row['time_update']; ?>
</td>
<td><?php echo $row['time_start']; ?></td>
<td><?php echo $row['tanggal_bayar']; ?></td>
<td style="max-width: 30px">
<a href="?<?php echo encrypt_url('user_detail|'.$row['id'].'|'.$page[0]); ?>" class="btn btn-sm btn-info btn-sm m-1">Detail</a>
</td>
</tr>
<?php
$no++;
}} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+95
View File
@@ -0,0 +1,95 @@
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">Pelanggan Unmanage</h3>
</div>
<div class="col-sm-6">
<ol class="float-sm-right mb-0">
</ol>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="row">
<div class="col-md-4">
<div class="card">
<div class="card-body text-center text-danger">
<h4>INFORMASI</h4>
<hr>
<p>Ini adalah data yang termonitoring aktif di PPPOE Mikrotik tapi tidak terdaftar di aplikasi</p>
</div>
</div>
</div>
<div class="col-md-8">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Nama Server</th>
<th>Nama Mikrotik</th>
<th>Akun PPPOE</th>
<th>IP Address</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$aserver = mysqli_query($con, "SELECT id, id_data_server, ppp_unmanage, nama FROM setting_mikrotik $SqlDataWHId");
while ($server = mysqli_fetch_assoc($aserver)) {
// Decode JSON dari kolom `ppp_unmanage`
$unmanage = json_decode($server['ppp_unmanage'], true);
// Validasi apakah hasil decode adalah array
if (is_array($unmanage)) {
foreach ($unmanage['akun_unmanage'] as $key => $value) {
?>
<tr>
<td>
<?php
// Jika Anda ingin menampilkan data server
$datasv = explode("|", $server['id_data_server']);
foreach ($datasv as $isidata) {
$asv = mysqli_query($con, "SELECT nama_server FROM data_server WHERE id = '$isidata'");
$sv = mysqli_fetch_assoc($asv);
echo htmlspecialchars($sv['nama_server']);
}
?>
</td>
<td><?php echo htmlspecialchars($server['nama']); ?></td>
<td><?php echo htmlspecialchars($value['akun']); ?></td>
<td><?php echo htmlspecialchars($value['ip_address']); ?></td>
<td>
<a href="?<?php echo encrypt_url('user_remote|0000|' . $server['id'] . '|' . $value['ip_address'] . '|' . $value['akun']); ?>"
class="btn btn-sm btn-success ml-1" style="border-radius: 20px;">Remote</a>
</td>
</tr>
<?php
} // End of foreach
} else {
echo "<tr><td colspan='5'>Data PPP Unmanage tidak valid</td></tr>";
}
} // End of while
?>
</tbody>
</table>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
+114
View File
@@ -0,0 +1,114 @@
<section class="content" style="zoom : 88%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">WhatsApp Gateway</h3>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th style="max-width: 20px">No</th>
<th>Nama Server</th>
<th>Nomor WhatsApp</th>
<th>Url</th>
<th>API Key</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
if($SvId == '1'){
$SQL = "SELECT id,nama_server,nomor_whatsapp,url_whatsapp_gateway,apikey_whatsapp,status_whatsapp FROM data_server WHERE id != '1'";
}
else{
$SQL = "SELECT id,nama_server,nomor_whatsapp,url_whatsapp_gateway,apikey_whatsapp,status_whatsapp FROM data_server WHERE id IN (".$SvId.")";
}
$no = 1;
$aserver = mysqli_query($con,$SQL);
while ($server = mysqli_fetch_assoc($aserver))
{
?>
<tr>
<td style="max-width: 20px"><?php echo $no; ?></td>
<td><?php echo $server['nama_server']; ?></td>
<td><?php echo $server['nomor_whatsapp']; ?></td>
<td><?php echo $server['url_whatsapp_gateway']; ?></td>
<td><?php echo $server['apikey_whatsapp']; ?></td>
<td>
<?php
if ($server['status_whatsapp'] == 'Connected')
{
echo '<span class="badge badge-success">'.$server['status_whatsapp'].'</span>';
}
else
{
echo '<span class="badge badge-danger">'.$server['status_whatsapp'].'</span>';
}
?>
</td>
<td>
<a href="?<?php echo encrypt_url('whatsapp_gateway_scan|'.$server['id']);?>" class="text-success"><i class="fas fa-qrcode fa-2x"></i></a>
<a type="button" class="btn btn-sm btn-secondary btn-sm ml-3" data-toggle="modal" data-target="#modal-proses<?php echo $server['id'];?>" style="margin-top: -15px;">Edit</a>
</td>
</tr>
<div class="modal fade" id="modal-proses<?php echo $server['id'];?>">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-secondary">
<h4 class="modal-title">Edit Profile WhatsApp Gateway</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form method="post" enctype="multipart/form-data">
<div class="modal-body">
<div class="form-group">
<label>Nomor WhatsApp</label>
<input type="text" class="form-control" name="nowa" value="<?php echo $server['nomor_whatsapp']; ?>">
</div>
<div class="form-group">
<label>Url WhatsApp Gateway</label>
<input type="text" class="form-control" name="url" value="<?php echo $server['url_whatsapp_gateway']; ?>">
</div>
<div class="form-group">
<label>APIKey WhatsApp Gateway</label>
<input type="text" class="form-control" name="apikey" value="<?php echo $server['apikey_whatsapp']; ?>">
</div>
</div>
<div class="modal-footer justify-content-between">
<button type="submit" name="lanjut<?php echo $server['id'];?>" class="btn btn-primary">Edit</button>
</div>
</form>
<?php
if (isset($_POST['lanjut'.$server['id']]))
{
$up = mysqli_query($con,"UPDATE data_server SET nomor_whatsapp = '$_POST[nowa]', url_whatsapp_gateway = '$_POST[url]', apikey_whatsapp = '$_POST[apikey]' WHERE id = '$server[id]'");
if ($up)
{
sweetAlert("Data telah di ubah", "success");
}
}
?>
</div>
</form>
</div>
<?php $no++; } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
+74
View File
@@ -0,0 +1,74 @@
<section class="content" style="zoom : 88%;">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">WhatsApp Gateway</h3>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="card-body">
<h4 class="text-center">Tautkan WhatsApp</h4>
<div id="content"></div>
</div>
</div>
<div class="col-md-6">
<div class="card-body">
<h5 class="text-center">Test Kirim Pesan</h5>
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label><small>Nomor WhatsApp</small></label>
<input type="text" class="form-control" name="no" id=no required="required">
</div>
<div class="form-group">
<label><small>Pesan</small></label>
<textarea class="form-control" type="text" name="teskt" rows="10" style="width: 100%; height:100%;" required="required"></textarea>
</div>
<input type="submit" name="send" class="btn btn-sm btn-success" value="Test Kirim Pesan">
</form>
<?php
if (isset($_POST['send']))
{
$nomor = explode(",", $_POST['no']);
// array($_POST['no']);
$message = $_POST['teskt'];
$APIwa = new PesanWA();
$APIwa->Send_Pesan($page[1],'sendMessage',$nomor,$message);
if ($APIwa) {
sweetAlert("Pesan akan segera di kirim", "success");
}
}
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<script>
function loadContent() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'list_data/qrcode_whatsapp.php?id=<?php echo $page[1]; ?>', true); // Ganti 'content.html' dengan URL sumber kontenmu
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById('content').innerHTML = xhr.responseText;
}
};
xhr.send();
}
// Muat konten pertama kali saat halaman dimuat
window.onload = loadContent;
// Muat ulang konten setiap 5 detik (5000 ms)
setInterval(loadContent, 5000);
</script>