35567-vm/index.php
Flatlogic Bot f9a46874cd v2
2025-11-08 10:23:58 +00:00

102 lines
3.4 KiB
PHP

<?php
require_once 'db/config.php';
// --- DATA FETCHING ---
$pdo = db();
// Card metrics
$total_loads = $pdo->query('SELECT count(*) FROM loads')->fetchColumn();
$total_drivers = $pdo->query('SELECT count(*) FROM drivers')->fetchColumn();
$in_transit_loads = $pdo->query('SELECT count(*) FROM loads WHERE status = "In-Transit"')->fetchColumn();
$delivered_loads = $pdo->query('SELECT count(*) FROM loads WHERE status = "Delivered"')->fetchColumn();
// Pie Chart: Loads by Status
$loads_by_status_stmt = $pdo->query('SELECT status, count(*) as count FROM loads GROUP BY status');
$loads_by_status = $loads_by_status_stmt->fetchAll(PDO::FETCH_ASSOC);
$status_labels = [];
$status_counts = [];
foreach ($loads_by_status as $row) {
$status_labels[] = $row['status'];
$status_counts[] = $row['count'];
}
// Bar Chart: Loads per month
// Using a default of 0 for all months of the current year
$monthly_counts = array_fill(1, 12, 0);
$loads_by_month_stmt = $pdo->query("
SELECT
CAST(strftime('%m', pickup_date) AS INTEGER) as month,
count(*) as count
FROM loads
WHERE strftime('%Y', pickup_date) = strftime('%Y', 'now')
GROUP BY month
");
$loads_by_month = $loads_by_month_stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($loads_by_month as $row) {
$monthly_counts[$row['month']] = $row['count'];
}
$monthly_labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
$monthly_values = array_values($monthly_counts);
include 'includes/header.php';
include 'includes/sidebar.php';
?>
<main class="main-content">
<header class="header">
<h1>Reports & Analytics</h1>
</header>
<section class="dashboard-cards">
<div class="card">
<div class="card-title">TOTAL LOADS</div>
<div class="card-value"><?php echo $total_loads; ?></div>
<div class="card-delta text-muted">All time</div>
</div>
<div class="card">
<div class="card-title">TOTAL DRIVERS</div>
<div class="card-value"><?php echo $total_drivers; ?></div>
<div class="card-delta text-muted">All time</div>
</div>
<div class="card">
<div class="card-title">IN-TRANSIT NOW</div>
<div class="card-value"><?php echo $in_transit_loads; ?></div>
<div class="card-delta text-primary">&nbsp;</div>
</div>
<div class="card">
<div class="card-title">COMPLETED LOADS</div>
<div class="card-value"><?php echo $delivered_loads; ?></div>
<div class="card-delta text-success">&nbsp;</div>
</div>
</section>
<section class="dashboard-charts">
<div class="chart-container">
<h3 class="chart-title">Loads by Status</h3>
<canvas id="loadsByStatusChart"></canvas>
</div>
<div class="chart-container">
<h3 class="chart-title">Monthly Load Volume (This Year)</h3>
<canvas id="monthlyLoadsChart"></canvas>
</div>
</section>
</main>
<script>
// Pass data to main.js
const chartData = {
loadsByStatus: {
labels: <?php echo json_encode($status_labels); ?>,
counts: <?php echo json_encode($status_counts); ?>
},
monthlyLoads: {
labels: <?php echo json_encode($monthly_labels); ?>,
counts: <?php echo json_encode($monthly_values); ?>
}
};
</script>
<?php include 'includes/footer.php'; ?>