public async Task <IHttpActionResult> Save(ExerciseDetailsDTO model) { if (!ModelState.IsValid) { return(BadRequest("Invalid Model")); } return(Ok(await _exerciseService.AddOrUpdateExerciseAsync(model))); }
public async Task <int> AddOrUpdateExerciseAsync(ExerciseDetailsDTO dto) { var exercise = Mapper.Map <ExerciseDetailsDTO, Exercise>(dto); var exerciseInDb = await _exerciseRepository.CollectionWithTracking.Include(z => z.ExerciseCriterias).FirstOrDefaultAsync(f => f.Id == exercise.Id); if (exerciseInDb == null) { _exerciseRepository.Insert(exercise); } else { Mapper.Map(exercise, exerciseInDb); _exerciseCriteriaRepository.Delete(exerciseInDb.ExerciseCriterias.ToArray()); exerciseInDb.ExerciseCriterias.AddRange(exercise.ExerciseCriterias); _exerciseRepository.Update(exerciseInDb); } await _unitOfWork.SaveChangesAsync(); return(exercise.Id); }