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::newSkillAssoc();
             break;
         case "show":
             if ($arguments == 'all') {
                 $_SESSION['skillAssocs'] = SkillAssocsDB::getSkillAssocsBy();
                 $_SESSION['headertitle'] = "botspace skill associations";
                 SkillAssocView::showAll();
             } else {
                 $skillAssocs = SkillAssocsDB::getSkillAssocsBy('skillAssocId', $arguments);
                 $_SESSION['skillAssoc'] = $skillAssocs[0];
                 self::show();
             }
             break;
         case "update":
             echo "Update";
             self::updateSkillAssoc();
             break;
         default:
     }
 }
 public function testGetSkillAssocsByUserDataId()
 {
     $myDB = DBMaker::create('botspacetest');
     Database::clearDB();
     $db = Database::getDB('botspacetest', 'C:\\xampp\\myConfig.ini');
     $testUserDataId = 3;
     $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $testUserDataId);
     foreach ($skillAssocs as $skillAssoc) {
         $this->assertEquals($skillAssoc->getUserDataId(), $testUserDataId, 'All returned SkillAssocs should have the specified userDataId');
     }
 }
 public static function show()
 {
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0;
     $userData = $_SESSION['userData'];
     if (!is_null($userData)) {
         $_SESSION['userData'] = $userData;
         $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $userData->getUserDataId());
         $_SESSION['skillAssocs'] = $skillAssocs;
         UserDataView::show();
     } else {
         HomeView::show();
     }
 }
 public static function setProfileDataForUser($userId)
 {
     $retVal = false;
     if (empty($userId) || !is_numeric($userId)) {
         return $retVal;
     }
     $user = null;
     $userData = null;
     $skillAssocs = null;
     $userRobots = null;
     $users = UsersDB::getUsersBy('userId', $userId);
     if (count($users) > 0) {
         $user = $users[0];
         if ($user->getErrorCount() != 0) {
             return $retVal;
         }
         $userDataArray = UserDataDB::getUserDataBy('userId', $userId);
         if (count($userDataArray) > 0) {
             $userData = $userDataArray[0];
         }
         if ($userData->getErrorCount() != 0) {
             return $retVal;
         }
         $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $userData->getUserDataId());
         foreach ($skillAssocs as $skillAssoc) {
             if ($skillAssoc->getErrorCount() != 0) {
                 return $retVal;
             }
         }
         $robotAssocs = RobotAssocsDB::getRobotAssocsBy('creatorId', $userData->getUserDataId());
         $userRobots = array();
         foreach ($robotAssocs as $robotAssoc) {
             $robotArray = RobotDataDB::getRobotDataBy('robotId', $robotAssoc->getRobotId());
             if (count($robotArray) > 0) {
                 array_push($userRobots, $robotArray[0]);
             }
         }
         $_SESSION['user'] = $user;
         $_SESSION['userData'] = $userData;
         $_SESSION['skillAssocs'] = $skillAssocs;
         $_SESSION['userRobots'] = $userRobots;
         $retVal = true;
     }
     return $retVal;
 }
 public static function show()
 {
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0;
     $user = $_SESSION['user'];
     if (!is_null($user)) {
         $_SESSION['user'] = $user;
         $userDataArray = UserDataDB::getUserDataBy('userId', $user->getUserId());
         $userData = $userDataArray[0];
         $_SESSION['userData'] = $userData;
         $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $userData->getUserDataId());
         $_SESSION['skillAssocs'] = $skillAssocs;
         // The robot data section might look something like this:
         //$robotDataArray = RobotDataDB::getRobotDataBy('creator', $user->getUserId());
         //$_SESSION['robotData'] = $robotDataArray;
         UserView::show();
     } else {
         HomeView::show();
     }
 }
 public static function show()
 {
     $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0;
     $userData = $_SESSION['userData'];
     if (!is_null($userData)) {
         $_SESSION['userData'] = $userData;
         $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $userData->getUserDataId());
         $skills = array();
         foreach ($skillAssocs as $skillAssoc) {
             $skillsArray = SkillsDB::getSkillsBy('skillId', $skillAssoc->getSkillId());
             $skill = $skillsArray[0];
             array_push($skills, $skill);
         }
         //$_SESSION['skillAssocs'] = $skillAssocs;
         $_SESSION['skills'] = $skills;
         UserDataView::show();
     } else {
         HomeView::show();
     }
 }
 public static function updateUserData($userData)
 {
     try {
         $db = Database::getDB();
         if (is_null($userData) || $userData->getErrorCount() > 0) {
             return $userData;
         }
         $checkUserData = UserDataDB::getUserDataBy('userDataId', $userData->getUserDataId());
         if (empty($checkUserData)) {
             $userData->setError('userDataId', 'USER_DATA_DOES_NOT_EXIST');
             return $userData;
         }
         if ($userData->getErrorCount() > 0) {
             return $userData;
         }
         $query = "UPDATE UserData SET userId = :userId, user_name = :user_name, \r\n\t\t\t\t\tskill_level = :skill_level, profile_pic = :profile_pic, \r\n\t\t\t\t\tstarted_hobby = :started_hobby, fav_color = :fav_color, url = :url,\r\n\t\t\t\t\tphone = :phone\r\n\t\t\t\t\tWHERE userDataId = :userDataId";
         $statement = $db->prepare($query);
         $statement->bindValue(":userId", $userData->getUserId());
         $statement->bindValue(":user_name", $userData->getUserName());
         $statement->bindValue(":skill_level", $userData->getSkillLevel());
         $statement->bindValue(":profile_pic", $userData->getProfilePic());
         $statement->bindValue(":started_hobby", $userData->getStartedHobby());
         $statement->bindValue(":fav_color", $userData->getFavColor());
         $statement->bindValue(":url", $userData->getUrl());
         $statement->bindValue(":phone", $userData->getPhone());
         $statement->bindValue(":userDataId", $userData->getUserDataId());
         $statement->execute();
         $statement->closeCursor();
         // Handle updates for the Skill Areas
         // 1 - Delete all existing skill associations for the user
         $deleteQuery = "DELETE from SkillAssocs WHERE userDataId = :userDataId";
         $statement = $db->prepare($deleteQuery);
         $statement->bindValue(":userDataId", $userData->getUserDataId());
         $statement->execute();
         $statement->closeCursor();
         // 2 - Add all of the new skill associations, if any
         $skillAreas = $userData->getSkillAreas();
         $userDataId = $userData->getUserDataId();
         foreach ($skillAreas as $skill_name) {
             // Translate the skill_name into a skillId first
             // skillIds start from 1, whereas array-indexing starts at 0;
             // so we add 1 to the index
             $skillId = array_search($skill_name, Skill::$SKILL_AREAS) + 1;
             $newSkillAssoc = new SkillAssocs($userDataId, $skillId);
             SkillAssocsDB::addSkillAssoc($newSkillAssoc);
         }
     } catch (Exception $e) {
         $userData->setError('userDataId', 'USER_DATA_COULD_NOT_BE_UPDATED');
     }
     return $userData;
 }
 public static function getSkillAssocsBy($type = null, $value = null)
 {
     $skillAssocsRows = SkillAssocsDB::getSkillAssocsRowsBy($type, $value);
     return SkillAssocsDB::getSkillAssocsArray($skillAssocsRows);
 }
 public function testInsertDuplicateSkillAssoc()
 {
     $myDB = DBMaker::create('botspacetest');
     Database::clearDB();
     $db = Database::getDB('botspacetest', 'C:\\xampp\\myConfig.ini');
     $beforeCount = count(SkillAssocsDB::getSkillAssocsBy());
     $skillAssocCopy = SkillAssocsDB::getSkillAssocsRowsBy('skillAssocId', 4);
     $skillAssocCopy = $skillAssocCopy[0];
     $s1 = new SkillAssocs($skillAssocCopy);
     $dupSkillAssoc = SkillAssocsDB::addSkillAssoc($s1);
     $afterCount = count(SkillAssocsDB::getSkillAssocsBy());
     $this->assertTrue(!empty($dupSkillAssoc->getError('skillAssocId')) && strcmp(Messages::getError('SKILL_ASSOC_INVALID'), $dupSkillAssoc->getError('skillAssocId')) == 0, 'It should have a skillAssocId error if the skill association is a duplicate');
     $this->assertEquals($afterCount, $beforeCount, 'There should be no additional skill associations entries after the insertion attempt');
 }