/**
  * Responds to requests to POST /high-scores
  *
  * @param $request request object
  */
 public function postIndex(Request $request)
 {
     // store form data
     $puzzle_title = $request->puzzle;
     $sort_criteria = $request->criteria;
     // get list of created puzzles
     $puzzles = \App\Puzzle::where("created", "=", "1")->get();
     // get selected puzzle and its id
     $puzzle = $puzzles->where("title", $puzzle_title)->first();
     $puzzle_id = $puzzle["id"];
     // get high scores based on form data
     $gamesessions = \App\Gamesession::with("puzzle")->orderBy($sort_criteria, "ASC")->where("puzzle_id", "=", $puzzle_id)->take(20)->get();
     $headers = [];
     // set up table headers based on form data
     if ($sort_criteria == "total_time") {
         $headers = ["Time", "Moves"];
     } else {
         $headers = ["Moves", "Time"];
     }
     // get selected list of puzzles
     $puzzle_titles = $this->returnTitles($puzzles);
     // beginning rank must be 0 for index reasons in view
     $ranking = 0;
     //return "Profile controller -- by POST!";
     return view("scores.index")->with(["gamesessions" => $gamesessions, "ranking" => $ranking, "usernames" => $this->returnUsernames($gamesessions), "puzzle_titles" => $puzzle_titles, "headers" => $headers, "data" => $this->returnDropdownData($request)]);
 }
 /**
  * Responds to requests to POST /stats
  *
  * @param $request request object
  */
 public function postIndex(Request $request)
 {
     // get the current user
     $user = Auth::user();
     // get list of created puzzles
     $puzzles = \App\Puzzle::where("created", "=", "1")->get();
     // either sort or delete the data
     if ($request->input("sort")) {
         // get all gamesessions for this user
         $gamesessions = \App\Gamesession::with("puzzle")->where("user_id", "=", $user->id)->get();
         // store at a glance stats
         $glance_stats = array("puzzles_solved" => count($gamesessions), "min_time" => $gamesessions->min("total_time"), "min_moves" => $gamesessions->min("moves"));
         // store form data
         $puzzle_title = $request->puzzle;
         $sort_criteria = $request->criteria;
         // get selected puzzle and its id
         $puzzle = $puzzles->where("title", $puzzle_title)->first();
         $puzzle_id = $puzzle["id"];
         $stats;
         // sort based on form specifications
         if ($request->criteria == "first") {
             $stats = \App\Gamesession::with("puzzle")->orderBy("id", "ASC")->where("puzzle_id", "=", $puzzle_id)->where("user_id", "=", $user->id)->get();
         } elseif ($request->criteria == "last") {
             $stats = \App\Gamesession::with("puzzle")->orderBy("id", "DESC")->where("puzzle_id", "=", $puzzle_id)->where("user_id", "=", $user->id)->get();
         } elseif ($request->criteria == "fast") {
             $stats = \App\Gamesession::with("puzzle")->orderBy("total_time", "ASC")->where("puzzle_id", "=", $puzzle_id)->where("user_id", "=", $user->id)->get();
         } elseif ($request->criteria == "slow") {
             $stats = \App\Gamesession::with("puzzle")->orderBy("total_time", "DESC")->where("puzzle_id", "=", $puzzle_id)->where("user_id", "=", $user->id)->get();
         } elseif ($request->criteria == "least") {
             $stats = \App\Gamesession::with("puzzle")->orderBy("moves", "ASC")->where("puzzle_id", "=", $puzzle_id)->where("user_id", "=", $user->id)->get();
         } elseif ($request->criteria == "most") {
             $stats = \App\Gamesession::with("puzzle")->orderBy("moves", "DESC")->where("puzzle_id", "=", $puzzle_id)->where("user_id", "=", $user->id)->get();
         }
         return view("stats.index")->with(['stats' => $stats, 'user' => $user, 'puzzle_titles' => $this->returnTitles($puzzles), 'data' => $this->returnDropdownData($request), 'glance_stats' => $glance_stats, 'delete_data' => $this->returnDeleteData($request)]);
     } else {
         if ($request->input("delete")) {
             // store form data
             $puzzle_title = $request->delete_stats;
             // get selected puzzle and its id
             $puzzle = $puzzles->where("title", $puzzle_title)->first();
             $puzzle_id = $puzzle["id"];
             // delete stats from pivot table
             $user->gamesessions()->where("puzzle_id", "=", $puzzle_id)->detach();
             // get stats from gamesessions table
             $stats = \App\Gamesession::where("user_id", "=", $user->id)->where("puzzle_id", "=", $puzzle_id)->get();
             // delete stats from gamesessions table
             foreach ($stats as $stat) {
                 $stat->delete();
             }
             // get all gamesessions for this user
             $gamesessions = \App\Gamesession::with("puzzle")->where("user_id", "=", $user->id)->get();
             // store at a glance stats
             $glance_stats = array("puzzles_solved" => count($gamesessions), "min_time" => $gamesessions->min("total_time"), "min_moves" => $gamesessions->min("moves"));
             return view("stats.index")->with(['user' => $user, 'puzzle_titles' => $this->returnTitles($puzzles), 'data' => $this->returnDropdownData($request), 'glance_stats' => $glance_stats, 'delete_data' => $this->returnDeleteData($request), 'delete_message' => "Your stats for " . $puzzle["title"] . " were deleted."]);
         }
     }
 }