/** * Show information regarding yearly running goal. * * @param Request $request * @return Response */ public function goals(Request $request) { if (isset($request->goal)) { $request->user()->yearly_running_goal = $request->goal; $request->user()->save(); } $goal = $request->user()->yearly_running_goal; // do the standard metric goal conversion if (Auth::user()->measurement_preference == 'feet') { $goal = $goal * 1609; // convert to miles } else { $goal = $goal * 1000; } $last_year = date('Y-12-31', strtotime('-1 year')); $miles_to_date = 0; $time_to_date = 0; $week_of_year = date('W'); $weeks_left = 52 - $week_of_year; $runs = Activity::where('user_id', $request->user()->id)->where('start_date_local', '>', $last_year)->where('type', 'Run')->orderBy('start_date_local', 'asc')->get(); foreach ($runs as $run) { $miles_to_date += $run->distance; $time_to_date += $run->moving_time; } // check to see if the goal has been met if ($miles_to_date >= $goal) { $miles_to_go = Activity::formatDistance(0); $weekly_goal = Activity::formatDistance(0); } else { $miles_to_go = Activity::formatDistance($goal - $miles_to_date); $weekly_goal = Activity::formatDistance(($goal - $miles_to_date) / $weeks_left); } return view('strava.goals', ['yearly_running_goal' => $request->user()->yearly_running_goal, 'week_of_year' => $week_of_year, 'miles_to_date' => $miles_to_date, 'time_to_date' => Activity::formatTime($time_to_date)]); }