/// <summary>
 /// returns the description of an exercise as a JSON result
 /// </summary>
 /// <param name="exerciseID">ID of the exercise</param>
 /// <returns>JSON object of the exercise description</returns>        
 public ActionResult GetExerciseDescription(int id)
 {
     ml_ExerciseLibrary exercise = null;
     using (var unitOfWork = new EFContextUnitOfWork(new MuscleLogContext()))
     {
         var service = new ExerciseLibraryService(new ExerciseRepository(unitOfWork));
         exercise = service.GetExercise(id);
     }
     return Json(exercise, JsonRequestBehavior.AllowGet);
 }
        /// <summary>
        /// lists all exercises
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            var context = new MuscleLogContext();
            using(var unitOfWork = new EFContextUnitOfWork(context)) {
                var userService = new UserService(new Repository<ml_User>(unitOfWork));
                var exerciseService = new ExerciseLibraryService(new ExerciseRepository(unitOfWork));
                ViewData["UserCanEdit"] = userService.ExerciseAccess(CurrentUser, Convert.ToInt32(ConfigurationManager.AppSettings["EditExerciseRequiredLevel"]));
                return View(exerciseService.GetMuscleGroups());

            }
        }
        public WorkoutController()
        {
            _unitOfWork = new EFContextUnitOfWork(new MuscleLogContext());

            _exerciseService = new ExerciseLibraryService(new ExerciseRepository(_unitOfWork));
            _workoutCommentService = new WorkoutCommentService(new Repository<ml_WorkoutComment>(_unitOfWork));
            _workoutDayService = new WorkoutDayService(new Repository<ml_WorkoutDay>(_unitOfWork));
            _workoutService = new WorkoutService(new WorkoutRepository(_unitOfWork));
            _votesService = new WorkoutVoteService(new Repository<ml_WorkoutVotes>(_unitOfWork));
            _commentVoteService = new CommentVoteService(new Repository<ml_CommentVotes>(_unitOfWork));
        }
        /// <summary>
        /// saves or creates a new exercise library item. 
        /// </summary>
        /// <param name="model">ExerciseModel object to be saved</param>
        /// <returns>1 for success, 0 for error</returns>
        public JsonResult SaveExercise(string exerciseID, string exerciseDescription, string exerciseExecution)
        {
            int eID = -1;
            if(!Int32.TryParse(exerciseID, out eID) || eID == -1) return Json(0);

            ml_ExerciseLibrary exercise = new ml_ExerciseLibrary();
            exercise.ID = eID;
            exercise.ExerciseDescription = exerciseDescription;
            exercise.ExerciseExecution = exerciseExecution;

            using (var unitOfWork = new EFContextUnitOfWork(new MuscleLogContext()))
            {
                var service = new ExerciseLibraryService(new ExerciseRepository(unitOfWork));
                service.SaveExercise(exercise);
            }

            return Json(1);
        }