135 lines
6.0 KiB
PHP
135 lines
6.0 KiB
PHP
<?php
|
|
require_once 'layout.php';
|
|
require_once 'db/config.php';
|
|
|
|
$pdo = db();
|
|
|
|
// Fetch summary stats (placeholders for now)
|
|
$memberCount = $pdo->query('SELECT COUNT(*) FROM members')->fetchColumn();
|
|
$activeLoans = 0; // Placeholder
|
|
$totalDeposits = 0; // Placeholder
|
|
$dailyTransactions = 0; // Placeholder
|
|
|
|
render_header('Dashboard - MicroFinance Pro');
|
|
?>
|
|
|
|
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
|
<h1 class="h4 font-weight-bold">Branch Manager Dashboard - Demo SACCO</h1>
|
|
<div class="btn-toolbar mb-2 mb-md-0">
|
|
<div class="btn-group me-2">
|
|
<button type="button" class="btn btn-sm btn-outline-secondary">Share</button>
|
|
<button type="button" class="btn btn-sm btn-outline-secondary">Export</button>
|
|
</div>
|
|
<button type="button" class="btn btn-sm btn-outline-primary dropdown-toggle">
|
|
<i class="bi bi-calendar3 me-1"></i> This week
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-3 mb-4">
|
|
<div class="card stat-card border-0 border-start border-primary border-4">
|
|
<div class="stat-label">Total Members</div>
|
|
<div class="stat-value"><?= number_format($memberCount) ?></div>
|
|
<div class="text-success small"><i class="bi bi-arrow-up-right me-1"></i> 12% increase</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3 mb-4">
|
|
<div class="card stat-card border-0 border-start border-info border-4">
|
|
<div class="stat-label">Active Loans</div>
|
|
<div class="stat-value"><?= number_format($activeLoans) ?></div>
|
|
<div class="text-muted small">0 this month</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3 mb-4">
|
|
<div class="card stat-card border-0 border-start border-success border-4">
|
|
<div class="stat-label">Total Deposits</div>
|
|
<div class="stat-value">KES <?= number_format($totalDeposits, 2) ?></div>
|
|
<div class="text-success small"><i class="bi bi-arrow-up-right me-1"></i> 5% growth</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3 mb-4">
|
|
<div class="card stat-card border-0 border-start border-warning border-4">
|
|
<div class="stat-label">Daily Transactions</div>
|
|
<div class="stat-value"><?= number_format($dailyTransactions) ?></div>
|
|
<div class="text-muted small">Updated just now</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mt-4">
|
|
<div class="col-md-8">
|
|
<div class="card">
|
|
<div class="card-header d-flex justify-content-between align-items-center">
|
|
<span>Recent Member Registrations</span>
|
|
<a href="members.php" class="btn btn-sm btn-link p-0 text-decoration-none">View All</a>
|
|
</div>
|
|
<div class="card-body p-0">
|
|
<div class="table-responsive">
|
|
<table class="table table-hover mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Name</th>
|
|
<th>Member No.</th>
|
|
<th>Joined</th>
|
|
<th>Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
$recentMembers = $pdo->query('SELECT * FROM members ORDER BY created_at DESC LIMIT 5')->fetchAll();
|
|
if (empty($recentMembers)):
|
|
?>
|
|
<tr>
|
|
<td colspan="5" class="text-center py-4 text-muted">No members registered yet.</td>
|
|
</tr>
|
|
<?php else: foreach ($recentMembers as $m): ?>
|
|
<tr>
|
|
<td><?= htmlspecialchars($m['id']) ?></td>
|
|
<td><?= htmlspecialchars($m['first_name'] . ' ' . $m['last_name']) ?></td>
|
|
<td><?= htmlspecialchars($m['member_number']) ?></td>
|
|
<td><?= date('Y-m-d', strtotime($m['created_at'])) ?></td>
|
|
<td><span class="badge bg-success rounded-pill px-2" style="font-size: 0.7rem;">Active</span></td>
|
|
</tr>
|
|
<?php endforeach; endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="card">
|
|
<div class="card-header">Quick Actions</div>
|
|
<div class="card-body">
|
|
<div class="d-grid gap-2">
|
|
<a href="members.php?action=add" class="btn btn-primary text-start">
|
|
<i class="bi bi-person-plus me-2"></i> Register New Member
|
|
</a>
|
|
<button class="btn btn-outline-secondary text-start">
|
|
<i class="bi bi-cash-stack me-2"></i> New Deposit
|
|
</button>
|
|
<button class="btn btn-outline-secondary text-start">
|
|
<i class="bi bi-file-earmark-plus me-2"></i> New Loan Application
|
|
</button>
|
|
<button class="btn btn-outline-secondary text-start">
|
|
<i class="bi bi-printer me-2"></i> Generate Statement
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card mt-4">
|
|
<div class="card-header">SASRA Compliance Notice</div>
|
|
<div class="card-body">
|
|
<p class="small text-muted mb-0">
|
|
<i class="bi bi-info-circle me-1 text-info"></i> Your next monthly SASRA report is due in 12 days. Ensure all reconciliations are complete.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
render_footer();
|
|
?>
|