Ejemplo n.º 1
0
        public ActionResult Details(int?workoutId)
        {
            workout workout;

            if (workoutId == null)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Workout could not be retrieved with given parameters.")));
            }
            workout = db.workouts.Find(workoutId);
            if (workout == null)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.NotFound, "Could not find the specified workout.")));
            }
            //session is used in AddComment method
            Session["workout_id"] = workoutId;
            // Checks if workout is in Favorite list
            int userID = userAccess.getUserId(User.Identity.Name);
            user_favorite_workout fav_workout = db.user_favorite_workout
                                                .Where(m => m.workout_id == (int)workoutId &&
                                                       m.user_id == userID).FirstOrDefault();

            ViewBag.IsFavorite = (fav_workout == null) ? false : true;

            return(View(workout));
        }
Ejemplo n.º 2
0
        public void TestFavoriteWorkoutsControllerAddWorkoutToFavorites()
        {
            user_favorite_workout favWorkout = new user_favorite_workout();

            db.Setup(c => c.user_favorite_workout.Add(favWorkout)).Returns(favWorkout);
            RedirectToRouteResult result = controller.AddWorkoutToFavorites(1) as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("Index", result.RouteValues["action"], "action was not Index");
            Assert.AreEqual("FavoriteWorkouts", result.RouteValues["controller"], "controller was not FavoriteWorkouts");
        }
Ejemplo n.º 3
0
        public ActionResult Details(int?user_workout_id)
        {
            workout workout;

            if (user_workout_id == null)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Workout could not be retrieved with given parameters.")));
            }

            int          userId    = userAccess.getUserId(User.Identity.Name);
            user_workout myworkout = db.user_workout.Find(user_workout_id);

            if (myworkout == null)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.NotFound, "Your workout could not be found.")));
            }
            else
            {
                workout                       = myworkout.workout;
                ViewBag.myWorkoutId           = myworkout.id;
                ViewBag.numExercisesCompleted = myworkout.number_of_ex_completed;
                ViewBag.isMyWorkout           = true;

                ViewBag.timestampString = timestampByteArrToString(myworkout.timestamp);

                // Workout id is stored in session to be accessed from AddComment post method
                if (workout != null)
                {
                    Session["workout_id"] = workout.id;
                }
                // Checks if workout is in Favorite list
                int userID = userAccess.getUserId(User.Identity.Name);
                user_favorite_workout fav_workout = db.user_favorite_workout
                                                    .Where(m => m.workout_id == (int)workout.id &&
                                                           m.user_id == userID).FirstOrDefault();
                ViewBag.IsFavorite = (fav_workout == null) ? false : true;

                //counts how many users marked workout as Favorite
                ViewBag.FavoritesCount = db.user_favorite_workout.Where(m => m.workout_id.Equals((int)workout.id)).Count();

                var workout_rating = db.workout_rating.Where(m => m.workout_id == workout.id).FirstOrDefault();
                if (workout_rating != null)
                {
                    ViewBag.average_rating = workout_rating.average_rating;
                }
                else
                {
                    ViewBag.average_rating = null;
                }
                return(View(workout));
            }
        }
Ejemplo n.º 4
0
        /*
         * /// <summary>
         * /// Tests RemoveWorkoutFromFavorites method of FavoriteWorkouts controller
         * /// </summary>
         * [TestMethod]
         * public void TestFavoriteWorkoutsControllerRemoveWorkoutFromFavorites()
         * {
         *  user_favorite_workout favWorkout = new user_favorite_workout();
         *  favWorkout.id = 1;
         *  favWorkout.user = new user
         *  {
         *      id = 2
         *  };
         *  favWorkout.workout = new workout()
         *  {
         *      id = 1
         *  };
         *  byte[] timestamp = new byte[8];
         *  for (var i = 0; i < timestamp.Length; i++)
         *  {
         *      timestamp[i] = 0;
         *  }
         *  favWorkout.timestamp = timestamp;
         *  //db.Setup(c => c.user_favorite_workout.Find(favWorkout.id)).Returns(favWorkout);
         *  db.Setup(c => c.user_favorite_workout.Remove(favWorkout)).Returns(favWorkout);
         *  RedirectToRouteResult result = controller.RemoveWorkoutFromFavorites(1) as RedirectToRouteResult;
         *  Assert.IsNotNull(result);
         *  Assert.AreEqual("Index", result.RouteValues["action"], "action was not Index");
         *  Assert.AreEqual("FavoriteWorkouts", result.RouteValues["controller"], "controller was not FavoriteWorkouts");
         * }
         */

        /* Private Test Helpers */

        /// <summary>
        /// Helper method to determin if my workouts list is sorted in a certain order on a certain property
        /// </summary>
        /// <param name="workouts">The workout list to check</param>
        /// <param name="propName">The workout property that the list should be sorted by</param>
        /// <param name="order">One of "asc" or "desc". Tells the method to check if the list is in ascending or descending order</param>
        /// <returns>True if the list is sorted on the given property in the given order, false otherwise</returns>
        private bool isSorted(PagedList <user_favorite_workout> workouts, string propName, string order)
        {
            int limit = (workouts.Count > 10) ? 11 : workouts.Count;

            for (int i = 1; i < limit; i++)
            {
                user_favorite_workout currentWorkout = workouts[i];
                user_favorite_workout prevWorkout    = workouts[i - 1];
                int?res = null;
                if (propName == "name")
                {
                    res = String.Compare(prevWorkout.workout.name, currentWorkout.workout.name);
                }
                else if (propName == "category")
                {
                    res = String.Compare(prevWorkout.workout.category.name, currentWorkout.workout.category.name);
                }
                else if (propName == "dateCreated")
                {
                    res = DateTime.Compare(prevWorkout.workout.created_at, currentWorkout.workout.created_at);
                }
                else if (propName == "username")
                {
                    res = String.Compare(prevWorkout.workout.user.username, currentWorkout.workout.user.username);
                }
                else
                {
                    return(false);
                }

                if (order == "asc")
                {
                    if (res > 0)
                    {
                        return(false);
                    }
                }
                else if (order == "desc")
                {
                    if (res < 0)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 5
0
        private List <user_favorite_workout> getSeedUserFavWorkouts()
        {
            var users    = getSeedUsers();
            var workouts = getSeedWorkouts();
            user_favorite_workout fav1 = new user_favorite_workout
            {
                id         = 1,
                user_id    = 3,
                user       = users[1],
                workout    = workouts[0],
                workout_id = 1,
                timestamp  = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }
            };
            user_favorite_workout fav2 = new user_favorite_workout
            {
                id         = 2,
                user_id    = 3,
                user       = users[1],
                workout    = workouts[1],
                workout_id = 2,
                timestamp  = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }
            };
            user_favorite_workout fav3 = new user_favorite_workout
            {
                id         = 3,
                user_id    = 3,
                user       = users[1],
                workout    = workouts[10],
                workout_id = 11,
                timestamp  = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }
            };
            user_favorite_workout fav4 = new user_favorite_workout
            {
                id         = 4,
                user_id    = 3,
                user       = users[1],
                workout    = workouts[11],
                workout_id = 12,
                timestamp  = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }
            };
            var userFavs = new List <user_favorite_workout> {
                fav1, fav2, fav3, fav4
            };

            return(userFavs);
        }
        public ActionResult AddWorkoutToFavorites(int?workout_id)
        {
            if (workout_id == null)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No workout id was specified.")));
            }

            int userID = userAccess.getUserId(User.Identity.Name);

            if (userID == -1)
            {
                return(View());
            }

            user_favorite_workout fav_workout = new user_favorite_workout();

            fav_workout.user_id    = userID;
            fav_workout.workout_id = (int)workout_id;

            if (ModelState.IsValid)
            {
                try
                {
                    db.user_favorite_workout.Add(fav_workout);
                    db.SaveChanges();
                    if (this.Request.UrlReferrer != null)
                    {
                        string url = this.Request.UrlReferrer.PathAndQuery;
                        return(Redirect(url));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "FavoriteWorkouts"));
                    }
                }
                catch (Exception ex)
                {
                    return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to add the requested workout to favorites.")));
                }
            }
            else
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Failed to add the requested workout to favorites.")));
            }
        }
        public ActionResult RemoveWorkoutFromFavorites(int?workout_id)
        {
            if (workout_id == null)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No workout id was specified.")));
            }

            int userID = userAccess.getUserId(User.Identity.Name);

            if (userID == -1)
            {
                return(View());
            }

            try
            {
                user_favorite_workout favWorkout = db.user_favorite_workout.Where(m => m.workout_id == (int)workout_id &&
                                                                                  m.user_id == userID).FirstOrDefault();
                if (favWorkout == null)
                {
                    return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "The workout is not in Favorite list")));
                }
                db.user_favorite_workout.Remove(favWorkout);
                db.SaveChanges();
                if (this.Request.UrlReferrer != null)
                {
                    string url = this.Request.UrlReferrer.PathAndQuery;
                    return(Redirect(url));
                }
                else
                {
                    return(RedirectToAction("Index", "FavoriteWorkouts"));
                }
            }
            catch (Exception ex)
            {
                return(View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to delete the requested workout from favorites.")));
            }
        }