private function show()
 {
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0;
     // Identify the target user
     $users = UsersDB::getUsersBy('user_id', $arguments);
     $user = $users[0];
     if (!is_null($user)) {
         // Prepare all data to be displayed in the target user's ProfileView
         // --all of their datasets
         // --all of the sensors for each dataset
         // TODO: add 'member since'
         $datasets = DatasetsDB::getDatasetsBy('user_id', $user->getUserId());
         foreach ($datasets as $dataset) {
             $sensors = SensorsDB::getSensorsBy('dataset_id', $dataset->getDatasetId());
             $dataset->setSensors($sensors);
         }
         $_SESSION['user'] = $user;
         $_SESSION['datasets'] = $datasets;
         ProfileView::show();
     } else {
         $_SESSION['user'] = null;
         // TODO:: Consider showing a 'Specified user does not exist' page
         HomeView::show();
     }
 }
 private function show()
 {
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0;
     $dataset = $_SESSION['dataset'];
     if (!is_null($dataset)) {
         // Populate the Dataset with its sensors
         $sensors = SensorsDB::getSensorsBy('dataset_id', $dataset->getDatasetId());
         $dataset->setSensors($sensors);
         // Update the session dataset
         $_SESSION['dataset'] = $dataset;
         DatasetView::show();
     } else {
         HomeView::show();
         header('Location: /' . $_SESSION['base']);
     }
 }
 public static function run()
 {
     $action = array_key_exists('action', $_SESSION) ? $_SESSION['action'] : "";
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : "";
     if (is_numeric($arguments)) {
         $measurements = MeasurementsDB::getMeasurementsBy('sensor_id', $arguments);
         if (count($measurements) > 0) {
             $sensorId = $measurements[0]->getSensorId();
             $sensorArray = SensorsDB::getSensorsBy('sensor_id', $sensorId);
             if (count($sensorArray) > 0) {
                 $sensor = $sensorArray[0];
             } else {
                 HomeView::show();
             }
             $datasetArray = DatasetsDB::getDatasetsBy('dataset_id', $sensor->getDatasetId());
             if (count($datasetArray) > 0) {
                 $dataset = $datasetArray[0];
             } else {
                 HomeView::show();
             }
             $_SESSION['measurements'] = $measurements;
             $_SESSION['sensor'] = $sensor;
             $_SESSION['dataset'] = $dataset;
         } else {
             HomeView::show();
         }
         switch ($action) {
             case "column":
                 self::showColumnChart();
                 break;
             case "line":
                 self::showLineChart();
                 break;
             default:
                 HomeView::show();
         }
     } else {
         HomeView::show();
     }
 }
 private function updateSensor()
 {
     $sensor = $_SESSION['sensor'];
     if (empty($sensor)) {
         HomeView::show();
         header('Location: /' . $_SESSION['base']);
     } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') {
         SensorView::showUpdate();
     } else {
         $params = $sensor->getParameters();
         $params['sensor_name'] = array_key_exists('sensor_name', $_POST) ? $_POST['sensor_name'] : '';
         $params['description'] = array_key_exists('description', $_POST) ? $_POST['description'] : '';
         $updatedSensor = new Sensor($params);
         $updatedSensor->setSensorId($sensor->getSensorId());
         $returnedSensor = SensorsDB::updateSensor($updatedSensor);
         if ($returnedSensor->getErrorCount() == 0) {
             // Show the Sensor View which should display the updated params
             SensorView::show();
             header('Location: /' . $_SESSION['base'] . '/sensor/show/' . $sensor->getSensorId());
         } else {
             // Carry over the measurements, if any
             $updatedSensor->setMeasurements($sensor->getMeasurements());
             $_SESSION['sensor'] = $updatedSensor;
             SensorView::showUpdate();
         }
     }
 }
 public function testUpdateSequenceType()
 {
     $myDb = DBMaker::create('sensordatarepotest');
     Database::clearDB();
     $db = Database::getDB('sensordatarepotest', 'C:\\xampp\\myConfig.ini');
     $testSensorId = 2;
     $sensors = SensorsDB::getSensorsBy('sensor_id', $testSensorId);
     $sensor = $sensors[0];
     $this->assertEquals($sensor->getSequenceType(), 'SEQUENTIAL', 'Before the update, it should have sequence type SEQUENTIAL');
     $params = $sensor->getParameters();
     $params['sequence_type'] = 'TIME-CODED';
     $newSensor = new Sensor($params);
     $newSensor->setSensorId($testSensorId);
     $returnedSensor = SensorsDB::updateSensor($newSensor);
     $this->assertEquals($returnedSensor->getSequenceType(), $params['sequence_type'], 'After the update it should have sequence_type ' . $params['sequence_type']);
     $this->assertTrue(empty($returnedSensor->getErrors()), 'The updated sensor should be error-free');
 }
 public static function updateSensor($sensor)
 {
     try {
         $db = Database::getDB();
         if (is_null($sensor) || $sensor->getErrorCount() > 0) {
             return $sensor;
         }
         $checkSensor = SensorsDB::getSensorsBy('sensor_id', $sensor->getSensorId());
         if (empty($checkSensor)) {
             $sensor->setError('sensor_id', 'SENSOR_DOES_NOT_EXIST');
             return $sensor;
         }
         if ($sensor->getErrorCount() > 0) {
             return $sensor;
         }
         $query = "UPDATE Sensors SET sensor_name = :sensor_name,\r\n\t\t\t\t\tsensor_type = :sensor_type, sensor_units = :sensor_units,\r\n\t\t\t\t\tsequence_type = :sequence_type, description = :description \r\n\t\t\t\t\tWHERE sensor_id = :sensor_id";
         $statement = $db->prepare($query);
         $statement->bindValue(':sensor_name', $sensor->getSensorName());
         $statement->bindValue(':sensor_type', $sensor->getSensorType());
         $statement->bindValue(':sensor_units', $sensor->getSensorUnits());
         $statement->bindValue(':sequence_type', $sensor->getSequenceType());
         $statement->bindValue(':description', $sensor->getDescription());
         $statement->bindValue(':sensor_id', $sensor->getSensorId());
         $statement->execute();
         $statement->closeCursor();
     } catch (Exception $e) {
         $sensor->setError('sensor_id', 'SENSOR_COULD_NOT_BE_UPDATED');
     }
     return $sensor;
 }