<?php
class SubDeviceManager
{
	public static $devices;

	public function getAllSubDevices($deviceId)
	{
		return Db::loadAll("SELECT * FROM subdevices WHERE device_id = ?", array($deviceId));
	}

	public function getSubDeviceMaster($subDeviceId)
	{
		return Db::loadOne("SELECT * FROM devices WHERE device_id = (SELECT device_id FROM subdevices WHERE subdevice_id = ?)", array($subDeviceId));
	}

	public function getSubDeviceByMaster($deviceId, $subDeviceType = null)
	{
		if ($subDeviceType == null) {
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ?;", array($deviceId));
		} else {
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ? AND type = ?;", array($deviceId, $subDeviceType));
		}
	}

	public function getSubDeviceByMasterAndType($deviceId, $subDeviceType = null)
	{
		if (!empty($subDeviceType)) {
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ?;", array($deviceId));
		} else {
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ? AND type = ?;", array($deviceId, $subDeviceType));
		}
	}

	public function getSubDevice($subDeviceId)
	{
		return Db::loadOne("SELECT * FROM subdevices WHERE subdevice_id = ?;", array($subDeviceId));
	}

	public function getSubDevicesTypeForMater($deviceId)
	{
		$parsedTypes = [];
		$types = Db::loadAll("SELECT type FROM subdevices WHERE device_id = ?;", array($deviceId));
		foreach ($types as $orderNum => $type) {
			$parsedTypes[$orderNum] = $type['type'];
		}
		return $parsedTypes;
	}

	//check if dubdevice exist

	public function create($deviceId, $type, $unit)
	{
		$record = array(
			'device_id' => $deviceId,
			'type' => $type,
			'unit' => $unit,
		);
		try {
			Db::add('subdevices', $record);
		} catch (PDOException $error) {
			echo $error->getMessage();
			die();
		}
	}

	public function remove($subDeviceId)
	{
		RecordManager::cleanSubdeviceRecords($subDeviceId);
		return Db::loadAll("DELETE FROM subdevices WHERE subdevice_id = ?", array($subDeviceId));
	}
}