From dffd2698bd7823bfd786a2ab9577790a3bdc3470 Mon Sep 17 00:00:00 2001 From: Luca Haid Date: Sun, 29 Jun 2025 10:43:06 +0000 Subject: [PATCH] Asset management/fix last bugs --- .../AssetManagementController.php | 7 +------ .../AssetManagementReservationModel.php | 18 ++++++++++++++++++ .../pages/AssetManagement/AssetManagement.js | 11 +++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/application/AssetManagement/AssetManagementController.php b/application/AssetManagement/AssetManagementController.php index 56d7c8a13..b51e86be2 100644 --- a/application/AssetManagement/AssetManagementController.php +++ b/application/AssetManagement/AssetManagementController.php @@ -119,12 +119,7 @@ class AssetManagementController extends TTCrud // Check for conflicting reservations if not forced if (empty($post['force'])) { - $now = time(); - $conflictingReservations = AssetManagementReservationModel::dbSelect(" - SELECT * FROM AssetManagementReservation - WHERE assetId = {$post['assetId']} AND startDate <= $now AND (endDate IS NULL OR endDate >= $now) - "); - + $conflictingReservations = AssetManagementReservationModel::getConflictingReservations($post['assetId']); if (!empty($conflictingReservations)) { $res = $conflictingReservations[0]; $user = UserModel::getOne($res->userId); diff --git a/application/AssetManagementReservation/AssetManagementReservationModel.php b/application/AssetManagementReservation/AssetManagementReservationModel.php index 3303d9083..af1d36cac 100644 --- a/application/AssetManagementReservation/AssetManagementReservationModel.php +++ b/application/AssetManagementReservation/AssetManagementReservationModel.php @@ -9,4 +9,22 @@ class AssetManagementReservationModel extends TTCrudBaseModel { public ?string $notes; public int $createBy; public int $create; + + public static function getConflictingReservations($assetId): array + { + $db = self::getDB(); + $table = self::getFullyQualifiedTable(); + $now = time(); + + $sql = "SELECT * FROM $table + WHERE assetId = $assetId AND startDate <= $now AND (endDate IS NULL OR endDate >= $now) + "; + + $result = $db->query($sql); + $reservations = []; + while ($row = $result->fetch_assoc()) { + $reservations[] = new self($row); + } + return $reservations; + } } diff --git a/public/js/pages/AssetManagement/AssetManagement.js b/public/js/pages/AssetManagement/AssetManagement.js index 5bd6768d5..f6f4b50cb 100644 --- a/public/js/pages/AssetManagement/AssetManagement.js +++ b/public/js/pages/AssetManagement/AssetManagement.js @@ -152,6 +152,12 @@ Vue.component('asset-borrow-return-widget', {
Reserviert für {{ activeReservation.userName }}
+
+ Nächste Reservierung: {{ formatDate(nextReservation.startDate, 'DD.MM.YYYY') }} + bis {{ formatDate(nextReservation.endDate, 'DD.MM.YYYY') }} +
({{ nextReservation.notes }})
+
für {{ nextReservation.userName }}
+
r.startDate <= now && (r.endDate === null || r.endDate >= now)); + }, + nextReservation() { + if (!this.rowData.reservations || this.rowData.reservations.length === 0) return null; + const now = window.moment().unix(); + return this.rowData.reservations.find(r => r.startDate > now); } }, methods: {