From 39f44c8d03d3b7a7ceaf22cfe4d23ee150c61edb Mon Sep 17 00:00:00 2001 From: GamerClassN7 Date: Tue, 15 Dec 2020 09:07:47 +0100 Subject: [PATCH] api tweeks --- app/api/RoomsApi.php | 48 ++++++++++-------------- app/api/WidgetApi.php | 2 - app/models/managers/SubDeviceManager.php | 2 +- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/app/api/RoomsApi.php b/app/api/RoomsApi.php index 23d62e1..e3bd316 100644 --- a/app/api/RoomsApi.php +++ b/app/api/RoomsApi.php @@ -24,53 +24,43 @@ class RoomsApi extends ApiController $type = $subDevicesData[$subDeviceKey][$key]['type']; } else if (strpos(SubDeviceManager::getSubDeviceMaster($subDevicesData[$subDeviceKey][$key]['subdevice_id'])['type'], '-') !== false) { $type = SubDeviceManager::getSubDeviceMaster($subDevicesData[$subDeviceKey][$key]['subdevice_id'])['type']; - } else { - continue; } + //Connection Error Creation + $connectionError = true; + $LastRecordTime = new DateTime($subDevicesData[$subDeviceKey][$key]['time']); + $interval = $LastRecordTime->diff(new DateTime()); + $lastSeen = ($interval->format('%h') * 60 + $interval->format('%i')); + + if ($subDevicesData[$subDeviceKey][$key]['sleep_time'] == NULL || $subDevicesData[$subDeviceKey][$key]['sleep_time'] == 0 || $lastSeen < $subDevicesData[$subDeviceKey][$key]['sleep_time']) { + $connectionError = false; + } + $subDevicesData[$subDeviceKey][$key]['connection_error'] = $connectionError; + //Record Translation $cammelCaseClass = ""; foreach (explode('-', $type) as $word) { $cammelCaseClass .= ucfirst($word); } - if (!class_exists($cammelCaseClass)) { - continue; + if (class_exists($cammelCaseClass)) { + $deviceClass = new $cammelCaseClass; + if (method_exists($deviceClass, 'translate')) { + $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); + } } - $deviceClass = new $cammelCaseClass; - if (!method_exists($deviceClass, 'translate')) { - continue; - } - $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); - - //Connection Error Creation - $niceTime = Utilities::ago($LastRecordTime); - - $interval = $LastRecordTime->diff(new DateTime()); - $hours = $interval->format('%h'); - $minutes = $interval->format('%i'); - $lastSeen = ($hours * 60 + $minutes); - - if ( - $lastSeen < $subDevicesData[$subDeviceKey][$key]['sleep_time'] || - $subDevicesData[$subDeviceKey][$key]['type'] == "on/off" || - $subDevicesData[$subDeviceKey][$key]['type'] == "door" || - $subDevicesData[$subDeviceKey][$key]['type'] == "wather" - ) { - $connectionError = false; - } - $subDevicesData[$subDeviceKey][$key]['connection_error'] = $connectionError - } } foreach ($roomsData as $roomKey => $roomData) { if ($roomData['device_count'] == 0) continue; + $subDevicesSorted = isset($subDevicesData[$roomData['room_id']]) ? Utilities::sortArrayByKey($subDevicesData[$roomData['room_id']], 'connection_error', 'asc') : []; $response[] = [ 'room_id' => $roomData['room_id'], 'name' => $roomData['name'], - 'widgets' => isset($subDevicesData[$roomData['room_id']]) ? $subDevicesData[$roomData['room_id']] : [], + 'widgets' => $subDevicesSorted, ]; } + $this->response($response); } diff --git a/app/api/WidgetApi.php b/app/api/WidgetApi.php index 3500b39..4b94ca3 100644 --- a/app/api/WidgetApi.php +++ b/app/api/WidgetApi.php @@ -44,8 +44,6 @@ class WidgetApi extends ApiController ]; $response = null; - $connectionError = true; - $subDeviceData = SubDeviceManager::getSubdeviceDetailById($subDeviceId); diff --git a/app/models/managers/SubDeviceManager.php b/app/models/managers/SubDeviceManager.php index 9c51261..9739c2d 100644 --- a/app/models/managers/SubDeviceManager.php +++ b/app/models/managers/SubDeviceManager.php @@ -78,7 +78,7 @@ class SubDeviceManager //TODO: @Patrik Check line 89 $rows = Db::loadAll(" - SELECT d.room_id, d.sleep_time, sd.subdevice_id, sd.device_id, d.icon, d.name, sd.type, sd.unit, r.value FROM subdevices sd + SELECT d.room_id, d.sleep_time, sd.subdevice_id, sd.device_id, d.icon, d.name, sd.type, sd.unit, r.value, r.time FROM subdevices sd JOIN devices d ON sd.device_id = d.device_id JOIN records r ON r.subdevice_id = sd.subdevice_id WHERE d.room_id IN (" . str_repeat("?,", count($roomIds) - 1) . "?)