Ajax Refactor/Oprimalization
This commit is contained in:
		@@ -21,165 +21,108 @@ class Ajax extends Template
 | 
			
		||||
			header('Location: ./');
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (isset($_POST['subDevice_id'])){
 | 
			
		||||
		if (
 | 
			
		||||
			isset($_POST['automation_id']) &&
 | 
			
		||||
			$_POST['automation_id'] != '' &&
 | 
			
		||||
			isset($_POST['action']) &&
 | 
			
		||||
			$_POST['action'] != ''
 | 
			
		||||
		) {
 | 
			
		||||
			$automationId = $_POST['automation_id'];
 | 
			
		||||
			//Automation Editation of Automations from Buttons/Details
 | 
			
		||||
			switch ($_POST['action']) {
 | 
			
		||||
				case 'delete':
 | 
			
		||||
				AutomationManager::remove($automationId);
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				case 'deactive':
 | 
			
		||||
				AutomationManager::deactive($automationId);
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				default:
 | 
			
		||||
				echo 'no action detected';
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		} else if (
 | 
			
		||||
			isset($_POST['subDevice_id']) &&
 | 
			
		||||
			$_POST['subDevice_id'] != '' &&
 | 
			
		||||
			isset($_POST['action']) &&
 | 
			
		||||
			$_POST['action'] != ''
 | 
			
		||||
		) {
 | 
			
		||||
			$subDeviceId = $_POST['subDevice_id'];
 | 
			
		||||
			if (isset($_POST['lastRecord'])){
 | 
			
		||||
			switch ($_POST['action']) {
 | 
			
		||||
				case 'chart':
 | 
			
		||||
				$period = $_POST['period'];
 | 
			
		||||
				$groupBy = $_POST['group'];
 | 
			
		||||
				header('Content-Type: application/json');
 | 
			
		||||
				$graphData = ChartManager::generateChartData($subDeviceId, $period, $groupBy);
 | 
			
		||||
				echo Utilities::generateGraphJson($graphData['graphType'], $graphData['graphData'], $graphData['graphRange']);
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				//Change On/Off Device State of Device Button
 | 
			
		||||
				case 'change':
 | 
			
		||||
				$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
			
		||||
				$deviceId = SubDeviceManager::getSubDeviceMaster($subDeviceId)['device_id'];
 | 
			
		||||
				if ($subDeviceData['type'] == 'on/off'){
 | 
			
		||||
					$lastValue = RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'];
 | 
			
		||||
					RecordManager::create($deviceId, 'on/off', !$lastValue);
 | 
			
		||||
					echo ($lastValue ? 'ON' : 'OFF');
 | 
			
		||||
				}
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				//Waitin for execution of Changet walue for Device Button
 | 
			
		||||
				case 'executed':
 | 
			
		||||
				echo RecordManager::getLastRecord($subDeviceId)['execuded'];
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				default:
 | 
			
		||||
				echo 'no action detected';
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
			
		||||
			$deviceId = SubDeviceManager::getSubDeviceMaster($subDeviceId)['device_id'];
 | 
			
		||||
			if ($subDeviceData['type'] == 'on/off'){
 | 
			
		||||
				//TODO: Pridelat kontrolu změnit stav pouze pokud se poslední [executed] stav != novému
 | 
			
		||||
				if (RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'] == 0){
 | 
			
		||||
					RecordManager::create($deviceId, 'on/off', 1);
 | 
			
		||||
					echo 'ON';
 | 
			
		||||
				}else{
 | 
			
		||||
					RecordManager::create($deviceId, 'on/off', 0);
 | 
			
		||||
					echo 'OFF';
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}  else if (isset($_POST['automation_id'])){
 | 
			
		||||
			$automationId = $_POST['automation_id'];
 | 
			
		||||
			if (isset($_POST['action']) && $_POST['action'] == 'delete') {
 | 
			
		||||
				AutomationManager::remove($automationId);
 | 
			
		||||
			}else {
 | 
			
		||||
				AutomationManager::deactive($automationId);
 | 
			
		||||
			}
 | 
			
		||||
		} else if (isset($_POST['subDevice']) && isset($_POST['action']) && $_POST['action'] == "chart") {
 | 
			
		||||
			//TODO lepe rozstrukturovat
 | 
			
		||||
			$subDeviceId = $_POST['subDevice'];
 | 
			
		||||
			$period = $_POST['period'];
 | 
			
		||||
			$groupBy = $_POST['group'];
 | 
			
		||||
 | 
			
		||||
			$subDevice = SubDeviceManager::getSubDevice($subDeviceId);
 | 
			
		||||
			$records = RecordManager::getAllRecordForGraph($subDeviceId, $period, $groupBy);
 | 
			
		||||
 | 
			
		||||
			$array = array_column($records, 'value');
 | 
			
		||||
			$arrayTime = array_column($records, 'time');
 | 
			
		||||
			$output = [];
 | 
			
		||||
 | 
			
		||||
			foreach ($array as $key => $value) {
 | 
			
		||||
				$output[$key]['y'] = $value;
 | 
			
		||||
				if ($subDevice['type'] == 'light'){
 | 
			
		||||
					if ($value > 810){
 | 
			
		||||
						$output[$key]['y'] = 1;
 | 
			
		||||
					} else {
 | 
			
		||||
						$output[$key]['y'] = 0;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				$timeStamp = new DateTime($arrayTime[$key]);
 | 
			
		||||
				$output[$key]['t'] = $timeStamp->format("Y-m-d") . 'T' . $timeStamp->format("H:i:s") . 'Z';
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			$data = json_encode($output);
 | 
			
		||||
			$data = $output;
 | 
			
		||||
			$arrayTimeStamps = array_column($records, 'time');
 | 
			
		||||
			foreach ($arrayTimeStamps as $key => $value) {
 | 
			
		||||
				$arrayTimeStamps[$key] = (new DateTime($value))->format(TIMEFORMAT);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			$labels = json_encode($arrayTimeStamps);
 | 
			
		||||
			$range = RANGES[$subDevice['type']];
 | 
			
		||||
			$graphType = $range['graph'];
 | 
			
		||||
 | 
			
		||||
			header('Content-Type: application/json');
 | 
			
		||||
 | 
			
		||||
			echo Utilities::generateGraphJson($range['graph'], $data, $range);
 | 
			
		||||
			die();
 | 
			
		||||
		} else if (isset($_POST['action']) && $_POST['action'] == "getState") {
 | 
			
		||||
			//State Update
 | 
			
		||||
			$roomsData = RoomManager::getAllRooms();
 | 
			
		||||
			$subDevices = [];
 | 
			
		||||
			foreach ($roomsData as $roomKey => $roomsData) {
 | 
			
		||||
				$devicesData = DeviceManager::getAllDevicesInRoom($roomsData['room_id']);
 | 
			
		||||
				foreach ($devicesData as $deviceKey => $deviceData) {
 | 
			
		||||
					$subDevicesData = SubDeviceManager::getAllSubDevices($deviceData['device_id']);
 | 
			
		||||
					foreach ($subDevicesData as $subDeviceKey => $subDeviceData) {
 | 
			
		||||
						$lastRecord = RecordManager::getLastRecord($subDeviceData['subdevice_id']);
 | 
			
		||||
						$parsedValue = round($lastRecord['value']);
 | 
			
		||||
						//TODO: Předelat na switch snažší přidávání
 | 
			
		||||
						/*Value Parsing*/
 | 
			
		||||
						if ($subDeviceData['type'] == "on/off") {
 | 
			
		||||
							$parsedValue = ($parsedValue == 1 ? 'ON' : 'OFF');
 | 
			
		||||
						}
 | 
			
		||||
						if ($subDeviceData['type'] == "light") {
 | 
			
		||||
							$replacementTrue = 'Light';
 | 
			
		||||
							$replacementFalse = 'Dark';
 | 
			
		||||
							if ($parsedValue != 1){
 | 
			
		||||
								//Analog Reading
 | 
			
		||||
								$parsedValue = ($parsedValue <= 810 ? $replacementTrue : $replacementFalse);
 | 
			
		||||
							} else {
 | 
			
		||||
								//Digital Reading
 | 
			
		||||
								$parsedValue = ($parsedValue == 0 ? $replacementTrue : $replacementFalse);
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						if ($subDeviceData['type'] == "door") {
 | 
			
		||||
							$replacementTrue = 'Closed';
 | 
			
		||||
							$replacementFalse = 'Opened';
 | 
			
		||||
							$parsedValue = ($parsedValue == 1 ? $replacementTrue : $replacementFalse);
 | 
			
		||||
						}
 | 
			
		||||
						$subDevices[$subDeviceData['subdevice_id']] = [
 | 
			
		||||
							'value' => $parsedValue .$subDeviceData['unit'],
 | 
			
		||||
							'time' => $lastRecord['time'],
 | 
			
		||||
						];
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			echo json_encode($subDevices);
 | 
			
		||||
			die();
 | 
			
		||||
		} else if (isset($_POST['scene_id'])) {
 | 
			
		||||
		} else if (
 | 
			
		||||
			isset($_POST['scene_id']) &&
 | 
			
		||||
			$_POST['scene_id'] != '' &&
 | 
			
		||||
			isset($_POST['action']) &&
 | 
			
		||||
			$_POST['action'] != ''
 | 
			
		||||
		) {
 | 
			
		||||
			$sceneId = $_POST['scene_id'];
 | 
			
		||||
			if (isset($_POST['action']) && $_POST['action'] == 'delete') {
 | 
			
		||||
			switch ($_POST['action']) {
 | 
			
		||||
				case 'delete':
 | 
			
		||||
				SceneManager::delete($sceneId);
 | 
			
		||||
			}else {
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				case 'execute':
 | 
			
		||||
				echo SceneManager::execScene($sceneId);
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				default:
 | 
			
		||||
				echo 'no action detected';
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		} else if (
 | 
			
		||||
			isset($_POST['notification']) &&
 | 
			
		||||
			$_POST['notification'] != '' &&
 | 
			
		||||
			isset($_POST['action']) &&
 | 
			
		||||
			$_POST['action'] != ''
 | 
			
		||||
		) {
 | 
			
		||||
			switch ($_POST['action']) {
 | 
			
		||||
				//add suscription to database
 | 
			
		||||
				case 'subscribe':
 | 
			
		||||
				$subscriptionToken = $_POST['Token'];
 | 
			
		||||
				NotificationManager::addSubscriber($_SESSION['user']['id'], $subscriptionToken);
 | 
			
		||||
				die();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
				default:
 | 
			
		||||
				echo 'no action detected';
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		} else if (isset($_POST['token'])) {
 | 
			
		||||
			NotificationManager::addSubscriber($_SESSION['user']['id'], $_POST['token']);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		die();
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*$JSON = '{
 | 
			
		||||
"type": "line",
 | 
			
		||||
"data": {
 | 
			
		||||
"labels": ' . $data . ',
 | 
			
		||||
"datasets": [{
 | 
			
		||||
"data": ' . $data . ',
 | 
			
		||||
"backgroundColor": "#7522bf",
 | 
			
		||||
"lineTension": 0,
 | 
			
		||||
"radius": 5
 | 
			
		||||
}]
 | 
			
		||||
},
 | 
			
		||||
"options": {
 | 
			
		||||
"legend": {
 | 
			
		||||
"display": false
 | 
			
		||||
},
 | 
			
		||||
"scales": {
 | 
			
		||||
"xAxes": [{
 | 
			
		||||
"type": "time",
 | 
			
		||||
"time": {
 | 
			
		||||
"unit": "hour"
 | 
			
		||||
}
 | 
			
		||||
}],
 | 
			
		||||
"yAxes": [{
 | 
			
		||||
"ticks": {
 | 
			
		||||
"min": ' . $range['min'] . ',
 | 
			
		||||
"max": ' . $range['max'] . ',
 | 
			
		||||
"steps": ' . $range['scale'] . '
 | 
			
		||||
}
 | 
			
		||||
}]
 | 
			
		||||
},
 | 
			
		||||
"tooltips": {
 | 
			
		||||
"enabled": false
 | 
			
		||||
},
 | 
			
		||||
"hover": {
 | 
			
		||||
"mode": null
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
}';*/
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user