247 lines
12 KiB
PHP
247 lines
12 KiB
PHP
<?php
|
|
/**
|
|
* Settings Page - Manage System Datasets
|
|
*/
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/db/config.php';
|
|
|
|
$tenant_id = 1;
|
|
|
|
// Handle Form Submissions
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$action = $_POST['action'] ?? '';
|
|
$name = $_POST['name'] ?? '';
|
|
|
|
if ($action === 'add_labour_type' && $name) {
|
|
$stmt = db()->prepare("INSERT INTO labour_types (tenant_id, name) VALUES (?, ?)");
|
|
$stmt->execute([$tenant_id, $name]);
|
|
} elseif ($action === 'add_evidence_type' && $name) {
|
|
$stmt = db()->prepare("INSERT INTO evidence_types (tenant_id, name) VALUES (?, ?)");
|
|
$stmt->execute([$tenant_id, $name]);
|
|
} elseif ($action === 'add_expense_type' && $name) {
|
|
$stmt = db()->prepare("INSERT INTO expense_types (tenant_id, name) VALUES (?, ?)");
|
|
$stmt->execute([$tenant_id, $name]);
|
|
} elseif ($action === 'add_team' && $name) {
|
|
$stmt = db()->prepare("INSERT INTO teams (tenant_id, name) VALUES (?, ?)");
|
|
$stmt->execute([$tenant_id, $name]);
|
|
} elseif ($action === 'add_supplier' && $name) {
|
|
$type = $_POST['type'] ?? 'supplier';
|
|
$contact = $_POST['contact_info'] ?? '';
|
|
$stmt = db()->prepare("INSERT INTO suppliers (tenant_id, name, type, contact_info) VALUES (?, ?, ?, ?)");
|
|
$stmt->execute([$tenant_id, $name, $type, $contact]);
|
|
}
|
|
|
|
header("Location: settings.php?success=1");
|
|
exit;
|
|
}
|
|
|
|
// Fetch all datasets
|
|
$labourTypes = db()->prepare("SELECT * FROM labour_types WHERE tenant_id = ? ORDER BY name");
|
|
$labourTypes->execute([$tenant_id]);
|
|
$labourTypeList = $labourTypes->fetchAll();
|
|
|
|
$evidenceTypes = db()->prepare("SELECT * FROM evidence_types WHERE tenant_id = ? ORDER BY name");
|
|
$evidenceTypes->execute([$tenant_id]);
|
|
$evidenceTypeList = $evidenceTypes->fetchAll();
|
|
|
|
$expenseTypes = db()->prepare("SELECT * FROM expense_types WHERE tenant_id = ? ORDER BY name");
|
|
$expenseTypes->execute([$tenant_id]);
|
|
$expenseTypeList = $expenseTypes->fetchAll();
|
|
|
|
$teams = db()->prepare("SELECT * FROM teams WHERE tenant_id = ? ORDER BY name");
|
|
$teams->execute([$tenant_id]);
|
|
$teamList = $teams->fetchAll();
|
|
|
|
$suppliers = db()->prepare("SELECT * FROM suppliers WHERE tenant_id = ? ORDER BY name");
|
|
$suppliers->execute([$tenant_id]);
|
|
$supplierList = $suppliers->fetchAll();
|
|
|
|
$pageTitle = "SR&ED Manager - Settings";
|
|
include __DIR__ . '/includes/header.php';
|
|
?>
|
|
|
|
<div class="container-fluid py-4">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h4 class="fw-bold mb-0">System Settings & Datasets</h4>
|
|
<?php if (isset($_GET['success'])): ?>
|
|
<span class="badge bg-success">Dataset updated successfully</span>
|
|
<?php endif; ?>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- Labour Types -->
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card h-100 border-0 shadow-sm">
|
|
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
|
<span class="fw-bold">Labour Types</span>
|
|
<button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#addLabourTypeModal">+ Add</button>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead><tr><th>Name</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach ($labourTypeList as $item): ?>
|
|
<tr><td><?= htmlspecialchars($item['name']) ?></td></tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Evidence Types -->
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card h-100 border-0 shadow-sm">
|
|
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
|
<span class="fw-bold">Evidence Types</span>
|
|
<button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#addEvidenceTypeModal">+ Add</button>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead><tr><th>Name</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach ($evidenceTypeList as $item): ?>
|
|
<tr><td><?= htmlspecialchars($item['name']) ?></td></tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Expense Types -->
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card h-100 border-0 shadow-sm">
|
|
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
|
<span class="fw-bold">Expense Types</span>
|
|
<button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#addExpenseTypeModal">+ Add</button>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead><tr><th>Name</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach ($expenseTypeList as $item): ?>
|
|
<tr><td><?= htmlspecialchars($item['name']) ?></td></tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Teams -->
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card h-100 border-0 shadow-sm">
|
|
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
|
<span class="fw-bold">Teams</span>
|
|
<button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#addTeamModal">+ Add</button>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead><tr><th>Name</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach ($teamList as $item): ?>
|
|
<tr><td><?= htmlspecialchars($item['name']) ?></td></tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Suppliers -->
|
|
<div class="col-12 mb-4">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
|
<span class="fw-bold">Suppliers & Contractors</span>
|
|
<button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#addSupplierModal">+ Add</button>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Contact Info</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($supplierList as $item): ?>
|
|
<tr>
|
|
<td><strong><?= htmlspecialchars($item['name']) ?></strong></td>
|
|
<td><span class="badge bg-light text-dark border"><?= ucfirst($item['type']) ?></span></td>
|
|
<td><small class="text-muted"><?= htmlspecialchars($item['contact_info'] ?? '') ?></small></td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modals -->
|
|
<?php
|
|
$modals = [
|
|
['id' => 'addLabourTypeModal', 'title' => 'Add Labour Type', 'action' => 'add_labour_type'],
|
|
['id' => 'addEvidenceTypeModal', 'title' => 'Add Evidence Type', 'action' => 'add_evidence_type'],
|
|
['id' => 'addExpenseTypeModal', 'title' => 'Add Expense Type', 'action' => 'add_expense_type'],
|
|
['id' => 'addTeamModal', 'title' => 'Add Team', 'action' => 'add_team'],
|
|
];
|
|
foreach ($modals as $m):
|
|
?>
|
|
<div class="modal fade" id="<?= $m['id'] ?>" tabindex="-1">
|
|
<div class="modal-dialog modal-dialog-centered">
|
|
<div class="modal-content border-0 shadow">
|
|
<div class="modal-header"><h5 class="modal-title fw-bold"><?= $m['title'] ?></h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div>
|
|
<form method="POST">
|
|
<div class="modal-body">
|
|
<input type="hidden" name="action" value="<?= $m['action'] ?>">
|
|
<div class="mb-3">
|
|
<label class="form-label small fw-bold">Name</label>
|
|
<input type="text" name="name" class="form-control" placeholder="Enter name..." required>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer border-0"><button type="submit" class="btn btn-primary px-4">Add Item</button></div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
|
|
<div class="modal fade" id="addSupplierModal" tabindex="-1">
|
|
<div class="modal-dialog modal-dialog-centered">
|
|
<div class="modal-content border-0 shadow">
|
|
<div class="modal-header"><h5 class="modal-title fw-bold">Add Supplier/Contractor</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div>
|
|
<form method="POST">
|
|
<div class="modal-body">
|
|
<input type="hidden" name="action" value="add_supplier">
|
|
<div class="mb-3">
|
|
<label class="form-label small fw-bold">Name</label>
|
|
<input type="text" name="name" class="form-control" placeholder="Company name" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label small fw-bold">Type</label>
|
|
<select name="type" class="form-select">
|
|
<option value="supplier">Supplier</option>
|
|
<option value="contractor">Contractor</option>
|
|
</select>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label small fw-bold">Contact Info</label>
|
|
<textarea name="contact_info" class="form-control" rows="2" placeholder="Address, Phone, Email..."></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer border-0"><button type="submit" class="btn btn-primary px-4">Add Supplier</button></div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php include __DIR__ . '/includes/footer.php'; ?>
|