Added: set default vehicle

This commit is contained in:
Filip Rojek 2025-01-27 00:38:22 +01:00
parent ea3afa2507
commit 64c7fd15a1
5 changed files with 57 additions and 6 deletions

View File

@ -25,8 +25,8 @@
## What has to be done ## What has to be done
- [x] Vehicle delete - [x] Vehicle delete
- [ ] intro tutorial when no car exist or just dont show anything - [ ] intro tutorial when no car exist or just dont show anything
- [ ] change/set default car - [x] change/set default car
- [ ] hide errors - [x] hide errors
## Nice to have ## Nice to have
- [ ] specific car view - charts, fuel records - [ ] specific car view - charts, fuel records

View File

@ -75,6 +75,18 @@ class VehicleController extends Controller {
$this->view('vehicles/index', ['title' => 'Vehicles', 'vehicles' => $vehicles]); $this->view('vehicles/index', ['title' => 'Vehicles', 'vehicles' => $vehicles]);
} }
public function setDefault() {
$vehicle = new Vehicle();
// TODO: Validate the request
$result = $vehicle->setDefaultVehicle($_POST['vehicle_id'], $_SESSION['user']['id']);
if($result != true) {
echo "Something went wrong";
return;
}
$this->view('vehicles/index', ['title' => 'Vehicles', 'vehicles' => $vehicles]);
}
public function api_get() { public function api_get() {
if(!$_SERVER['REQUEST_METHOD'] === 'GET') { if(!$_SERVER['REQUEST_METHOD'] === 'GET') {
echo "Wrong method, use GET"; echo "Wrong method, use GET";

View File

@ -61,6 +61,39 @@ class Vehicle {
return $result->fetch_assoc(); return $result->fetch_assoc();
} }
public function setDefaultVehicle($vehicle_id, $user_id) {
try {
$this->db->begin_transaction();
$stmt = $this->db->prepare("
UPDATE `vehicles`
SET `is_default` = 0
WHERE `user_id` = ? AND `is_default` = 1
");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$stmt->close();
$stmt = $this->db->prepare("
UPDATE `vehicles`
SET `is_default` = 1
WHERE `id` = ? AND `user_id` = ?
");
$stmt->bind_param("ii", $vehicle_id, $user_id);
if ($stmt->execute()) {
$this->db->commit();
return true;
} else {
$this->db->rollback();
return "Error: " . $stmt->error;
}
} catch (mysqli_sql_exception $e) {
$this->db->rollback();
return $e->getMessage();
}
}
public function delete($vehicle_id, $user_id) { public function delete($vehicle_id, $user_id) {
try { try {
$stmt = $this->db->prepare("SELECT id FROM vehicles WHERE id = ? AND user_id = ?"); $stmt = $this->db->prepare("SELECT id FROM vehicles WHERE id = ? AND user_id = ?");

View File

@ -14,10 +14,15 @@
<p><?= htmlspecialchars($vehicle['fuel_type']) ?></p> <p><?= htmlspecialchars($vehicle['fuel_type']) ?></p>
<p><?= htmlspecialchars($vehicle['note'] ?? "") ?></p> <p><?= htmlspecialchars($vehicle['note'] ?? "") ?></p>
<div class="actions"> <div class="actions">
<form method="POST" action="/vehicles/delete"> <form method="POST" action="/vehicles/delete">
<input type="number" name="vehicle_id" value="<?= $vehicle['id'] ?>" style="display: none"> <input type="number" name="vehicle_id" value="<?= $vehicle['id'] ?>" style="display: none">
<input type="submit" value="Delete vehicle" class="btn-danger"> <input type="submit" value="Delete vehicle" class="btn-danger">
</form> </form>
<form method="POST" action="/vehicles/default">
<input type="number" name="vehicle_id" value="<?= $vehicle['id'] ?>" style="display: none">
<input type="submit" value="Set default" class="btn-primary">
</form>
</div> </div>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>

View File

@ -47,6 +47,7 @@ $router->group('/vehicles', ['RequireAuth'], function ($router) {
$router->add('/create', 'VehicleController@create'); $router->add('/create', 'VehicleController@create');
$router->add('/edit/{id}', 'VehicleController@edit'); $router->add('/edit/{id}', 'VehicleController@edit');
$router->add('/delete', 'VehicleController@delete'); $router->add('/delete', 'VehicleController@delete');
$router->add('/default', 'VehicleController@setDefault');
}); });
$router->group('/refuel', ['RequireAuth'], function ($router) { $router->group('/refuel', ['RequireAuth'], function ($router) {