/// <summary>
        /// casts a vote for a workout
        /// </summary>
        /// <param name="workoutID">ID des Workouts, zu dem gevoted wird</param>
        /// <param name="userID">ID des Users, der den Vote abgibt</param>
        /// <param name="value">Wert des Votes</param>
        /// <returns>Gesamtsumme der Votes fuer diesen Trainingsplan</returns>
        public int CastVote( int workoutID, int userID, muscle_log.framework.Util.Enum.Votes value )
        {
            var previousVotes = _repo.GetAll(v => v.WorkoutID == workoutID && v.UserID == userID);
            if (previousVotes.Count() > 1)
            {
                throw new ApplicationException("The user with the ID " + userID + " casted multiple votes to the workout with the ID " + workoutID);
            }

            var vote = previousVotes.FirstOrDefault();
            if (vote != null)
            {
                vote.Value = (int)value;
                _repo.Update(vote);
            }
            else
            {
                vote = new ml_WorkoutVotes();
                vote.CRDT = vote.LUDT = DateTime.Now;
                vote.UserID = userID;
                vote.WorkoutID = workoutID;
                vote.Value = (int)value;
                _repo.Insert(vote);
            }

            return GetWorkoutVotesValue(workoutID);
        }
 private void AddVote(int userID, int workoutID, int value)
 {
     var vote = new ml_WorkoutVotes()
     {
         CRDT = DateTime.Now,
         LUDT = DateTime.Now,
         ID = ++_id,
         UserID = 1,
         Value = value,
         WorkoutID = workoutID,
         ml_WorkoutPlan = new ml_WorkoutPlan() {
             UserID = userID
         }
     };
     _repo.Insert(vote);
 }