mirror of
https://github.com/michaelstaake/mainty.git
synced 2026-04-16 19:40:13 +00:00
Initial version upload
This commit is contained in:
119
controllers/MaintenanceController.php
Normal file
119
controllers/MaintenanceController.php
Normal file
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
|
||||
class MaintenanceController extends Controller {
|
||||
private Maintenance $maintenanceModel;
|
||||
|
||||
public function __construct() {
|
||||
$this->maintenanceModel = new Maintenance();
|
||||
}
|
||||
|
||||
public function add(): void {
|
||||
$this->requireSetup();
|
||||
$this->requireAuth();
|
||||
|
||||
$vehicleId = (int)($_POST['vehicle_id'] ?? 0);
|
||||
$name = trim($_POST['name'] ?? '');
|
||||
$date = trim($_POST['date'] ?? '');
|
||||
$mileage = str_replace(',', '', trim($_POST['mileage'] ?? ''));
|
||||
|
||||
if (empty($name) || empty($date) || empty($mileage)) {
|
||||
$_SESSION['error'] = 'Name, date, and mileage are required';
|
||||
$this->redirect('/vehicles/' . $vehicleId);
|
||||
return;
|
||||
}
|
||||
|
||||
$data = [
|
||||
'vehicle_id' => $vehicleId,
|
||||
'name' => $name,
|
||||
'date' => $date,
|
||||
'mileage' => (int)$mileage,
|
||||
'description' => trim($_POST['description'] ?? ''),
|
||||
'cost' => !empty($_POST['cost']) ? (float)$_POST['cost'] : null,
|
||||
'parts_list' => trim($_POST['parts_list'] ?? ''),
|
||||
'performed_by' => trim($_POST['performed_by'] ?? '')
|
||||
];
|
||||
|
||||
$this->maintenanceModel->create($data);
|
||||
$_SESSION['success'] = 'Maintenance item added successfully';
|
||||
$this->redirect('/vehicles/' . $vehicleId);
|
||||
}
|
||||
|
||||
public function edit(string $id): void {
|
||||
$this->requireSetup();
|
||||
$this->requireAuth();
|
||||
|
||||
$item = $this->maintenanceModel->getById((int)$id);
|
||||
|
||||
if (!$item) {
|
||||
$_SESSION['error'] = 'Maintenance item not found';
|
||||
$this->redirect('/home');
|
||||
return;
|
||||
}
|
||||
|
||||
$name = trim($_POST['name'] ?? '');
|
||||
$date = trim($_POST['date'] ?? '');
|
||||
$mileage = str_replace(',', '', trim($_POST['mileage'] ?? ''));
|
||||
|
||||
if (empty($name) || empty($date) || empty($mileage)) {
|
||||
$_SESSION['error'] = 'Name, date, and mileage are required';
|
||||
$this->redirect('/vehicles/' . $item['vehicle_id']);
|
||||
return;
|
||||
}
|
||||
|
||||
$data = [
|
||||
'name' => $name,
|
||||
'date' => $date,
|
||||
'mileage' => (int)$mileage,
|
||||
'description' => trim($_POST['description'] ?? ''),
|
||||
'cost' => !empty($_POST['cost']) ? (float)$_POST['cost'] : null,
|
||||
'parts_list' => trim($_POST['parts_list'] ?? ''),
|
||||
'performed_by' => trim($_POST['performed_by'] ?? '')
|
||||
];
|
||||
|
||||
if ($this->maintenanceModel->update((int)$id, $data)) {
|
||||
$_SESSION['success'] = 'Maintenance item updated successfully';
|
||||
} else {
|
||||
$_SESSION['error'] = 'Failed to update maintenance item';
|
||||
}
|
||||
|
||||
$this->redirect('/vehicles/' . $item['vehicle_id']);
|
||||
}
|
||||
|
||||
public function delete(string $id): void {
|
||||
$this->requireSetup();
|
||||
$this->requireAuth();
|
||||
|
||||
$item = $this->maintenanceModel->getById((int)$id);
|
||||
|
||||
if (!$item) {
|
||||
$_SESSION['error'] = 'Maintenance item not found';
|
||||
$this->redirect('/home');
|
||||
return;
|
||||
}
|
||||
|
||||
$vehicleId = $item['vehicle_id'];
|
||||
|
||||
if ($this->maintenanceModel->delete((int)$id)) {
|
||||
$_SESSION['success'] = 'Maintenance item deleted successfully';
|
||||
} else {
|
||||
$_SESSION['error'] = 'Failed to delete maintenance item';
|
||||
}
|
||||
|
||||
$this->redirect('/vehicles/' . $vehicleId);
|
||||
}
|
||||
|
||||
public function search(): void {
|
||||
$this->requireSetup();
|
||||
$this->requireAuth();
|
||||
|
||||
$query = $_GET['q'] ?? '';
|
||||
|
||||
if (strlen($query) < 2) {
|
||||
$this->json([]);
|
||||
return;
|
||||
}
|
||||
|
||||
$results = $this->maintenanceModel->searchByName($query);
|
||||
$this->json($results);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user