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();
     }
 }
 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:
     }
 }
 private function updateDataset()
 {
     $dataset = $_SESSION['dataset'];
     if (empty($dataset)) {
         HomeView::show();
         header('Location: /' . $_SESSION['base']);
     } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') {
         DatasetView::showUpdate();
     } else {
         $params = $dataset->getParameters();
         $params['dataset_name'] = array_key_exists('dataset_name', $_POST) ? $_POST['dataset_name'] : '';
         $params['description'] = array_key_exists('description', $_POST) ? $_POST['description'] : '';
         $updatedDataset = new Dataset($params);
         $updatedDataset->setDatasetId($dataset->getDatasetId());
         $returnedDataset = DatasetsDB::updateDataset($updatedDataset);
         if ($returnedDataset->getErrorCount() == 0) {
             // Show the Dataset view which should display the updated params
             DatasetView::show();
             header('Location: /' . $_SESSION['base'] . '/dataset/show/' . $dataset->getDatasetId());
         } else {
             // Carry over the sensors, if any
             $updatedDataset->setSensors($dataset->getSensors());
             $_SESSION['dataset'] = $updatedDataset;
             DatasetView::showUpdate();
         }
     }
 }
 public static function updateDataset($dataset)
 {
     try {
         $db = Database::getDB();
         if (is_null($dataset) || $dataset->getErrorCount() > 0) {
             return $dataset;
         }
         $checkDataset = DatasetsDB::getDatasetsBy('dataset_id', $dataset->getDatasetId());
         if (empty($checkDataset)) {
             $dataset->setError('dataset_id', 'DATASET_DOES_NOT_EXIST');
             return $dataset;
         }
         if ($dataset->getErrorCount() > 0) {
             return $dataset;
         }
         $query = "UPDATE Datasets SET dataset_name = :dataset_name, \r\n\t\t\t\t\tdescription = :description\r\n\t\t\t\t\tWHERE dataset_id = :dataset_id";
         $statement = $db->prepare($query);
         $statement->bindValue(':dataset_name', $dataset->getDatasetName());
         $statement->bindValue(':description', $dataset->getDescription());
         $statement->bindValue(':dataset_id', $dataset->getDatasetId());
         $statement->execute();
         $statement->closeCursor();
     } catch (Exception $e) {
         $dataset->setError('dataset_id', 'DATASET_COULD_NOT_BE_UPDATED');
     }
     return $dataset;
 }
 public function testUpdateDatasetDescription()
 {
     $myDb = DBMaker::create('sensordatarepotest');
     Database::clearDB();
     $db = Database::getDB('sensordatarepotest', 'C:\\xampp\\myConfig.ini');
     $testDatasetId = 1;
     $datasets = DatasetsDB::getDatasetsBy('dataset_id', $testDatasetId);
     $dataset = $datasets[0];
     $this->assertTrue(empty($dataset->getDescription()), 'Before the update, it should have an empty description');
     $params = $dataset->getParameters();
     $params['description'] = 'Updated description';
     $newDataset = new Dataset($params);
     $newDataset->setDatasetId($testDatasetId);
     $returnedDataset = DatasetsDB::updateDataset($newDataset);
     $this->assertEquals($returnedDataset->getDescription(), $params['description'], 'After the update it should have the name ' . $params['description']);
 }