/**
  * Saves a user to the database
  * Or update an existing user
  *
  * @url POST /
  * @url PUT /$id
  */
 public function SaveUser($id = null, $data)
 {
     // Only process valid data
     if ($this->ValidateUser($data)) {
         // Format for update/insert query
         $dbData = array('firstName' => $data->FirstName, 'lastName' => $data->LastName, 'birthday' => $data->Birthday, 'gender' => $data->Gender, 'categoryId' => $data->Category->Id);
         // Update existing user?
         if ($id) {
             $this->Db()->where('id', $id);
             if ($this->Db()->update('Users', $dbData)) {
                 $user = new UserModel($id, $data->FirstName, $data->LastName, $data->Birthday, $data->Gender, $data->Category);
             } else {
                 throw new RestException(500, 'Update mislukt: ' . $this->Db()->getLastError());
             }
             // Add new user
         } else {
             $id = $this->Db()->insert('Users', $dbData);
             if ($id) {
                 $user = new UserModel($id, $data->FirstName, $data->LastName, $data->Birthday, $data->Gender, $data->Category);
             } else {
                 throw new RestException(500, 'Toevoegen mislukt: ' . $this->Db()->getLastError());
             }
         }
         return $user->toArray();
     }
 }
Example #2
0
 public function Execute()
 {
     $results = array();
     $users = $this->Db()->join('Categories c', 'c.id = u.categoryId', 'LEFT');
     // Use gender filter?
     if ($this->filters != null && isset($this->filters['Gender'])) {
         $users->where('u.gender', $this->filters['Gender']);
     }
     // Use category filter?
     if ($this->filters != null && isset($this->filters['Category'])) {
         $users->where('u.categoryId', $this->filters['Category']);
     }
     // Get all users
     $users = $users->get('Users u', null, 'u.id AS userId,
         u.firstName AS firstName,
         u.lastName AS lastName,
         u.birthday AS birthday,
         u.gender as gender,
         c.id AS categoryId,
         c.name AS categoryName');
     // Add all user object to array
     foreach ($users as $user) {
         // Set basic user/cat information
         $cat = new CategoryModel($user['categoryId'], $user['categoryName']);
         $user = new UserModel($user['userId'], $user['firstName'], $user['lastName'], $user['birthday'], $user['gender'], $cat);
         // Reset score
         $totalScore = 0;
         $userScores = array();
         // Get user's scores
         $scores = $this->Db()->join('Sections s', 's.id = r.sectionId', 'INNER');
         // Use section filter?
         if ($this->filters != null && isset($this->filters['Section'])) {
             $scores->where('s.id', $this->filters['Section']);
         }
         $scores = $scores->where('r.userId', $user->GetId())->orderBy('s.name', 'ASC')->get('Scores r', null, 'r.id AS id,
                 r.score AS score,
                 s.id AS sectionId,
                 s.name AS sectionName');
         // Process user's scores
         foreach ($scores as $score) {
             // Add to total score
             $totalScore = $totalScore + $score['score'];
             $sec = new SectionModel($score['sectionId'], $score['sectionName']);
             $sco = new ScoreModel($score['id'], $sec, $user, $score['score']);
             $userScores[] = $sco;
         }
         // Results model
         $res = new ResultsModel($user, $userScores, $totalScore);
         // Include results
         $results[] = $res->toArray();
     }
     return $results;
 }
Example #3
0
 public function Execute()
 {
     $result = $this->Db()->join('Categories c', 'c.id = u.categoryId', 'LEFT')->where('u.id', $this->userId)->orderBy('u.firstName', 'ASC')->orderBy('u.lastName', 'ASC')->getOne('Users u', 'u.id AS id,
             u.firstName AS firstName,
             u.lastName AS lastName,
             u.birthday AS birthday,
             u.gender as gender,
             c.id AS categoryId,
             c.name AS categoryName');
     // User found?
     if ($result == null) {
         throw new RestException(500, 'Deelnemer niet gevonden. ' . $this->Db()->getLastError());
     }
     $c = new CategoryModel($result['categoryId'], $result['categoryName']);
     $u = new UserModel($result['id'], $result['firstName'], $result['lastName'], $result['birthday'], $result['gender'], $c);
     return $u->toArray();
 }
Example #4
0
 public function Execute()
 {
     $results = $this->Db()->join('Categories c', 'c.id = u.categoryId', 'LEFT')->orderBy('u.firstName', 'ASC')->orderBy('u.lastName', 'ASC')->get('Users u', null, 'u.id AS id,
             u.firstName AS firstName,
             u.lastName AS lastName,
             u.birthday AS birthday,
             u.gender as gender,
             c.id AS categoryId,
             c.name AS categoryName');
     $users = array();
     // Add all user object to array
     foreach ($results as $i => $result) {
         $c = new CategoryModel($result['categoryId'], $result['categoryName']);
         $u = new UserModel($result['id'], $result['firstName'], $result['lastName'], $result['birthday'], $result['gender'], $c);
         $users[] = $u->toArray();
     }
     return $users;
 }