Example #1
0
 /**
  * Executes a request.
  *
  * @param request Request to execute.
  *
  * @return Response Response to send.
  */
 public function execute(Request $request)
 {
     try {
         $segments = $request->getPathSegments();
         if (count($segments) > 0) {
             $firstSegment = $segments[0];
             if (array_key_exists($firstSegment, $this->controllers)) {
                 $controller = $this->controllers[$firstSegment];
                 $controllerRequest = $request->consume();
                 $resource = $controller->getResource($controllerRequest);
                 if (isset($resource)) {
                     $verb = $request->getVerb();
                     if (method_exists($resource, $verb)) {
                         return $resource->{$verb}($controllerRequest);
                     } else {
                         return Response::notSupported();
                     }
                 }
             }
         }
         return Response::notFound();
     } catch (\Exception $e) {
         return Response::error($e->getMessage());
     }
 }
 public static function processSort()
 {
     $sort = Input::get('sort') ? Input::get('sort') : 'created_at';
     $sortType = Input::get('sortType') === 'asc' ? 'asc' : 'desc';
     if (!in_array($sort, self::$sortableFields)) {
         Response::notFound();
     }
     View::share(array('sort' => $sort, 'sortType' => $sortType));
     return array('sort' => $sort, 'sortType' => $sortType);
 }
 public function viewPage($urlString)
 {
     try {
         $page = Page::where('urlString', $urlString)->first();
         if (!$page) {
             return Response::notFound();
         }
         $page = Page::decodePageJson($page);
         return View::make('pages/viewPage')->with(array('page' => $page, 'currentPage' => 'viewPage', 'ogImage' => $page['ogData']['ogImage'], 'ogTitle' => $page['ogData']['ogTitle'], 'title' => $page['title'] ? $page['title'] : '', 'ogDescription' => $page['ogData']['ogDescription'], 'description' => $page['description'] ? $page['description'] : ''));
     } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
         return Response::notFound('Quiz not found');
     }
 }
 public static function processSort()
 {
     $sort = Input::get('sort') ? Input::get('sort') : 'created_at';
     $sortType = Input::get('sortType') === 'asc' ? 'asc' : 'desc';
     if (!in_array($sort, self::$sortableFields)) {
         Response::notFound();
     }
     View::share(array('sort' => $sort, 'sortType' => $sortType));
     if ($sort == 'shareRate') {
         $sort = DB::raw('quiz_stats.shares/quiz_stats.attempts');
     }
     return array('sort' => $sort, 'sortType' => $sortType);
 }
 public function not_found()
 {
     $r = Response::notFound();
     $this->assertEquals(404, $r->status);
 }
 public function saveUserAnswer($nameString, $quizId = null)
 {
     try {
         $quiz = Quiz::findOrFail($quizId);
         $user = Auth::user();
         $questionId = Input::get('questionId');
         $choiceId = Input::get('choiceId');
         if (!$user) {
             return Response::json(array('error' => 'Not logged in'), 400);
         }
         $quizUserAnswer = QuizUserAnswers::firstOrNew(array('user_id' => $user->id, 'quiz_id' => $quiz->id, 'question_id' => $questionId, 'answer_id' => $choiceId));
         $quizUserAnswer->save();
         return Response::json(array('message' => 'Activity recorded'));
     } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
         return Response::notFound('Quiz not found');
     } catch (Exception $e) {
         return Response::notFound($e->getMessage());
     }
 }
 public function quizUsers()
 {
     try {
         $sortOptions = self::processSort();
         $activityType = Input::get('activityType');
         $quizId = Input::get('quizId');
         $users = null;
         if ($quizId) {
             $quiz = Quiz::findOrFail($quizId);
             $quizStats = $quiz->stats;
             $quizResultsDistribution = array();
             $quizResultsDistribution = $quiz->resultDistribution();
             if ($activityType) {
                 $activityOptions = array();
                 if ($activityType == 'got-result') {
                     $activityOptions = array('resultId' => Input::get('resultId'));
                 } else {
                     if ($activityType == 'chosen-answer') {
                         $activityOptions = array('questionId' => Input::get('questionId'), 'answerId' => Input::get('answerId'));
                     }
                 }
                 $usersQuery = self::getUsersQueryByActivity($quiz, $activityType, $activityOptions);
                 $usersQuery = $usersQuery->orderBy($sortOptions['sort'], $sortOptions['sortType']);
                 if (Input::get('download')) {
                     return self::downloadEmails($usersQuery);
                 }
                 $users = $usersQuery->paginate(self::$perPage);
                 //dd(DB::getQueryLog());
                 //dd($users->toArray());
                 self::addSerialNumbers($users);
             }
             $results = $quiz->results;
             $questions = $quiz->questions;
             $quizShareRate = $quizLikeRate = 0;
             if ($quizStats && !empty($quizStats->attempts)) {
                 $quizShareRate = number_format($quizStats->shares / $quizStats->attempts * 100, 2);
                 $quizLikeRate = number_format($quizStats->likes / $quizStats->attempts * 100, 2);
             }
             $last30DaysAttempts = AdminController::getLastNDaysActivity(30, 'attempt', $quiz);
             View::share(array('users' => $users, 'quizId' => $quizId, 'quiz' => $quiz, 'quizResults' => $results, 'quizQuestions' => $questions, 'quizStats' => $quizStats, 'quizShareRate' => $quizShareRate, 'quizLikeRate' => $quizLikeRate, 'last30DaysAttempts' => json_encode($last30DaysAttempts), 'quizResultsDistribution' => $quizResultsDistribution));
         } else {
         }
         View::share(array('activityType' => $activityType, 'resultId' => Input::get('resultId'), 'questionId' => Input::get('questionId'), 'answerId' => Input::get('answerId')));
         QuizController::_loadQuizes();
         return View::make('admin/users/quizUsers')->with(array('currentPage' => 'quizUsers'));
     } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
         return Response::notFound('Quiz not found');
     } catch (Exception $e) {
         return Response::make($e->getMessage(), 400);
     }
 }
 public function profile($userId, $nameString)
 {
     $me = Auth::user();
     try {
         $user = User::findOrFail($userId);
         View::share(self::getProfileOgData($user));
         $listsQuery = $user->lists();
         //If not logged in or if the profile is not of the logged in user, show approved lists only
         if (!$me || $me->id != $userId) {
             $listsQuery = $listsQuery->approved();
         }
         return View::make('users.profile')->with(['user' => $user, 'lists' => $listsQuery->latest()->simplePaginate(ListController::getPerPageLimit()), 'listsCount' => $user->lists()->count(), 'showListItemStatus' => true]);
     } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
         return Response::notFound();
     }
 }
 public function viewListsOfTag($tagSlug)
 {
     $matchingTag = Conner\Tagging\Tag::where('slug', $tagSlug)->get();
     if (!$matchingTag->count()) {
         return Response::notFound();
     }
     $matchingTag = $matchingTag[0];
     return $this->index(['stream' => 'ofTag', 'ofTag' => $matchingTag->name]);
 }