コード例 #1
0
        public ActionResult AddToMyWorkouts(user_workout userWorkout)
        {
            int userID = userAccess.getUserId(User.Identity.Name);
            if (userID == -1)
            {
                return View();
            }
            userWorkout.user_id = userID;
            userWorkout.number_of_ex_completed = 0;

            if (ModelState.IsValid)
            {
                try
                {
                    db.user_workout.Add(userWorkout);
                    db.SaveChanges();
                    return RedirectToAction("Details", "MyWorkouts", new { user_workout_id = userWorkout.id });
                }
                catch (Exception ex)
                {
                    return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to add the requested workout to user workouts."));
                }
            }
            else
            {
                return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Failed to add the requested workout to user workouts due to an invalid entry."));
            }
        }
コード例 #2
0
        public void Initialize()
        {
            DbContextHelpers contextHelpers = new DbContextHelpers();

            db = contextHelpers.getDbContext();
            search = new WorkoutSearch();
            myWorkoutsCon = new MyWorkoutsController(db.Object)
            {
                ControllerContext = MockContext.AuthenticationContext("jjones")
            };
            myWorkoutsCon.pageSize = 10;

            ts = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
            uWorkout = new user_workout()
            {
                id = 1,
                number_of_ex_completed = 0,
                workout_id = 1,
                user_id = 2,
                timestamp = ts,
                workout = new workout()
                {
                    workout_exercise = new List<workout_exercise>
                    {
                        {new workout_exercise()},
                        {new workout_exercise()},
                        {new workout_exercise()},
                        {new workout_exercise()},
                    }
                }
            };
        }
コード例 #3
0
 public void TestAddWorkoutToMyWorkouts()
 {
     user_workout userWorkout = new user_workout();
     userWorkout.workout_id = 1;
     db.Setup(c => c.user_workout.Add(userWorkout)).Returns(userWorkout);
     RedirectToRouteResult result = myWorkoutsCon.AddToMyWorkouts(userWorkout) as RedirectToRouteResult;
     Assert.IsNotNull(result);
     Assert.AreEqual(0, result.RouteValues["user_workout_id"], "workoutId was not 1");
     Assert.AreEqual("Details", result.RouteValues["action"], "action was not Controller");
     Assert.AreEqual("MyWorkouts", result.RouteValues["controller"], "controller was not Home");
 }
コード例 #4
0
        public ActionResult MarkExercise(int my_workout_id, int position, string timestampString)
        {
            byte[] timestamp = timestampStringToByteArr(timestampString);
            user_workout userWorkout = new user_workout();
            userWorkout.id = my_workout_id;
            userWorkout.timestamp = timestamp;

            user_workout oldMyWorkout = db.user_workout.Find(my_workout_id);
            if (oldMyWorkout == null)
            {
                var result = new Dictionary<string, string>();
                result.Add("error", "true");
                result.Add("position", Convert.ToString(position));
                result.Add("message", "Failed to mark progress as the workout does not exist or may have been deleted");
                result.Add("code", "500");
                return Json(result);
            }
            try
            {
                var entry = db.Entry(oldMyWorkout);
                var state = entry.State;

                int totalNumExercises = oldMyWorkout.workout.workout_exercise.Count;
                if (position == 1 || oldMyWorkout.date_started == null)
                {
                    userWorkout.date_started = DateTime.Now;
                    if (position == totalNumExercises)
                    {
                        userWorkout.date_finished = DateTime.Now;
                    }
                }
                else if (position == totalNumExercises)
                {
                    userWorkout.date_finished = DateTime.Now;
                }
                userWorkout.number_of_ex_completed = position;

                if (state == EntityState.Detached)
                {
                    db.Entry(userWorkout).State = EntityState.Modified;
                }
                else
                {
                    entry.OriginalValues["timestamp"] = userWorkout.timestamp;
                    if (userWorkout.date_started != null) entry.CurrentValues["date_started"] = userWorkout.date_started;
                    if (userWorkout.date_finished != null) entry.CurrentValues["date_finished"] = userWorkout.date_finished;
                    entry.CurrentValues["number_of_ex_completed"] = userWorkout.number_of_ex_completed;
                }
                db.SaveChanges();

                user_workout updatedMyWorkout = db.user_workout.Find(my_workout_id);
                string newTimestamp = timestampByteArrToString(updatedMyWorkout.timestamp);
                var result = new Dictionary<string, string>();
                result.Add("success", "true");
                result.Add("timestampString", newTimestamp);
                result.Add("error", "false");
                var isCompleted = (userWorkout.date_finished != null) ? "true" : "false";
                result.Add("isCompleted", isCompleted);
                return Json(result);
            }
            catch (DbUpdateConcurrencyException ex)
            {
                var result = new Dictionary<string, string>();
                result.Add("error", "true");
                result.Add("position", Convert.ToString(position));
                result.Add("message", "Failed to mark progress as the workout may have already been updated");
                result.Add("code", "500");
                return Json(result);
            }
            catch (DbUpdateException ex)
            {
                var result = new Dictionary<string, string>();
                result.Add("error", "true");
                result.Add("position", Convert.ToString(position));
                result.Add("message", "Failed to mark progress as the workout may have already been updated");
                result.Add("code", "500");
                return Json(result);
            }
            catch (Exception ex)
            {
                var result = new Dictionary<string, string>();
                result.Add("error", "true");
                result.Add("position", Convert.ToString(position));
                result.Add("message", "Failed to mark workout progress");
                result.Add("code", "500");
                return Json(result);
            }
        }
コード例 #5
0
 public void TestMyWorkoutsDetailsForWorkout24()
 {
     user_workout u_workout = new user_workout();
     u_workout.id = 10;
     byte[] timestamp = new byte[8];
     for (var i = 0; i < timestamp.Length; i++)
     {
         timestamp[i] = 0;
     }
     u_workout.timestamp = timestamp;
     u_workout.workout = new workout
     {
         description = "desc2"
     };
     db.Setup(c => c.user_workout.Find(u_workout.id)).Returns(u_workout);
     ViewResult result = myWorkoutsCon.Details(10) as ViewResult;
     Assert.IsNotNull(result);
     workout workout10 = (workout)result.ViewData.Model;
     Assert.AreEqual("desc2", workout10.description, "description was not 'desc24'");
 }
コード例 #6
0
 public void TestMyWorkoutsDetailsForWorkout1()
 {
     user_workout u_workout = new user_workout();
     u_workout.id = 1;
     byte[] timestamp = new byte[8];
     for (var i = 0; i < timestamp.Length; i++)
     {
         timestamp[i] = 0;
     }
     u_workout.timestamp = timestamp;
     u_workout.workout = new workout
     {
         name = "workout1"
     };
     db.Setup(c => c.user_workout.Find(u_workout.id)).Returns(u_workout);
     ViewResult result = myWorkoutsCon.Details(1) as ViewResult;
     Assert.IsNotNull(result);
     workout workout1 = (workout)result.ViewData.Model;
     Assert.AreEqual("workout1", workout1.name, "Name was not 'workout1'");
 }
コード例 #7
0
 public void TestMyWorkoutsDeleteWorkoutNotFound()
 {
     user_workout u_workout = new user_workout();
     u_workout.id = 50406;
     ViewResult result = myWorkoutsCon.DeleteFromMyWorkouts(u_workout) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("DetailedError", result.ViewName);
     Assert.IsInstanceOfType(result.Model, typeof(HttpStatusCodeResult));
     var model = result.Model as HttpStatusCodeResult;
     Assert.AreEqual(500, model.StatusCode);
     Assert.AreEqual("The workout does not exist or has already been deleted", model.StatusDescription);
 }
コード例 #8
0
 public void TestMyWorkoutsDeleteMyWorkout()
 {
     user_workout u_workout = new user_workout();
     u_workout.id = 2;
     u_workout.workout = new workout()
     {
         id = 2
     };
     byte[] timestamp = new byte[8];
     for (var i = 0; i < timestamp.Length; i++)
     {
         timestamp[i] = 0;
     }
     u_workout.timestamp = timestamp;
     db.Setup(c => c.user_workout.Find(u_workout.id)).Returns(u_workout);
     db.Setup(c => c.user_workout.Remove(u_workout)).Returns(u_workout);
     RedirectToRouteResult result = myWorkoutsCon.DeleteFromMyWorkouts(u_workout) as RedirectToRouteResult;
     RedirectToRouteResult v_result = myWorkoutsCon.Details(2) as RedirectToRouteResult;
     Assert.IsNull(v_result);
     Assert.IsNotNull(result);
     Assert.AreEqual("Index", result.RouteValues["action"], "action was not Index");
     Assert.AreEqual("MyWorkouts", result.RouteValues["controller"], "controller was not MyWorkouts");
 }
コード例 #9
0
 public void TestMyWorkoutsDeleteCompletedMyWorkout()
 {
     user_workout u_workout = new user_workout();
     u_workout.id = 2;
     u_workout.workout = new workout()
     {
         id = 2
     };
     u_workout.date_finished = Convert.ToDateTime("2015-06-30");
     byte[] timestamp = new byte[8];
     for (var i = 0; i < timestamp.Length; i++)
     {
         timestamp[i] = 0;
     }
     u_workout.timestamp = timestamp;
     db.Setup(c => c.user_workout.Find(u_workout.id)).Returns(u_workout);
     db.Setup(c => c.user_workout.Remove(u_workout)).Returns(u_workout);
     ViewResult result = myWorkoutsCon.DeleteFromMyWorkouts(u_workout) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("DetailedError", result.ViewName);
     Assert.IsInstanceOfType(result.Model, typeof(HttpStatusCodeResult));
     var model = result.Model as HttpStatusCodeResult;
     Assert.AreEqual(500, model.StatusCode);
     Assert.AreEqual("The workout has been completed and can't be removed", model.StatusDescription);
 }
コード例 #10
0
 public void TestMyWorkoutsAddWorkoutWithBadWorkout()
 {
     user_workout u_workout = new user_workout();
     ViewResult result = myWorkoutsCon.AddToMyWorkouts(u_workout) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("DetailedError", result.ViewName);
     Assert.IsInstanceOfType(result.Model, typeof(HttpStatusCodeResult));
     var model = result.Model as HttpStatusCodeResult;
     Assert.AreEqual(500, model.StatusCode);
     Assert.AreEqual("Failed to add the requested workout to user workouts.", model.StatusDescription);
 }