35050-vm/index.php
Flatlogic Bot b4397b355f Sfepro v1
2025-10-19 03:26:15 +00:00

142 lines
5.8 KiB
PHP

<?php
session_start();
require_once 'db/config.php';
include 'header.php';
// Fetch all deals to calculate KPIs and group them
$deals_result = db()->query("
SELECT
d.id, d.title, d.value, d.stage, d.close_date,
c.name as contact_name, c.email as contact_email
FROM deals d
JOIN contacts c ON d.contact_id = c.id
ORDER BY d.created_at DESC
");
$all_deals = $deals_result ? $deals_result->fetchAll() : [];
// --- KPI Calculations ---
$total_value = 0;
$deals_won = 0;
$deals_lost = 0;
$deals_in_progress = 0;
$deals_by_stage = [
'Lead' => [],
'Contact Made' => [],
'Proposal' => [],
'Won' => [],
'Lost' => [],
];
foreach ($all_deals as $deal) {
$total_value += $deal['value'];
if ($deal['stage'] == 'Won') {
$deals_won++;
} elseif ($deal['stage'] == 'Lost') {
$deals_lost++;
} else {
$deals_in_progress++;
}
if (array_key_exists($deal['stage'], $deals_by_stage)) {
$deals_by_stage[$deal['stage']][] = $deal;
}
}
?>
<?php
if (isset($_SESSION['success_message'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . htmlspecialchars($_SESSION['success_message']) . '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
unset($_SESSION['success_message']);
}
if (isset($_SESSION['error_message'])) {
echo '<div class="alert alert-danger alert-dismissible fade show" role="alert">' . htmlspecialchars($_SESSION['error_message']) . '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
unset($_SESSION['error_message']);
}
?>
<!-- KPI Dashboard -->
<div class="row mb-4">
<div class="col-md-3">
<div class="card text-white bg-primary">
<div class="card-body">
<h5 class="card-title"><i class="fas fa-dollar-sign me-2"></i>Total Pipeline Value</h5>
<p class="card-text fs-4">$<?php echo number_format($total_value, 2); ?></p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card text-white bg-success">
<div class="card-body">
<h5 class="card-title"><i class="fas fa-trophy me-2"></i>Deals Won</h5>
<p class="card-text fs-4"><?php echo $deals_won; ?></p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card text-white bg-danger">
<div class="card-body">
<h5 class="card-title"><i class="fas fa-times-circle me-2"></i>Deals Lost</h5>
<p class="card-text fs-4"><?php echo $deals_lost; ?></p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card text-white bg-info">
<div class="card-body">
<h5 class="card-title"><i class="fas fa-tasks me-2"></i>Deals In Progress</h5>
<p class="card-text fs-4"><?php echo $deals_in_progress; ?></p>
</div>
</div>
</div>
</div>
<!-- Deal Pipeline (Kanban Board) -->
<div class="d-flex justify-content-between align-items-center mb-3">
<h4 class="mb-0"><i class="fas fa-chart-line me-2"></i>Deal Pipeline</h4>
<a href="add_deal.php" class="btn btn-primary"><i class="fas fa-plus me-1"></i> Add New Deal</a>
</div>
<div class="row">
<?php foreach ($deals_by_stage as $stage => $deals): ?>
<div class="col-md">
<div class="card">
<div class="card-header bg-light">
<h6 class="mb-0 text-uppercase"><?php echo htmlspecialchars($stage); ?> <span class="badge bg-secondary rounded-pill"><?php echo count($deals); ?></span></h6>
</div>
<div class="card-body" style="min-height: 400px; overflow-y: auto;">
<?php if (empty($deals)): ?>
<p class="text-muted small text-center mt-2">No deals in this stage.</p>
<?php else: ?>
<?php foreach ($deals as $deal): ?>
<div class="card mb-2">
<div class="card-body p-2">
<h6 class="card-title mb-1"><?php echo htmlspecialchars($deal['title']); ?></h6>
<p class="card-text small mb-1">
<strong>Value:</strong> $<?php echo number_format($deal['value'], 2); ?>
</p>
<p class="card-text small mb-2">
<i class="fas fa-user me-1"></i>
<a href="mailto:<?php echo htmlspecialchars($deal['contact_email']); ?>"><?php echo htmlspecialchars($deal['contact_name']); ?></a>
</p>
<div class="d-flex justify-content-end">
<a href="edit_deal.php?id=<?php echo $deal['id']; ?>" class="btn btn-sm btn-outline-secondary me-1 py-0 px-1">
<i class="fas fa-pencil-alt fa-xs"></i>
</a>
<a href="delete_deal.php?id=<?php echo $deal['id']; ?>" class="btn btn-sm btn-outline-danger py-0 px-1" onclick="return confirm('Are you sure you want to delete this deal?');">
<i class="fas fa-trash-alt fa-xs"></i>
</a>
</div>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php include 'footer.php'; ?>