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