public static function create_token(Token $clientid, Token $userid, $tokenType, $expires)
 {
     $token = Token::generateToken($tokenType, $userid->getUserSecret());
     $query = Database::generate_query("token_create", [$token->toString(), $userid->toString(), $clientid->toString(), $expires]);
     $query->execute();
     return $token;
 }
 public static function fetch_assignment_profile(Token $token)
 {
     $query = Database::generate_query("assignment_lookup_id", [$token->toString()]);
     $result = $query->execute();
     $row = $result->fetch_data();
     return ["assignment-id" => $token->toString(), "assessment-id" => Token::decode($row['assessment_id']), "deadline" => $row['assignment_deadline']];
 }
 public static function delete_question(AssessmentProfile $profile, Token $id)
 {
     $query = Database::generate_query("assessment_question_delete", [$profile->getAssessmentId()->toString(), $id->toString()]);
     $query->execute();
 }
 public static function check_group_permission(GroupProfile $profile, $permission)
 {
     $query = Database::generate_query("group_permission_check", [$profile->getGroupId()->toString(), $permission]);
     $result = $query->execute();
     $count = $result->count();
     $result->close();
     return $count >= 1;
 }
 public static function fetch_user_scores(UserProfile $user, array $assignment)
 {
     $query = Database::generate_query("user_assignment_score", [$user->getUserId()->toString(), $assignment["assignment-id"]]);
     $result = $query->execute();
     $row = $result->fetch_data();
     if ($row['score_id'] == null) {
         return null;
     }
     $data = ["completed" => $row['date_completed'], "score" => $row['score']];
     $query = Database::generate_query("user_assignment_question_scores", [$user->getUserId()->toString(), $assignment["assignment-id"], $row['score_id']]);
     $result = $query->execute();
     $i = 1;
     while ($row = $result->fetch_data()) {
         $data["questions"]["" . $i++] = $row['score'];
     }
     return $data;
 }