335 lines
15 KiB
PHP
335 lines
15 KiB
PHP
<?php
|
|
include 'auth.php';
|
|
include '../koneksi.php';
|
|
|
|
// Total Semua
|
|
$queryUsersTotal = "SELECT COUNT(*) AS total_users FROM users WHERE status = 'active' AND role = 'user'";
|
|
$resultUsersTotal = mysqli_query($conn, $queryUsersTotal);
|
|
$rowUsersTotal = mysqli_fetch_assoc($resultUsersTotal);
|
|
$totalUsers = $rowUsersTotal['total_users'];
|
|
|
|
// 7 Hari Terakhir
|
|
$queryUsersThisWeek = "SELECT COUNT(*) AS total_this_week FROM users WHERE status = 'active' AND role = 'user' AND created_at >= CURDATE() - INTERVAL 7 DAY";
|
|
$resultUsersThisWeek = mysqli_query($conn, $queryUsersThisWeek);
|
|
$rowUsersThisWeek = mysqli_fetch_assoc($resultUsersThisWeek);
|
|
$totalUsersThisWeek = $rowUsersThisWeek['total_this_week'];
|
|
|
|
// 7 Hari Sebelumnya
|
|
$queryUsersLastWeek = "SELECT COUNT(*) AS total_last_week FROM users WHERE status = 'active' AND role = 'user' AND created_at >= CURDATE() - INTERVAL 14 DAY AND created_at < CURDATE() - INTERVAL 7 DAY";
|
|
$resultUsersLastWeek = mysqli_query($conn, $queryUsersLastWeek);
|
|
$rowUsersLastWeek = mysqli_fetch_assoc($resultUsersLastWeek);
|
|
$totalUsersLastWeek = $rowUsersLastWeek['total_last_week'];
|
|
|
|
// Hitung persentase perubahan
|
|
$changeUsers = $totalUsersLastWeek > 0 ? (($totalUsersThisWeek - $totalUsersLastWeek) / $totalUsersLastWeek) * 100 : 0;
|
|
$iconUsers = $changeUsers >= 0 ? "bi-arrow-up text-success" : "bi-arrow-down text-danger";
|
|
$changeUsers = number_format(abs($changeUsers), 1);
|
|
|
|
// ========================== LANDING PAGE ==========================
|
|
$queryLandingPageTotal = "SELECT COUNT(*) AS total_landingpage FROM landingpage";
|
|
$resultLandingPageTotal = mysqli_query($conn, $queryLandingPageTotal);
|
|
$rowLandingPageTotal = mysqli_fetch_assoc($resultLandingPageTotal);
|
|
$totalLandingPage = $rowLandingPageTotal['total_landingpage'];
|
|
|
|
$queryLandingPageThisWeek = "SELECT COUNT(*) AS total_this_week FROM landingpage WHERE created_at >= CURDATE() - INTERVAL 7 DAY";
|
|
$resultLandingPageThisWeek = mysqli_query($conn, $queryLandingPageThisWeek);
|
|
$rowLandingPageThisWeek = mysqli_fetch_assoc($resultLandingPageThisWeek);
|
|
$totalLandingPageThisWeek = $rowLandingPageThisWeek['total_this_week'];
|
|
|
|
$queryLandingPageLastWeek = "SELECT COUNT(*) AS total_last_week FROM landingpage WHERE created_at >= CURDATE() - INTERVAL 14 DAY AND created_at < CURDATE() - INTERVAL 7 DAY";
|
|
$resultLandingPageLastWeek = mysqli_query($conn, $queryLandingPageLastWeek);
|
|
$rowLandingPageLastWeek = mysqli_fetch_assoc($resultLandingPageLastWeek);
|
|
$totalLandingPageLastWeek = $rowLandingPageLastWeek['total_last_week'];
|
|
|
|
$changeLandingPage = $totalLandingPageLastWeek > 0 ? (($totalLandingPageThisWeek - $totalLandingPageLastWeek) / $totalLandingPageLastWeek) * 100 : 0;
|
|
$iconLandingPage = $changeLandingPage >= 0 ? "bi-arrow-up text-success" : "bi-arrow-down text-danger";
|
|
$changeLandingPage = number_format(abs($changeLandingPage), 1);
|
|
|
|
// ========================== ARTIKEL ==========================
|
|
$queryArtikelTotal = "SELECT COUNT(*) AS total_artikel FROM detail_artikel";
|
|
$resultArtikelTotal = mysqli_query($conn, $queryArtikelTotal);
|
|
$rowArtikelTotal = mysqli_fetch_assoc($resultArtikelTotal);
|
|
$totalArtikel = $rowArtikelTotal['total_artikel'];
|
|
|
|
$queryArtikelThisWeek = "SELECT COUNT(*) AS total_this_week FROM detail_artikel WHERE created_at >= CURDATE() - INTERVAL 7 DAY";
|
|
$resultArtikelThisWeek = mysqli_query($conn, $queryArtikelThisWeek);
|
|
$rowArtikelThisWeek = mysqli_fetch_assoc($resultArtikelThisWeek);
|
|
$totalArtikelThisWeek = $rowArtikelThisWeek['total_this_week'];
|
|
|
|
$queryArtikelLastWeek = "SELECT COUNT(*) AS total_last_week FROM detail_artikel WHERE created_at >= CURDATE() - INTERVAL 14 DAY AND created_at < CURDATE() - INTERVAL 7 DAY";
|
|
$resultArtikelLastWeek = mysqli_query($conn, $queryArtikelLastWeek);
|
|
$rowArtikelLastWeek = mysqli_fetch_assoc($resultArtikelLastWeek);
|
|
$totalArtikelLastWeek = $rowArtikelLastWeek['total_last_week'];
|
|
|
|
$changeArtikel = $totalArtikelLastWeek > 0 ? (($totalArtikelThisWeek - $totalArtikelLastWeek) / $totalArtikelLastWeek) * 100 : 0;
|
|
$iconArtikel = $changeArtikel >= 0 ? "bi-arrow-up text-success" : "bi-arrow-down text-danger";
|
|
$changeArtikel = number_format(abs($changeArtikel), 1);
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
|
|
|
<title>Halaman Dashboard | Admin</title>
|
|
<meta content="" name="description">
|
|
<meta content="" name="keywords">
|
|
<meta name="robots" content="noindex">
|
|
|
|
|
|
<!-- Favicons -->
|
|
<link href="../assets/img/favicon.png" rel="icon">
|
|
<link href="../assets/img/apple-touch-icon.png" rel="apple-touch-icon">
|
|
|
|
<!-- Google Fonts -->
|
|
<link href="https://fonts.gstatic.com" rel="preconnect">
|
|
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Nunito:300,300i,400,400i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
|
|
|
|
<!-- Vendor CSS Files -->
|
|
<link href="../assets/template/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
|
<link href="../assets/template/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
|
|
<link href="../assets/template/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
|
|
<link href="../assets/template/vendor/quill/quill.snow.css" rel="stylesheet">
|
|
<link href="../assets/template/vendor/quill/quill.bubble.css" rel="stylesheet">
|
|
<link href="../assets/template/vendor/remixicon/remixicon.css" rel="stylesheet">
|
|
<link href="../assets/template/vendor/simple-datatables/style.css" rel="stylesheet">
|
|
|
|
<!-- Template Main CSS File -->
|
|
<link href="../assets/template/css/style.css" rel="stylesheet">
|
|
<link href="../assets/css/custom.css" rel="stylesheet">
|
|
|
|
<!-- =======================================================
|
|
* Template Name: NiceAdmin
|
|
* Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/
|
|
* Updated: Apr 20 2024 with Bootstrap v5.3.3
|
|
* Author: BootstrapMade.com
|
|
* License: https://bootstrapmade.com/license/
|
|
======================================================== -->
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<!-- ======= Header ======= -->
|
|
<header id="header" class="header fixed-top d-flex align-items-center">
|
|
|
|
<div class="d-flex align-items-center justify-content-between">
|
|
<a href="" class="logo d-flex align-items-center">
|
|
<img src="../assets/img/logo.png" alt="">
|
|
<span class="d-none d-lg-block">Portal UMKM</span>
|
|
</a>
|
|
<i class="bi bi-list toggle-sidebar-btn"></i>
|
|
</div><!-- End Logo -->
|
|
|
|
<nav class="header-nav ms-auto">
|
|
<ul class="d-flex align-items-center">
|
|
|
|
<li class="nav-item dropdown pe-3">
|
|
|
|
<a class="nav-link nav-profile d-flex align-items-center pe-0" href="#" data-bs-toggle="dropdown">
|
|
<span class="fw-semibold dropdown-toggle ps-2">Hai, <?php echo $_SESSION['nama_lengkap']; ?>!</span>
|
|
</a><!-- End Profile Iamge Icon -->
|
|
|
|
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow profile">
|
|
<li class="dropdown-header">
|
|
<h6><?php echo $_SESSION['nama_lengkap']; ?></h6>
|
|
<span><?php echo ucfirst($_SESSION['role']); ?></span>
|
|
</li>
|
|
<li>
|
|
<hr class="dropdown-divider">
|
|
</li>
|
|
|
|
<li>
|
|
<a class="dropdown-item d-flex align-items-center" href="update-profile">
|
|
<i class="bi bi-gear"></i>
|
|
<span>Pengaturan</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<hr class="dropdown-divider">
|
|
</li>
|
|
|
|
<li>
|
|
<a class="dropdown-item d-flex align-items-center" href="#" data-bs-toggle="modal" data-bs-target="#confirmLogoutModal">
|
|
<i class="bi bi-box-arrow-right"></i>
|
|
<span>Keluar</span>
|
|
</a>
|
|
</li>
|
|
|
|
</ul><!-- End Profile Dropdown Items -->
|
|
</li><!-- End Profile Nav -->
|
|
|
|
</ul>
|
|
</nav><!-- End Icons Navigation -->
|
|
|
|
</header><!-- End Header -->
|
|
|
|
<!-- ======= Sidebar ======= -->
|
|
<aside id="sidebar" class="sidebar">
|
|
|
|
<ul class="sidebar-nav sidebar-nav">
|
|
|
|
<li class="nav-item mb-2">
|
|
<a class="nav-link d-flex align-items-center collapsed" href="">
|
|
<i class="bi bi-columns-gap"></i>
|
|
<span>Dashboard</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item mb-2">
|
|
<a class="nav-link d-flex align-items-center" href="landingpage">
|
|
<i class="bi bi-journal-richtext"></i>
|
|
<span>Landing Page</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item mb-2">
|
|
<a class="nav-link d-flex align-items-center" href="artikel">
|
|
<i class="bi bi-newspaper"></i>
|
|
<span>Artikel</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item mb-2">
|
|
<a class="nav-link d-flex align-items-center" href="pengguna">
|
|
<i class="bi bi-people"></i>
|
|
<span>Pengguna</span>
|
|
</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</aside><!-- End Sidebar-->
|
|
|
|
<main id="main" class="main">
|
|
|
|
<div class="pagetitle">
|
|
<h1>Halaman Dashboard</h1>
|
|
<nav>
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item"><a href="/">Beranda</a></li>
|
|
<li class="breadcrumb-item active">Dashboard</li>
|
|
</ol>
|
|
</nav>
|
|
</div><!-- End Page Title -->
|
|
|
|
<?php if (isset($_SESSION['success'])): ?>
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
<?php echo $_SESSION['success']; ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
<?php unset($_SESSION['success']); // Hapus pesan setelah ditampilkan
|
|
?>
|
|
<?php endif; ?>
|
|
|
|
<?php if (isset($_SESSION['error'])): ?>
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<?php echo $_SESSION['error']; ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
<?php unset($_SESSION['error']); // Hapus pesan setelah ditampilkan
|
|
?>
|
|
<?php endif; ?>
|
|
|
|
<section class="section dashboard">
|
|
<div class="row g-0 g-md-3">
|
|
|
|
<!-- Pengguna Aktif Card -->
|
|
<div class="col-12 col-md-4">
|
|
<div class="card border-0 shadow-sm p-4 d-flex flex-row align-items-center rounded-4">
|
|
<div class="icon-container bg-primary text-white rounded-3 d-flex align-items-center justify-content-center">
|
|
<i class="bi bi-people fs-3"></i>
|
|
</div>
|
|
<div class="ms-3">
|
|
<h6 class="text-secondary mb-1">Pengguna Aktif</h6>
|
|
<h4 class="fw-bold text-dark"><?php echo $totalUsers; ?></h4>
|
|
<span class="text-success fw-semibold"><i class="bi bi-arrow-up"></i> <?php echo $changeUsers; ?>% (7 hari terakhir)</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Landing Page Dibuat Card -->
|
|
<div class="col-12 col-md-4">
|
|
<div class="card border-0 shadow-sm p-4 d-flex flex-row align-items-center rounded-4">
|
|
<div class="icon-container bg-success text-white rounded-3 d-flex align-items-center justify-content-center">
|
|
<i class="bi bi-journal-richtext fs-3"></i>
|
|
</div>
|
|
<div class="ms-3">
|
|
<h6 class="text-secondary mb-1">Landing Page Dibuat</h6>
|
|
<h4 class="fw-bold text-dark"><?php echo $totalLandingPage; ?></h4>
|
|
<span class="text-success fw-semibold"><i class="bi bi-arrow-up"></i> <?php echo $changeLandingPage; ?>% (7 hari terakhir)</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Artikel Card -->
|
|
<div class="col-12 col-md-4">
|
|
<div class="card border-0 shadow-sm p-4 d-flex flex-row align-items-center rounded-4">
|
|
<div class="icon-container bg-warning text-white rounded-3 d-flex align-items-center justify-content-center">
|
|
<i class="bi bi-newspaper fs-3"></i>
|
|
</div>
|
|
<div class="ms-3">
|
|
<h6 class="text-secondary mb-1">Artikel</h6>
|
|
<h4 class="fw-bold text-dark"><?php echo $totalArtikel; ?></h4>
|
|
<span class="text-danger fw-semibold"><i class="bi bi-arrow-down"></i> <?php echo $changeArtikel; ?>% (7 hari terakhir)</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Modal Konfirmasi Logout -->
|
|
<div class="modal fade" id="confirmLogoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Keluar</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
Apakah Anda yakin ingin keluar dari halaman ini?
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
|
<a href="logout.php" id="logoutConfirmBtn" class="btn btn-danger">Keluar</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</main><!-- End #main -->
|
|
|
|
<!-- ======= Footer ======= -->
|
|
<footer id="footer" class="footer">
|
|
<div class="copyright">
|
|
© Copyright <strong><span>Portal UMKM</span></strong>. All Rights Reserved
|
|
</div>
|
|
<div class="credits">
|
|
<!-- All the links in the footer should remain intact. -->
|
|
<!-- You can delete the links only if you purchased the pro version. -->
|
|
<!-- Licensing information: https://bootstrapmade.com/license/ -->
|
|
<!-- Purchase the pro version with working PHP/AJAX contact form: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/ -->
|
|
<!-- Designed by <a href="https://bootstrapmade.com/">BootstrapMade</a> -->
|
|
</div>
|
|
</footer><!-- End Footer -->
|
|
|
|
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
|
|
|
|
<!-- Vendor JS Files -->
|
|
<script src="../assets/template/vendor/apexcharts/apexcharts.min.js"></script>
|
|
<script src="../assets/template/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
|
<script src="../assets/template/vendor/chart.js/chart.umd.js"></script>
|
|
<script src="../assets/template/vendor/echarts/echarts.min.js"></script>
|
|
<script src="../assets/template/vendor/quill/quill.js"></script>
|
|
<script src="../assets/template/vendor/simple-datatables/simple-datatables.js"></script>
|
|
<script src="../assets/template/vendor/tinymce/tinymce.min.js"></script>
|
|
<script src="../assets/template/vendor/php-email-form/validate.js"></script>
|
|
|
|
<!-- Template Main JS File -->
|
|
<script src="../assets/template/js/main.js"></script>
|
|
|
|
</body>
|
|
|
|
</html>
|