/**
  * @Authorize
  * @Route("my-schedule")
  */
 public function mySchedule()
 {
     //echo "vlezna";
     $userId = $this->httpContext->getLoggedUser()->getId();
     $myLectures = Database::getUserLectures($userId);
     //        $viewModels = [];
     //
     //        foreach ($myLectures as $myLecture) {
     //            $viewModel = new LectureViewModel();
     //            $viewModel->setLecture($myLecture['Lecture']);
     //            $viewModel->setEndtime($myLecture['EndTime']);
     //            $viewModel->setStarttime($myLecture['StartTime']);
     //            $viewModel->setHall($myLecture['Hall']);
     //            $viewModel->setSpeker($myLecture['Speaker']);
     //            $viewModels[] = $viewModel;
     //        }
     var_dump($myLectures);
     //        return View('lecture', $viewModels);
 }
 public static function isValid(string $property, HttpContext $httpContext) : bool
 {
     //var_dump($httpContext);
     //echo "<br/>logged User:</br>";
     //var_dump($httpContext->getLoggedUser());
     $loggedUser = $httpContext->getLoggedUser();
     if ($loggedUser != null) {
         $loggedUserId = $httpContext->getLoggedUser()->getId();
         if ($loggedUserId != null) {
             if (preg_match("#Roles=['\"](.*?)['\"]#", $property, $match)) {
                 $roles = explode(",", strtolower($match[1]));
                 //var_dump($roles);
                 $dbRoles = Database::getUserRoles($loggedUserId);
                 //var_dump($dbRoles);
                 //die;
                 foreach ($dbRoles as $dbRole) {
                     $del_val = strtolower($dbRole);
                     // remove from roles if the role is available in the db
                     if (($key = array_search($del_val, $roles)) !== false) {
                         unset($roles[$key]);
                     }
                 }
                 //var_dump($roles);
                 // if all roles are founded the $roles will be empty
                 if (count($roles) == 0) {
                     return true;
                 }
                 return false;
             } else {
                 if ($property == 'Authorize') {
                     return true;
                 }
             }
             return false;
         }
     }
     return false;
 }
 public static function addRoleToUser(int $userId, int $roleId)
 {
     $db = Database::getInstance('app');
     $result = $db->prepare("\r\n            insert into user_roles values(:userId, :roleId);\r\n        ");
     $result->execute([':userId' => $userId, ':roleId' => $roleId]);
 }
 /**
  * @Route("register")
  * @POST
  */
 public function register(UserBindingModel $model)
 {
     try {
         $isOkCSRF = $this->checkCSRF();
         if (!$isOkCSRF) {
             throw new \Exception("Invalid Request!");
         }
         $errorMsgs = '';
         if ($model->getUsername() == null) {
             $errorMsgs = "Missing username. ";
         }
         $username = $model->getUsername();
         if ($model->getPassword() == null) {
             $errorMsgs .= "Missing password. ";
         }
         $password = $model->getPassword();
         if ($model->getConfirm() == null) {
             $errorMsgs .= "Missing confirm password. ";
         }
         $confirm = $model->getConfirm();
         if ($password !== $confirm) {
             $errorMsgs .= "Password and Confirm password are different. ";
         }
         $dbUserModel = $this->dbContext->getIdentityUsersRepository()->filterByUsername($username)->findOne();
         if ($dbUserModel == null) {
             if (strlen($password) >= 4) {
                 $userClassName = UserConfig::UserIdentityClassName;
                 $userModel = new $userClassName($username, password_hash($password, PASSWORD_DEFAULT));
             } else {
                 $errorMsgs .= "The password should be at least 4 characters. ";
             }
         } else {
             $errorMsgs .= "User with this username already exist! ";
         }
         if ($errorMsgs != '') {
             throw new \Exception($errorMsgs);
         }
         $this->dbContext->getIdentityUsersRepository()->add($userModel);
         $this->dbContext->getIdentityUsersRepository()->save();
         $userId = $this->dbContext->getIdentityUsersRepository()->filterByUsername($username)->findOne()->getId();
         $roleId = 1;
         Database::addRoleToUser($userId, $roleId);
         $this->initLogin($username, $password);
     } catch (\Exception $e) {
         $message = $e->getMessage();
         $this->httpContext->getSession()->error = $message;
         return new View($model);
     }
     return new View();
 }
 private static function insert(Lecture $model)
 {
     $db = Database::getInstance('app');
     $query = "INSERT INTO lectures (id,speakerid,hallid,name,startdatatime,enddatatime)\r\n                    VALUES (':id', ':speakerid', ':hallid', ':name', ':startdatatime', ':enddatatime')";
     $result = $db->prepare($query);
     $result->execute([':id' => $model->getId(), ':speakerid' => $model->getSpeakerId(), ':hallid' => $model->getHallId(), ':name' => $model->getName(), ':startdatatime' => $model->getStartDateTime(), ':enddatatime' => $model->getEndDateTime()]);
     $model->setId((int) $db->lastId());
 }
 private static function insert(Hall $model)
 {
     $db = Database::getInstance('app');
     $query = "INSERT INTO halls (id,name,venueid,userlimit)\r\n                    VALUES (':id', ':name', ':venueid','userlimit')";
     $result = $db->prepare($query);
     $result->execute([':id' => $model->getId(), ':name' => $model->getName(), ':venueid' => $model->getVenueId(), ':userlimit' => $model->getUserLimit()]);
     $model->setId((int) $db->lastId());
 }
 private static function insert(Venue $model)
 {
     $db = Database::getInstance('app');
     $query = "INSERT INTO venues (id,name,address)\r\n                    VALUES (':id', ':name', ':address')";
     $result = $db->prepare($query);
     $result->execute([':id' => $model->getId(), ':name' => $model->getName(), ':address' => $model->getAddress()]);
     $model->setId((int) $db->lastId());
 }
 private function checkBuildDb()
 {
     if (\SoftUni\Config\ApplicationRunConfig::BuildDB) {
         Database::updateModelTable('\\SoftUni\\Models\\Conference');
         Database::updateModelTable('\\SoftUni\\Models\\Venue');
         Database::updateModelTable('\\SoftUni\\Models\\Hall');
         Database::updateModelTable('\\SoftUni\\Models\\Lecture');
         Database::updateManyToManyTable('user_lectures', 'user_id', 'lecture_id');
     }
 }
 private static function insert(Conference $model)
 {
     $db = Database::getInstance('app');
     $query = "INSERT INTO conferences (ownerid,administratorid,venueid,name,startdatatime,enddatatime)\r\n                    VALUES (':ownerid', ':administratorid', ':venueid', ':name', ':startdatatime', ':enddatatime')";
     $result = $db->prepare($query);
     $result->execute([':ownerid' => $model->getOwnerId(), ':administratorid' => $model->getAdministratorId(), ':id' => $model->getId(), ':venueid' => $model->getVenueId(), ':name' => $model->getName(), ':startdatatime' => $model->getStartDateTime(), ':enddatatime' => $model->getEndDateTime()]);
     $model->setId((int) $db->lastId());
 }
 private static function insert(IdentityUser $model)
 {
     $db = Database::getInstance('app');
     $query = "INSERT INTO users (username,password) VALUES ('" . $model->getUsername() . "', '" . $model->getPassword() . "')";
     $result = $db->prepare($query);
     $result->execute([]);
     $model->setId((int) $db->lastId());
 }