Esempio n. 1
0
        public async Task <int> AddExerciseToTrainingAsync(ExerciseWithTraining exercise)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                bool exists = ctx.Exercise.Any(e => e.Id == exercise.Id);
                int  exerciseId;
                if (exists)
                {
                    exerciseId = exercise.Id;
                }
                else
                {
                    await ctx.Exercise.AddAsync(new Exercise
                    {
                        Description = exercise.Description,
                        Title       = exercise.Title
                    });

                    await ctx.SaveChangesAsync();

                    exerciseId = ctx.Exercise.ToList().Last().Id;
                }
                await ctx.TrainingExercises.AddAsync(new TrainingExercise
                {
                    ExerciseId = exerciseId,
                    TrainingId = exercise.TrainingId
                });

                await ctx.SaveChangesAsync();

                return(exerciseId);
            }
        }
Esempio n. 2
0
        public async Task <bool> EditExerciseInTrainingAsync(ExerciseWithTraining exercise)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                int      exerciseFrequency = GetNumberOfTrainingsForExercise(exercise.Id);
                Exercise exerciseDb        = await ctx.Exercise.FirstAsync(e => e.Id == exercise.Id);

                if (exerciseFrequency > 1)
                {
                    await ctx.Exercise.AddAsync(new Exercise
                    {
                        Description = exerciseDb.Description,
                        Title       = exerciseDb.Title
                    });

                    await ctx.SaveChangesAsync();

                    int exerciseId = ctx.Exercise.ToList().Last().Id;
                    Console.WriteLine("New exercise id is " + exerciseId);
                    var trainingExercises = ctx.TrainingExercises.Where(te => te.ExerciseId == exercise.Id &&
                                                                        te.TrainingId != exercise.TrainingId).ToList();
                    Console.WriteLine("Updating " + trainingExercises.Count + " training exercises");
                    foreach (var trainingExercise in trainingExercises)
                    {
                        ctx.TrainingExercises.Remove(trainingExercise);
                        await ctx.TrainingExercises.AddAsync(new TrainingExercise
                        {
                            ExerciseId = exerciseId,
                            TrainingId = trainingExercise.TrainingId
                        });
                    }
                }

                if (!string.IsNullOrEmpty(exercise.Title))
                {
                    exerciseDb.Title = exercise.Title;
                }
                if (!string.IsNullOrEmpty(exercise.Description))
                {
                    exerciseDb.Description = exercise.Description;
                }

                try
                {
                    ctx.Exercise.Update(exerciseDb);
                    await ctx.SaveChangesAsync();
                }
                catch (Exception e) {
                    return(false);
                }

                return(true);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Edits a given exercise in a given training
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> EditExerciseInTrainingAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            ExerciseWithTraining exercise = JsonSerializer.Deserialize <ExerciseWithTraining>(request.Argument.ToString());
            bool editResult = await trainingRepo.EditExerciseInTrainingAsync(exercise);

            Request responseRequest = new Request
            {
                ActionType = ActionType.TRAINING_EDIT_EXERCISE.ToString(),
                Argument   = JsonSerializer.Serialize(editResult)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 4
0
        /// <summary>
        /// Adds a given exercise to a given training
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> AddExerciseToTrainingAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            ExerciseWithTraining exercise =
                JsonSerializer.Deserialize <ExerciseWithTraining>(request.Argument.ToString());
            int exerciseId = await trainingRepo.AddExerciseToTrainingAsync(exercise);

            Request responseRequest = new Request
            {
                ActionType = ActionType.TRAINING_ADD_EXERCISE.ToString(),
                Argument   = JsonSerializer.Serialize(exerciseId)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }