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();
     }
 }
 public static function run()
 {
     $action = array_key_exists('action', $_SESSION) ? $_SESSION['action'] : "";
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : "";
     switch ($action) {
         case "create":
             self::newSensor();
             break;
         case "show":
             if ($arguments == 'all') {
                 $_SESSION['sensors'] = SensorsDB::getSensorsBy();
                 $_SESSION['headertitle'] = 'Sensor Data Repo | Sensors';
                 SensorView::showAll();
             } else {
                 $sensors = SensorsDB::getSensorsBy('sensor_id', $arguments);
                 if (count($sensors) > 0) {
                     $sensor = $sensors[0];
                     $_SESSION['sensor'] = $sensor;
                     $datasets = DatasetsDB::getDatasetsBy('dataset_id', $sensor->getDatasetId());
                     if (count($datasets) > 0) {
                         $_SESSION['dataset'] = $datasets[0];
                         self::show();
                     } else {
                         HomeView::show();
                     }
                 } else {
                     HomeView::show();
                 }
             }
             break;
         case "update":
             $sensors = SensorsDB::getSensorsBy('sensor_id', $arguments);
             $_SESSION['sensor'] = $sensors[0];
             self::updateSensor();
             break;
         default:
     }
 }
 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;
 }