Mini Kabibi Habibi

Current Path : C:/xampp/htdocs/clinic/
Upload File :
Current File : C:/xampp/htdocs/clinic/admin_dashboard.php

<?php
session_start();
include 'includes/db.php';

// ✅ Ensure user is logged in and is an admin
if (!isset($_SESSION['user_id']) || $_SESSION['role'] !== 'admin') {
    header("Location: login.php");
    exit();
}

$username = $_SESSION['username'];
$page_title = "Admin Dashboard";

$today = date('Y-m-d');

// ✅ Today's logged patients count
$stmt = $pdo->prepare("SELECT COUNT(*) FROM logs WHERE log_date = :today");
$stmt->execute([':today' => $today]);
$logged_patients_today = $stmt->fetchColumn();

// ✅ Pending patients (no health record yet)
$stmt = $pdo->prepare("
    SELECT COUNT(*) FROM logs l
    WHERE l.log_date = :today
    AND l.id NOT IN (SELECT log_id FROM health_records)
");
$stmt->execute([':today' => $today]);
$pending_count = $stmt->fetchColumn();

// ✅ Pending consultations (record exists but diagnosis/treatment missing)
$stmt = $pdo->prepare("
    SELECT COUNT(*) FROM health_records hr
    INNER JOIN logs l ON l.id = hr.log_id
    WHERE hr.date = :today
    AND (
        hr.diagnosis IS NULL OR hr.diagnosis = ''
        OR hr.treatment IS NULL OR hr.treatment = ''
    )
");
$stmt->execute([':today' => $today]);
$pending_consultations_count = $stmt->fetchColumn();

// ✅ Completed consultations
$stmt = $pdo->prepare("
    SELECT COUNT(*) FROM health_records hr
    INNER JOIN logs l ON l.id = hr.log_id
    WHERE hr.date = :today
    AND hr.diagnosis IS NOT NULL AND hr.diagnosis != ''
    AND hr.treatment IS NOT NULL AND hr.treatment != ''
");
$stmt->execute([':today' => $today]);
$completed_count = $stmt->fetchColumn();

// ✅ Total logged patients (all time)
$stmt = $pdo->prepare("SELECT COUNT(*) FROM logs");
$stmt->execute();
$total_logged_patients = $stmt->fetchColumn();

// ✅ Total health records (all time)
$stmt = $pdo->prepare("SELECT COUNT(*) FROM health_records");
$stmt->execute();
$total_health_records = $stmt->fetchColumn();

// ✅ Total Available Stock (OK + Expiring) — sum balances of supplies not expired and with positive balance
$ok_and_expiring_quantity = 0;
$all_supplies = $pdo->query("SELECT balance, expiration_date FROM medical_supplies")->fetchAll(PDO::FETCH_ASSOC);
$todayDT = new DateTime();

foreach ($all_supplies as $supply) {
    $balance = (int)$supply['balance'];
    $expiration = new DateTime($supply['expiration_date']);
    // compute days difference
    $daysLeft = (int)$todayDT->diff($expiration)->format('%r%a');
    if ($balance > 0 && $daysLeft >= 0) {
        // include this supply in OK or Expiring
        $ok_and_expiring_quantity += $balance;
    }
}

// ✅ Total supply issuances (sum of quantities issued)
$stmt = $pdo->prepare("SELECT COALESCE(SUM(quantity), 0) FROM supply_issuance");
$stmt->execute();
$total_supply_issuances = $stmt->fetchColumn();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title><?= htmlspecialchars($page_title) ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
    <style>
    body {
        display: flex;
        min-height: 100vh;
        background-color: #f8f9fa;
    }
    .sidebar {
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        width: 250px;
        background-color: #2c3e50;
        color: white;
        overflow-y: auto;
        z-index: 1000;
    }
    .sidebar a {
        color: #ccc;
        text-decoration: none;
        padding: 15px;
        display: block;
        transition: 0.3s;
    }
    .sidebar a:hover {
        background-color: #34495e;
        color: #fff;
    }
    .main-content {
        margin-left: 250px;
        padding: 40px;
    }
    @media (max-width: 768px) {
        .main-content {
            margin-left: 250px;
            padding: 20px;
        }
    }
    .form-card {
        background-color: #fff;
        border-radius: 10px;
        padding: 30px;
        box-shadow: 0 0 15px rgba(0,0,0,0.05);
    }
    h2.page-title {
        font-weight: 600;
        margin-bottom: 30px;
    }
    .card {
        min-height: 80px;
        max-height: 120px;
        font-size: 0.9rem;
    }
    .card-body {
        padding: 10px !important;
    }
    .card-title {
        font-size: 1rem;
        margin-bottom: 0.5rem;
        text-align: center;
    }
    .card-text {
        font-size: 0.9rem;
        text-align: center;
    }
    </style>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
</head>
<body>

<!-- Sidebar -->
<?php include 'sidebar.php'; ?>

<!-- Toggle button for mobile -->
<button id="sidebarToggle" class="btn btn-outline-primary d-md-none mb-3">
    <i class="bi bi-list"></i> Menu
</button>

<!-- Main content -->
<div class="main-content">
    <h2>
        SDO Batangas City - Clinic Management System v1.0<br>
    </h2>

    <div class="row mt-4">
        <!-- Total Logged Patients (All Time) -->
        <div class="col-12 col-sm-6 col-md-3">
            <div class="card text-white bg-info mb-3">
                <div class="card-body">
                    <h5 class="card-title">Total Logged Patients (All Time)</h5>
                    <p class="card-text"><?= $total_logged_patients ?> total</p>
                </div>
            </div>
        </div>

        <!-- Total Health Records (All Time) -->
        <div class="col-12 col-sm-6 col-md-3">
            <div class="card text-white bg-danger mb-3">
                <div class="card-body">
                    <h5 class="card-title">Total Health Records (All Time)</h5>
                    <p class="card-text"><?= $total_health_records ?> total</p>
                </div>
            </div>
        </div>

        <!-- Total Available Stocks (OK + Expiring) -->
        <div class="col-12 col-sm-6 col-md-3">
            <a href="current_stock.php" class="text-decoration-none">
                <div class="card text-black bg-info-subtle mb-3">
                    <div class="card-body">
                        <h5 class="card-title">Available Medical Supplies</h5>
                        <p class="card-text"><?= $ok_and_expiring_quantity ?> total</p>
                    </div>
                </div>
            </a>
        </div>

        <!-- Total Stock Issuances -->
        <div class="col-12 col-sm-6 col-md-3">
            <a href="issuance_records.php" class="text-decoration-none">
                <div class="card text-black mb-3" style="background-color: #FFE5D9;">
                    <div class="card-body">
                        <h5 class="card-title">Medical Supply Issuances</h5>
                        <p class="card-text"><?= $total_supply_issuances ?> total</p>
                    </div>
                </div>
            </a>
        </div>

        <!-- Total Logged Patients Today -->
        <div class="col-12 col-sm-6 col-md-3">
            <div class="card text-white bg-primary mb-3">
                <div class="card-body">
                    <h5 class="card-title">Total Logged Patients Today</h5>
                    <p class="card-text"><?= $logged_patients_today ?> total</p>
                </div>
            </div>
        </div>

        <!-- Pending Initial Assessments -->
        <div class="col-12 col-sm-6 col-md-3">
            <a href="initial_assessment.php" class="text-decoration-none">
                <div class="card text-dark bg-warning mb-3">
                    <div class="card-body">
                        <h5 class="card-title">Pending Assessments Today</h5>
                        <p class="card-text"><?= $pending_count ?> total</p>
                    </div>
                </div>
            </a>
        </div>

        <!-- Pending Consultations -->
        <div class="col-12 col-sm-6 col-md-3">
            <a href="consultations.php" class="text-decoration-none">
                <div class="card text-white bg-secondary mb-3">
                    <div class="card-body">
                        <h5 class="card-title">Pending Consultations Today</h5>
                        <p class="card-text"><?= $pending_consultations_count ?> total</p>
                    </div>
                </div>
            </a>
        </div>

        <!-- Completed Consultations -->
        <div class="col-12 col-sm-6 col-md-3">
            <a href="completed_consultations.php" class="text-decoration-none">
                <div class="card text-white bg-success mb-3">
                    <div class="card-body">
                        <h5 class="card-title">Completed Consultations Today</h5>
                        <p class="card-text"><?= $completed_count ?> total</p>
                    </div>
                </div>
            </a>
        </div>
    </div>
</div>

<?php include 'includes/footer.php'; ?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>