TIF_NGANJUK_E41212020/admin/main.php

322 lines
13 KiB
PHP

<main id="main" class="main">
<div class="pagetitle">
<h1>Dashboard</h1>
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="index.html">Home</a></li>
<li class="breadcrumb-item active">Dashboard</li>
</ol>
</nav>
</div><!-- End Page Title -->
<section class="section dashboard">
<div class="row">
<!-- Left side columns -->
<div class="col-lg">
<div class="row">
<?php
// Ambil filter dari URL atau default 'today'
$filter = isset($_GET['filter']) ? $_GET['filter'] : 'today';
// Mendapatkan tanggal hari ini, bulan ini, dan tahun ini
$tanggalHariIni = date('Y-m-d');
$bulanIni = date('m');
$tahunIni = date('Y');
// Mendapatkan tanggal, bulan, dan tahun sebelumnya
$tanggalKemarin = date('Y-m-d', strtotime('-1 day'));
$bulanSebelumnya = date('m', strtotime('-1 month'));
$tahunSebelumnya = date('Y', strtotime('-1 year'));
// Tentukan query berdasarkan filter yang dipilih
if ($filter == 'today') {
// Pesanan hari ini
$sqlNow = "SELECT COUNT(*) as total FROM orders WHERE DATE(tanggal_order) = '$tanggalHariIni' AND status_order = 'selesai'";
// Pesanan kemarin
$sqlPrev = "SELECT COUNT(*) as total FROM orders WHERE DATE(tanggal_order) = '$tanggalKemarin' AND status_order = 'selesai'";
$title = "Penjualan | Hari Ini";
} elseif ($filter == 'month') {
// Pesanan bulan ini
$sqlNow = "SELECT COUNT(*) as total FROM orders WHERE MONTH(tanggal_order) = '$bulanIni' AND YEAR(tanggal_order) = '$tahunIni' AND status_order = 'selesai'";
// Pesanan bulan sebelumnya
$sqlPrev = "SELECT COUNT(*) as total FROM orders WHERE MONTH(tanggal_order) = '$bulanSebelumnya' AND YEAR(tanggal_order) = '$tahunIni' AND status_order = 'selesai'";
$title = "Penjualan | Bulan Ini";
} elseif ($filter == 'year') {
// Pesanan tahun ini
$sqlNow = "SELECT COUNT(*) as total FROM orders WHERE YEAR(tanggal_order) = '$tahunIni' AND status_order = 'selesai'";
// Pesanan tahun sebelumnya
$sqlPrev = "SELECT COUNT(*) as total FROM orders WHERE YEAR(tanggal_order) = '$tahunSebelumnya' AND status_order = 'selesai'";
$title = "Penjualan | Tahun Ini";
}
// Eksekusi query
$resultNow = mysqli_query($conn, $sqlNow);
$resultPrev = mysqli_query($conn, $sqlPrev);
// Ambil hasil query
$totalNow = mysqli_fetch_assoc($resultNow)['total'];
$totalPrev = mysqli_fetch_assoc($resultPrev)['total'];
// Hitung persentase perubahan
if ($totalPrev > 0) {
$percentChange = (($totalNow - $totalPrev) / $totalPrev) * 100;
} else {
$percentChange = $totalNow > 0 ? 100 : 0;
}
// Tentukan warna teks untuk kenaikan/penurunan
if ($percentChange > 0) {
$changeText = '<span class="text-success small pt-1 fw-bold">' . round($percentChange, 1) . '%</span> <span class="text-muted small pt-2 ps-1">meningkat</span>';
} elseif ($percentChange < 0) {
$changeText = '<span class="text-danger small pt-1 fw-bold">' . round(abs($percentChange), 1) . '%</span> <span class="text-muted small pt-2 ps-1">menurun</span>';
} else {
$changeText = '<span class="text-muted small pt-1 fw-bold">0%</span> <span class="text-muted small pt-2 ps-1">tidak ada perubahan</span>';
}
?>
<!-- Sales Card -->
<div class="col-xxl-4 col-md-6">
<div class="card info-card sales-card">
<div class="filter">
<a class="icon" href="#" data-bs-toggle="dropdown"><i class="bi bi-three-dots"></i></a>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<li class="dropdown-header text-start">
<h6>Filter</h6>
</li>
<li><a class="dropdown-item" href="?filter=today">Hari Ini</a></li>
<li><a class="dropdown-item" href="?filter=month">Bulan Ini</a></li>
<li><a class="dropdown-item" href="?filter=year">Tahun Ini</a></li>
</ul>
</div>
<div class="card-body">
<h5 class="card-title"><?php echo $title; ?></h5>
<div class="d-flex align-items-center">
<div class="card-icon rounded-circle d-flex align-items-center justify-content-center">
<i class="bi bi-cart"></i>
</div>
<div class="ps-3">
<h6><?php echo $totalNow; ?></h6>
<?php echo $changeText; ?>
</div>
</div>
</div>
</div>
</div>
<!-- End Sales Card -->
<!-- Revenue Card -->
<?php
// Ambil filter dari URL atau default 'today'
$filter = isset($_GET['filter']) ? $_GET['filter'] : 'today';
// Mendapatkan tanggal, bulan, dan tahun saat ini
$tanggalHariIni = date('Y-m-d');
$bulanIni = date('m');
$tahunIni = date('Y');
// Mendapatkan tanggal, bulan, dan tahun sebelumnya
$tanggalKemarin = date('Y-m-d', strtotime('-1 day'));
$bulanSebelumnya = date('m', strtotime('-1 month'));
$tahunSebelumnya = date('Y', strtotime('-1 year'));
// Tentukan query berdasarkan filter yang dipilih
if ($filter == 'today') {
// Pendapatan hari ini
$sqlNow = "SELECT SUM(total_harga) as total FROM orders WHERE DATE(tanggal_order) = '$tanggalHariIni' AND status_order = 'selesai'";
// Pendapatan kemarin
$sqlPrev = "SELECT SUM(total_harga) as total FROM orders WHERE DATE(tanggal_order) = '$tanggalKemarin' AND status_order = 'selesai'";
$title = "Pendapatan | Hari Ini";
} elseif ($filter == 'month') {
// Pendapatan bulan ini
$sqlNow = "SELECT SUM(total_harga) as total FROM orders WHERE MONTH(tanggal_order) = '$bulanIni' AND YEAR(tanggal_order) = '$tahunIni' AND status_order = 'selesai'";
// Pendapatan bulan sebelumnya
$sqlPrev = "SELECT SUM(total_harga) as total FROM orders WHERE MONTH(tanggal_order) = '$bulanSebelumnya' AND YEAR(tanggal_order) = '$tahunIni' AND status_order = 'selesai'";
$title = "Pendapatan | Bulan Ini";
} elseif ($filter == 'year') {
// Pendapatan tahun ini
$sqlNow = "SELECT SUM(total_harga) as total FROM orders WHERE YEAR(tanggal_order) = '$tahunIni' AND status_order = 'selesai'";
// Pendapatan tahun sebelumnya
$sqlPrev = "SELECT SUM(total_harga) as total FROM orders WHERE YEAR(tanggal_order) = '$tahunSebelumnya' AND status_order = 'selesai'";
$title = "Pendapatan | Tahun Ini";
}
// Eksekusi query
$resultNow = mysqli_query($conn, $sqlNow);
$resultPrev = mysqli_query($conn, $sqlPrev);
// Ambil hasil query
$totalNow = mysqli_fetch_assoc($resultNow)['total'];
$totalPrev = mysqli_fetch_assoc($resultPrev)['total'];
// Jika NULL, ubah jadi 0
$totalNow = $totalNow ? $totalNow : 0;
$totalPrev = $totalPrev ? $totalPrev : 0;
// Hitung persentase perubahan
if ($totalPrev > 0) {
$percentChange = (($totalNow - $totalPrev) / $totalPrev) * 100;
} else {
$percentChange = $totalNow > 0 ? 100 : 0;
}
// Tentukan warna teks untuk kenaikan/penurunan
if ($percentChange > 0) {
$changeText = '<span class="text-success small pt-1 fw-bold">' . round($percentChange, 1) . '%</span> <span class="text-muted small pt-2 ps-1">meningkat</span>';
} elseif ($percentChange < 0) {
$changeText = '<span class="text-danger small pt-1 fw-bold">' . round(abs($percentChange), 1) . '%</span> <span class="text-muted small pt-2 ps-1">menurun</span>';
} else {
$changeText = '<span class="text-muted small pt-1 fw-bold">0%</span> <span class="text-muted small pt-2 ps-1">tidak ada perubahan</span>';
}
// Format angka pendapatan agar lebih rapi
$formattedTotalNow = number_format($totalNow, 0, ',', '.');
?>
<!-- Revenue Card -->
<div class="col-xxl-4 col-md-6">
<div class="card info-card revenue-card">
<div class="filter">
<a class="icon" href="#" data-bs-toggle="dropdown"><i class="bi bi-three-dots"></i></a>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<li class="dropdown-header text-start">
<h6>Filter</h6>
</li>
<li><a class="dropdown-item" href="?filter=today">Hari Ini</a></li>
<li><a class="dropdown-item" href="?filter=month">Bulan Ini</a></li>
<li><a class="dropdown-item" href="?filter=year">Tahun Ini</a></li>
</ul>
</div>
<div class="card-body">
<h5 class="card-title"><?php echo $title; ?></h5>
<div class="d-flex align-items-center">
<div class="card-icon rounded-circle d-flex align-items-center justify-content-center">
<i class="bi bi-currency-dollar"></i>
</div>
<div class="ps-3">
<h6>Rp <?php echo $formattedTotalNow; ?></h6>
<?php echo $changeText; ?>
</div>
</div>
</div>
</div>
</div>
<!-- End Revenue Card -->
<?php
// Ambil total pembeli terdaftar
$query_total_pembeli = "SELECT COUNT(id_pembeli) as total_pembeli FROM pembeli";
$result_total_pembeli = $conn->query($query_total_pembeli);
$row_total_pembeli = $result_total_pembeli->fetch_assoc();
$total_pembeli = $row_total_pembeli['total_pembeli'];
?>
<!-- Customers Card -->
<div class="col-xxl-4 col-xl-12">
<div class="card info-card customers-card">
<div class="card-body">
<h5 class="card-title">Pembeli Terdaftar</h5>
<div class="d-flex align-items-center">
<div class="card-icon rounded-circle d-flex align-items-center justify-content-center">
<i class="bi bi-people"></i>
</div>
<div class="ps-3">
<h6><?php echo number_format($total_pembeli, 0, ',', '.'); ?></h6>
</div>
</div>
</div>
</div>
</div>
<!-- End Customers Card -->
</div>
</div><!-- End Left side columns -->
<?php
// Ambil jumlah transaksi per jam untuk hari ini
$jamBuka = 08.00; // Ubah sesuai jam operasional
$jamTutup = 21.00; // Ubah sesuai jam operasional
$tanggalHariIni = date('Y-m-d');
// Inisialisasi array untuk menyimpan jumlah transaksi per jam
$dataTransaksi = array_fill($jamBuka, ($jamTutup - $jamBuka + 1), 0);
// Query untuk mendapatkan jumlah transaksi per jam
$query_transaksi = "SELECT HOUR(tanggal_order) as jam, COUNT(*) as total
FROM orders
WHERE DATE(tanggal_order) = '$tanggalHariIni'
GROUP BY HOUR(tanggal_order)";
$result_transaksi = mysqli_query($conn, $query_transaksi);
// Masukkan hasil query ke dalam array
while ($row = mysqli_fetch_assoc($result_transaksi)) {
$jam = (int) $row['jam'];
if (isset($dataTransaksi[$jam])) {
$dataTransaksi[$jam] = (int) $row['total'];
}
}
// Ubah data transaksi menjadi JSON untuk JavaScript
$labels = json_encode(array_keys($dataTransaksi));
$values = json_encode(array_values($dataTransaksi));
?>
<!-- Tambahkan elemen canvas untuk chart -->
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h5 class="card-title">Grafik Transaksi Hari Ini</h5>
<canvas id="transaksiChart"></canvas>
</div>
</div>
</div>
<!-- Ambil data transaksi dari PHP ke JavaScript -->
<script>
document.addEventListener("DOMContentLoaded", function () {
var ctx = document.getElementById('transaksiChart').getContext('2d');
var transaksiChart = new Chart(ctx, {
type: 'line',
data: {
labels: [<?php foreach ($dataTransaksi as $jam => $total) { echo "'" . $jam . "',"; } ?>],
datasets: [{
label: 'Jumlah Transaksi',
data: [<?php foreach ($dataTransaksi as $jam => $total) { echo $total . ","; } ?>],
borderColor: 'rgba(75, 192, 192, 1)',
backgroundColor: 'rgba(75, 192, 192, 0.2)',
borderWidth: 2,
fill: false
}]
},
options: {
responsive: true,
scales: {
x: { title: { display: true, text: 'Jam' } },
y: { title: { display: true, text: 'Jumlah Transaksi' }, beginAtZero: true }
}
}
});
});
</script>
<!-- Tambahkan link ke Chart.js jika belum ada -->
</div>
</section>
</main><!-- End #main -->