public ActionResult Summary(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            _unitOfWork.Plans.IncrementPlanViews(id.Value);
            _unitOfWork.Complete();

            var plan = _unitOfWork.Plans.GetPlan(id.Value);

            IEnumerable <Workout> workouts = _unitOfWork.Workouts.GetWorkouts(id.Value);

            foreach (Workout w in workouts)
            {
                w.Exercises = _unitOfWork.Exercises.GetExercises(w.Id);
            }

            var viewModel = new PlansFormViewModel
            {
                Name          = plan.Name,
                PlanId        = id.Value,
                LengthInWeeks = plan.LengthInWeeks,
                CreatedOn     = plan.DateCreated.ToShortDateString(),
                Rating        = _unitOfWork.Ratings.GetRatingAverage(id.Value),
                RatingCount   = _unitOfWork.Ratings.GetRatingCount(id.Value),
                Favourites    = _unitOfWork.Favourites.GetNumberOfFavourites(id.Value),
                Views         = plan.Views,
                Workouts      = workouts,
                CanEdit       = (User.Identity.GetUserId() == plan.UserId)
            };

            return(View("Summary", viewModel));
        }
        public ActionResult Create()
        {
            var viewModel = new PlansFormViewModel
            {
                Heading = "Add a Plan"
            };

            return(View("PlanForm", viewModel));
        }
        public ActionResult Edit(int id)
        {
            var userId = User.Identity.GetUserId();
            var plan   = _unitOfWork.Plans.GetUserPlan(id, userId);

            var viewModel = new PlansFormViewModel
            {
                Id            = plan.Id,
                Name          = plan.Name,
                LengthInWeeks = plan.LengthInWeeks,
                Heading       = "Edit Plan"
            };

            return(View("PlanForm", viewModel));
        }
        public ActionResult Update(PlansFormViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("PlanForm", viewModel));
            }

            var userId = User.Identity.GetUserId();
            var plan   = _unitOfWork.Plans.GetUserPlan(viewModel.Id, userId);

            plan.Name = viewModel.Name;

            _unitOfWork.Complete();

            return(RedirectToAction("Mine", "Plans"));
        }
        public ActionResult Create(PlansFormViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("PlanForm", viewModel));
            }

            var plan = new Plan
            {
                UserId        = User.Identity.GetUserId(),
                Name          = viewModel.Name,
                LengthInWeeks = viewModel.LengthInWeeks,
                DateCreated   = DateTime.UtcNow,
                Workouts      = viewModel.Workouts,
                Rating        = 0,
                RatingCount   = 0
            };

            _unitOfWork.Plans.Add(plan);
            _unitOfWork.Complete();

            return(RedirectToAction("Mine"));
        }