mirror of
https://github.com/michaelstaake/mainty.git
synced 2026-04-16 11:30:13 +00:00
Initial version upload
This commit is contained in:
88
models/Maintenance.php
Normal file
88
models/Maintenance.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
class Maintenance {
|
||||
private PDO $db;
|
||||
|
||||
public function __construct() {
|
||||
$this->db = Database::getInstance();
|
||||
}
|
||||
|
||||
public function getByVehicleId(int $vehicleId): array {
|
||||
$stmt = $this->db->prepare("
|
||||
SELECT * FROM maintenance_items
|
||||
WHERE vehicle_id = ?
|
||||
ORDER BY date DESC, id DESC
|
||||
");
|
||||
$stmt->execute([$vehicleId]);
|
||||
return $stmt->fetchAll();
|
||||
}
|
||||
|
||||
public function getById(int $id): ?array {
|
||||
$stmt = $this->db->prepare("SELECT * FROM maintenance_items WHERE id = ?");
|
||||
$stmt->execute([$id]);
|
||||
$item = $stmt->fetch();
|
||||
return $item ?: null;
|
||||
}
|
||||
|
||||
public function create(array $data): int {
|
||||
$stmt = $this->db->prepare("
|
||||
INSERT INTO maintenance_items
|
||||
(vehicle_id, name, date, mileage, description, cost, parts_list, performed_by)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
");
|
||||
|
||||
$stmt->execute([
|
||||
$data['vehicle_id'],
|
||||
$data['name'],
|
||||
$data['date'],
|
||||
$data['mileage'],
|
||||
$data['description'] ?? null,
|
||||
$data['cost'] ?? null,
|
||||
$data['parts_list'] ?? null,
|
||||
$data['performed_by'] ?? null
|
||||
]);
|
||||
|
||||
return (int)$this->db->lastInsertId();
|
||||
}
|
||||
|
||||
public function update(int $id, array $data): bool {
|
||||
$stmt = $this->db->prepare("
|
||||
UPDATE maintenance_items
|
||||
SET name = ?, date = ?, mileage = ?, description = ?, cost = ?, parts_list = ?, performed_by = ?, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = ?
|
||||
");
|
||||
|
||||
return $stmt->execute([
|
||||
$data['name'],
|
||||
$data['date'],
|
||||
$data['mileage'],
|
||||
$data['description'] ?? null,
|
||||
$data['cost'] ?? null,
|
||||
$data['parts_list'] ?? null,
|
||||
$data['performed_by'] ?? null,
|
||||
$id
|
||||
]);
|
||||
}
|
||||
|
||||
public function delete(int $id): bool {
|
||||
$stmt = $this->db->prepare("DELETE FROM maintenance_items WHERE id = ?");
|
||||
return $stmt->execute([$id]);
|
||||
}
|
||||
|
||||
public function searchByName(string $query): array {
|
||||
// Search in both quick_tasks and existing maintenance items
|
||||
$stmt = $this->db->prepare("
|
||||
SELECT DISTINCT name FROM (
|
||||
SELECT name FROM quick_tasks WHERE name LIKE ?
|
||||
UNION
|
||||
SELECT DISTINCT name FROM maintenance_items WHERE name LIKE ?
|
||||
)
|
||||
ORDER BY name ASC
|
||||
LIMIT 10
|
||||
");
|
||||
|
||||
$searchTerm = '%' . $query . '%';
|
||||
$stmt->execute([$searchTerm, $searchTerm]);
|
||||
return $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
}
|
||||
}
|
||||
33
models/QuickTask.php
Normal file
33
models/QuickTask.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
class QuickTask {
|
||||
private PDO $db;
|
||||
|
||||
public function __construct() {
|
||||
$this->db = Database::getInstance();
|
||||
}
|
||||
|
||||
public function getAll(): array {
|
||||
$stmt = $this->db->query("SELECT * FROM quick_tasks ORDER BY name ASC");
|
||||
return $stmt->fetchAll();
|
||||
}
|
||||
|
||||
public function create(string $name): int {
|
||||
try {
|
||||
$stmt = $this->db->prepare("INSERT INTO quick_tasks (name) VALUES (?)");
|
||||
$stmt->execute([$name]);
|
||||
return (int)$this->db->lastInsertId();
|
||||
} catch (PDOException $e) {
|
||||
// Handle duplicate entry
|
||||
if ($e->getCode() == 23000) {
|
||||
return 0;
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(int $id): bool {
|
||||
$stmt = $this->db->prepare("DELETE FROM quick_tasks WHERE id = ?");
|
||||
return $stmt->execute([$id]);
|
||||
}
|
||||
}
|
||||
36
models/User.php
Normal file
36
models/User.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
class User {
|
||||
private PDO $db;
|
||||
|
||||
public function __construct() {
|
||||
$this->db = Database::getInstance();
|
||||
}
|
||||
|
||||
public function verifyPassword(string $password): bool {
|
||||
$stmt = $this->db->query("SELECT password_hash FROM users LIMIT 1");
|
||||
$user = $stmt->fetch();
|
||||
|
||||
if (!$user) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return password_verify($password, $user['password_hash']);
|
||||
}
|
||||
|
||||
public function updatePassword(string $newPassword): bool {
|
||||
try {
|
||||
$stmt = $this->db->prepare("UPDATE users SET password_hash = ?, updated_at = CURRENT_TIMESTAMP");
|
||||
return $stmt->execute([password_hash($newPassword, PASSWORD_DEFAULT)]);
|
||||
} catch (PDOException $e) {
|
||||
error_log('Password update failed: ' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getId(): ?int {
|
||||
$stmt = $this->db->query("SELECT id FROM users LIMIT 1");
|
||||
$user = $stmt->fetch();
|
||||
return $user ? (int)$user['id'] : null;
|
||||
}
|
||||
}
|
||||
70
models/Vehicle.php
Normal file
70
models/Vehicle.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
class Vehicle {
|
||||
private PDO $db;
|
||||
|
||||
public function __construct() {
|
||||
$this->db = Database::getInstance();
|
||||
}
|
||||
|
||||
public function getAll(): array {
|
||||
$stmt = $this->db->query("
|
||||
SELECT v.*,
|
||||
COUNT(m.id) as maintenance_count,
|
||||
MAX(m.date) as last_maintenance_date
|
||||
FROM vehicles v
|
||||
LEFT JOIN maintenance_items m ON v.id = m.vehicle_id
|
||||
GROUP BY v.id
|
||||
ORDER BY v.name ASC
|
||||
");
|
||||
return $stmt->fetchAll();
|
||||
}
|
||||
|
||||
public function getById(int $id): ?array {
|
||||
$stmt = $this->db->prepare("SELECT * FROM vehicles WHERE id = ?");
|
||||
$stmt->execute([$id]);
|
||||
$vehicle = $stmt->fetch();
|
||||
return $vehicle ?: null;
|
||||
}
|
||||
|
||||
public function create(array $data): int {
|
||||
$stmt = $this->db->prepare("
|
||||
INSERT INTO vehicles (name, year, make, model, color, license_plate)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
");
|
||||
|
||||
$stmt->execute([
|
||||
$data['name'],
|
||||
$data['year'] ?? null,
|
||||
$data['make'] ?? null,
|
||||
$data['model'] ?? null,
|
||||
$data['color'] ?? null,
|
||||
$data['license_plate'] ?? null
|
||||
]);
|
||||
|
||||
return (int)$this->db->lastInsertId();
|
||||
}
|
||||
|
||||
public function update(int $id, array $data): bool {
|
||||
$stmt = $this->db->prepare("
|
||||
UPDATE vehicles
|
||||
SET name = ?, year = ?, make = ?, model = ?, color = ?, license_plate = ?, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = ?
|
||||
");
|
||||
|
||||
return $stmt->execute([
|
||||
$data['name'],
|
||||
$data['year'] ?? null,
|
||||
$data['make'] ?? null,
|
||||
$data['model'] ?? null,
|
||||
$data['color'] ?? null,
|
||||
$data['license_plate'] ?? null,
|
||||
$id
|
||||
]);
|
||||
}
|
||||
|
||||
public function delete(int $id): bool {
|
||||
$stmt = $this->db->prepare("DELETE FROM vehicles WHERE id = ?");
|
||||
return $stmt->execute([$id]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user