private async Task <ExercisePropertyDto> UpsertPropertyAsync(ExerciseProperty exerciseProperty, int userId) { if (exerciseProperty is null) { return(null); } Exercise exercise = await exerciseRepository.GetByIdAsync(exerciseProperty.ExerciseId) ?? (await exercisePropertyRepository.GetByIdAsync(exerciseProperty.Id)).Exercise; if (exercise.TrainingTemplate.CreatorId != userId) { return(null); } if (exerciseProperty.Id != 0) { exerciseProperty = exercise.Properties.FirstOrDefault(p => p.Id == exerciseProperty.Id).Copy(exerciseProperty); exerciseProperty = await exercisePropertyRepository.UpdateAsync(exerciseProperty); } else { exerciseProperty = await exercisePropertyRepository.AddAsync(exerciseProperty); } await exercisePropertyRepository.SaveChangesAsync(); return(mapper.Map <ExerciseProperty, ExercisePropertyDto>(exerciseProperty)); }
public static ExerciseProperty Copy(this ExerciseProperty exerciseProperty, ExerciseProperty exercisePropertyToCopy) { exerciseProperty.Duration = exercisePropertyToCopy.Duration; exerciseProperty.DurationType = exercisePropertyToCopy.DurationType; exerciseProperty.Weight = exercisePropertyToCopy.Weight; return(exerciseProperty); }
public static ExerciseProperty Clone(this ExerciseProperty exercise) { return(new ExerciseProperty() { Duration = exercise.Duration, DurationType = exercise.DurationType, Weight = exercise.Weight, }); }
public async Task <ExercisePropertyDto> GetExercisePropertyAsync(int id, int userId) { ExerciseProperty property = await exercisePropertyRepository.GetByIdAsync(id); if (property?.Exercise.TrainingTemplate.CreatorId != userId) { return(null); } return(mapper.Map <ExerciseProperty, ExercisePropertyDto>(property)); }
public async Task <bool> DeletePropertyAsync(int propertyId, int userId) { ExerciseProperty exerciseProperty = await exercisePropertyRepository.GetByIdAsync(propertyId); if (exerciseProperty?.Exercise.TrainingTemplate.CreatorId != userId) { return(false); } bool result = await exercisePropertyRepository.DeleteAsync(exerciseProperty); await exercisePropertyRepository.SaveChangesAsync(); return(result); }
public async Task <ExercisePropertyDto> UpdatePropertyAsync(ExercisePropertyUpdateModel model, int userId) { ExerciseProperty exerciseProperty = mapper.Map <ExercisePropertyUpdateModel, ExerciseProperty>(model); return(await UpsertPropertyAsync(exerciseProperty, userId)); }