Compare commits
1 Commits
7517bcb78f
...
cfceee1ede
Author | SHA1 | Date | |
---|---|---|---|
cfceee1ede |
@ -3,7 +3,8 @@ class DashboardController extends Controller {
|
|||||||
public function index() {
|
public function index() {
|
||||||
$vehicle = new Vehicle();
|
$vehicle = new Vehicle();
|
||||||
$vehicles = $vehicle->getVehiclesByUser($_SESSION['user']['id']);
|
$vehicles = $vehicle->getVehiclesByUser($_SESSION['user']['id']);
|
||||||
$default_car = $vehicle->getDefaultVehicle($_SESSION['user']['id']) ?? null;
|
|
||||||
|
$default_car = $vehicle->getDefaultVehicle($_SESSION['user']['id']);
|
||||||
|
|
||||||
$refuel = new Refuel();
|
$refuel = new Refuel();
|
||||||
$data = [
|
$data = [
|
||||||
@ -12,7 +13,7 @@ class DashboardController extends Controller {
|
|||||||
"mileage" => [],
|
"mileage" => [],
|
||||||
"liters" => []
|
"liters" => []
|
||||||
];
|
];
|
||||||
$raw_data = $default_car ? $refuel->latest_data($default_car['id'], 5) : [];
|
$raw_data = $refuel->latest_data($default_car['id'], 5);
|
||||||
foreach($raw_data as $one) {
|
foreach($raw_data as $one) {
|
||||||
array_push($data['date'], date('d. m.', strtotime($one['created_at'])));
|
array_push($data['date'], date('d. m.', strtotime($one['created_at'])));
|
||||||
array_push($data['price'], $one['price_per_liter']);
|
array_push($data['price'], $one['price_per_liter']);
|
||||||
@ -20,8 +21,7 @@ class DashboardController extends Controller {
|
|||||||
array_push($data['liters'], $one['liters']);
|
array_push($data['liters'], $one['liters']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$latest_data = $default_car ? $refuel->latest_one($default_car['id']) : [];
|
$latest_record = $refuel->latest_one($_SESSION['user']['id'])[0];
|
||||||
$latest_record = !empty($latest_data) ? $latest_data[0] : null;
|
|
||||||
|
|
||||||
$this->view('dashboard/index', [
|
$this->view('dashboard/index', [
|
||||||
'title' => 'Dashboard',
|
'title' => 'Dashboard',
|
||||||
|
@ -30,21 +30,17 @@ class VehicleController extends Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$vehicle = new Vehicle();
|
$vehicle = new Vehicle();
|
||||||
$default_vehicle = $vehicle->getDefaultVehicle($_SESSION['user']['id']);
|
|
||||||
$is_default = $default_vehicle ? 0 : 1;
|
|
||||||
|
|
||||||
$result = $vehicle->create([
|
$result = $vehicle->create([
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'registration_plate' => strtoupper($registration_plate),
|
'registration_plate' => strtoupper($registration_plate),
|
||||||
'fuel_type' => $fuel_type,
|
'fuel_type' => $fuel_type,
|
||||||
'note' => $note,
|
'note' => $note,
|
||||||
'user_id' => $_SESSION['user']['id'],
|
'user_id' => $_SESSION['user']['id'],
|
||||||
'is_default' => $is_default
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
if ($result === true) {
|
if ($result === true) {
|
||||||
$this->redirect('/');
|
$this->redirect('/vehicles');
|
||||||
} else {
|
} else {
|
||||||
$this->view('vehicles/create', ['title' => 'Create vehicle', 'error' => $result, 'validationErrors' => []] );
|
$this->view('vehicles/create', ['title' => 'Create vehicle', 'error' => $result, 'validationErrors' => []] );
|
||||||
}
|
}
|
||||||
@ -76,7 +72,7 @@ class VehicleController extends Controller {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Location: /vehicles");
|
$this->view('vehicles/index', ['title' => 'Vehicles', 'vehicles' => $vehicles]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDefault() {
|
public function setDefault() {
|
||||||
@ -88,7 +84,7 @@ class VehicleController extends Controller {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Location: /");
|
$this->view('vehicles/index', ['title' => 'Vehicles', 'vehicles' => $vehicles]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function api_get() {
|
public function api_get() {
|
||||||
|
@ -60,7 +60,7 @@ class Refuel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function latest_one($vehicle_id, $record_count = 1) {
|
public function latest_one($user_id, $record_count = 1) {
|
||||||
try {
|
try {
|
||||||
$stmt = $this->db->prepare("
|
$stmt = $this->db->prepare("
|
||||||
SELECT
|
SELECT
|
||||||
@ -70,16 +70,15 @@ class Refuel {
|
|||||||
`r`.`price_per_liter`,
|
`r`.`price_per_liter`,
|
||||||
`r`.`total_price`,
|
`r`.`total_price`,
|
||||||
`r`.`mileage`,
|
`r`.`mileage`,
|
||||||
`r`.`note`,
|
|
||||||
`r`.`created_at`
|
`r`.`created_at`
|
||||||
FROM `refueling_records` AS `r`
|
FROM `refueling_records` AS `r`
|
||||||
JOIN `vehicles` AS `v` ON `r`.`vehicle_id` = `v`.`id`
|
JOIN `vehicles` AS `v` ON `r`.`vehicle_id` = `v`.`id`
|
||||||
WHERE `r`.`vehicle_id` = ?
|
WHERE `r`.`user_id` = ?
|
||||||
ORDER BY `r`.`created_at` DESC
|
ORDER BY `r`.`created_at` DESC
|
||||||
LIMIT ?;
|
LIMIT ?;
|
||||||
");
|
");
|
||||||
|
|
||||||
$stmt->bind_param("ii", $vehicle_id, $record_count);
|
$stmt->bind_param("ii", $user_id, $record_count);
|
||||||
if ($stmt->execute()) {
|
if ($stmt->execute()) {
|
||||||
$result = $stmt->get_result();
|
$result = $stmt->get_result();
|
||||||
$data = $result->fetch_all(MYSQLI_ASSOC);
|
$data = $result->fetch_all(MYSQLI_ASSOC);
|
||||||
|
@ -10,18 +10,17 @@ class Vehicle {
|
|||||||
public function create($data) {
|
public function create($data) {
|
||||||
try{
|
try{
|
||||||
$stmt = $this->db->prepare("
|
$stmt = $this->db->prepare("
|
||||||
INSERT INTO vehicles (user_id, name, registration_plate, fuel_type, note, is_default, created_at)
|
INSERT INTO vehicles (user_id, name, registration_plate, fuel_type, note, created_at)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, NOW())
|
VALUES (?, ?, ?, ?, ?, NOW())
|
||||||
");
|
");
|
||||||
|
|
||||||
$stmt->bind_param(
|
$stmt->bind_param(
|
||||||
"issssi",
|
"issss",
|
||||||
$data['user_id'],
|
$data['user_id'],
|
||||||
$data['name'],
|
$data['name'],
|
||||||
$data['registration_plate'],
|
$data['registration_plate'],
|
||||||
$data['fuel_type'],
|
$data['fuel_type'],
|
||||||
$data['note'],
|
$data['note'],
|
||||||
$data['is_default'],
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($stmt->execute()) {
|
if ($stmt->execute()) {
|
||||||
|
@ -5,15 +5,16 @@
|
|||||||
|
|
||||||
<section class="dashboard">
|
<section class="dashboard">
|
||||||
<h1>Welcome, <?= htmlspecialchars($_SESSION['user']['username']) ?>!</h1>
|
<h1>Welcome, <?= htmlspecialchars($_SESSION['user']['username']) ?>!</h1>
|
||||||
<?php if(!isset($data['default_car'])): ?>
|
<?php if(!isset($data['default_car'])) { ?>
|
||||||
|
|
||||||
<div id="intro">
|
<div id="intro">
|
||||||
<a href="/vehicles/create">Create your first vehicle</a>
|
<a href="/vehicles/create">Create your first vehicle</a>
|
||||||
</div>
|
</div>
|
||||||
<?php elseif (isset($data['latest_record'])): ?>
|
|
||||||
|
<?php } else { ?>
|
||||||
|
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<a href="/refuel/create" class="btn-green">Add new refuel record</a>
|
<a href="/refuel/create" class="btn-green">Add new refuel record!</a>
|
||||||
<a href="/vehicles" class="btn-primary">List all vehicles</a>
|
<a href="/vehicles" class="btn-primary">List all vehicles</a>
|
||||||
<a class="btn-warning" id="btn-offline-add">Add new offline refuel record</a>
|
<a class="btn-warning" id="btn-offline-add">Add new offline refuel record</a>
|
||||||
</div>
|
</div>
|
||||||
@ -32,10 +33,6 @@
|
|||||||
<p><?= $data['latest_record']['total_price'] ?>,-</p>
|
<p><?= $data['latest_record']['total_price'] ?>,-</p>
|
||||||
<b>Mileage:</b>
|
<b>Mileage:</b>
|
||||||
<p><?= $data['latest_record']['mileage'] ?> km</p>
|
<p><?= $data['latest_record']['mileage'] ?> km</p>
|
||||||
<?php if (isset($data['latest_record']['note'])): ?>
|
|
||||||
<b>Note:</b>
|
|
||||||
<p><?= $data['latest_record']['note'] ?></p>
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -66,17 +63,7 @@
|
|||||||
<b id="avg-fl-cnsmp"></b>
|
<b id="avg-fl-cnsmp"></b>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php } ?>
|
||||||
<div id="actions">
|
|
||||||
<a href="/refuel/create" class="btn-green">Add new refuel record</a>
|
|
||||||
<a href="/vehicles" class="btn-primary">List all vehicles</a>
|
|
||||||
<a class="btn-warning" id="btn-offline-add">Add new offline refuel record</a>
|
|
||||||
</div>
|
|
||||||
<div class="alert-warning">
|
|
||||||
<p>Default vehicle <b><i><?= $data['default_car']['name'] ?></i></b> doesn't have any refuel record yet.</p>
|
|
||||||
<p>Select another vehicle or create first refuel record.</p>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
|
||||||
</section>
|
</section>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<p>No vehicles yet. <a href="/vehicles/create">Add your first vehicle</a>.</p>
|
<p>No vehicles yet. <a href="/vehicles/create">Add your first vehicle</a>.</p>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<div class="btn-wrapper">
|
<div class="btn-wrapper">
|
||||||
<a href="/vehicles/create" class="btn-green">Add new vehicle</a>
|
<a href="/vehicles/create" class="btn-green">Add new vehicle!</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="vehicle-wrapper">
|
<div class="vehicle-wrapper">
|
||||||
<?php foreach ($this->get('vehicles') as $vehicle): ?>
|
<?php foreach ($this->get('vehicles') as $vehicle): ?>
|
||||||
@ -13,18 +13,15 @@
|
|||||||
<p><?= htmlspecialchars($vehicle['registration_plate']) ?></p>
|
<p><?= htmlspecialchars($vehicle['registration_plate']) ?></p>
|
||||||
<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">
|
||||||
<br>
|
|
||||||
<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>
|
||||||
|
|
||||||
<br>
|
|
||||||
<form method="POST" action="/vehicles/default">
|
<form method="POST" action="/vehicles/default">
|
||||||
<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="Set as default" class="btn-primary">
|
<input type="submit" value="Set default" class="btn-primary">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,8 +6,6 @@ services:
|
|||||||
MARIADB_ROOT_PASSWORD: root
|
MARIADB_ROOT_PASSWORD: root
|
||||||
ports:
|
ports:
|
||||||
- 3306:3306
|
- 3306:3306
|
||||||
networks:
|
|
||||||
- fuelstats-network
|
|
||||||
profiles: ["prod", "dev"]
|
profiles: ["prod", "dev"]
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
@ -17,11 +15,6 @@ services:
|
|||||||
- 8080:80
|
- 8080:80
|
||||||
environment:
|
environment:
|
||||||
- PMA_ARBITRARY=1
|
- PMA_ARBITRARY=1
|
||||||
- PMA_HOST=mariadb
|
|
||||||
depends_on:
|
|
||||||
- mariadb
|
|
||||||
networks:
|
|
||||||
- fuelstats-network
|
|
||||||
profiles: ["dev"]
|
profiles: ["dev"]
|
||||||
|
|
||||||
fuelstats:
|
fuelstats:
|
||||||
@ -35,10 +28,4 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- mariadb
|
- mariadb
|
||||||
restart: on-failure:2
|
restart: on-failure:2
|
||||||
networks:
|
|
||||||
- fuelstats-network
|
|
||||||
profiles: ["prod"]
|
profiles: ["prod"]
|
||||||
|
|
||||||
networks:
|
|
||||||
fuelstats-network:
|
|
||||||
driver: bridge
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
|
@ -52,8 +52,3 @@ h1 {
|
|||||||
background-color: var(--clr-warning-muted);
|
background-color: var(--clr-warning-muted);
|
||||||
border: var(--borderWidth-thin) solid var(--clr-border-danger);
|
border: var(--borderWidth-thin) solid var(--clr-border-danger);
|
||||||
}
|
}
|
||||||
|
|
||||||
#actions {
|
|
||||||
padding-top: 1rem;
|
|
||||||
padding-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user