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)); }
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"); }
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)); } }
/* * /// <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); }
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."))); } }