public ServiceResponse <ExerciseTrainingResponse> Add(AddExerciseTrainingRequest addExerciseTrainingRequest) { using (DiaryContext db = new DiaryContext()) { var trainingUnit = db.TrainingUnits.FirstOrDefault(x => x.Id == addExerciseTrainingRequest.TrainingUnitId); if (trainingUnit == null) { return(new ServiceResponse <ExerciseTrainingResponse>(null, HttpStatusCode.NotFound, "Unable to find the training unit!")); } var exercise = db.Exercises.FirstOrDefault(x => x.Id == addExerciseTrainingRequest.ExerciseId); if (exercise == null) { return(new ServiceResponse <ExerciseTrainingResponse>(null, HttpStatusCode.NotFound, "Unable to find the exercise!")); } var exerciseDetails = db.ExercisesDetails.FirstOrDefault(x => x.Id == addExerciseTrainingRequest.ExerciseDetailsId); if (exerciseDetails == null) { return(new ServiceResponse <ExerciseTrainingResponse>(null, HttpStatusCode.NotFound, "Unable to find the exercise details!")); } var exerciseTraining = new ExerciseTraining { TrainingUnit = trainingUnit, Exercise = exercise, ExerciseDetails = exerciseDetails }; ExerciseTraining _ExerciseTraining = db.ExerciseTrainings.Add(exerciseTraining); db.SaveChanges(); return(new ServiceResponse <ExerciseTrainingResponse>(new ExerciseTrainingResponse(_ExerciseTraining), HttpStatusCode.OK, "ExerciseTraining added succesfully!")); } }
public ExerciseTrainingResponse GetExerciseTraining(int id) { using (DiaryContext db = new DiaryContext()) { ExerciseTraining exerciseTraining = db.ExerciseTrainings.Include("Exercise").Include("ExerciseDetails").Include("TrainingUnit").FirstOrDefault(x => x.Id == id); if (exerciseTraining == null) { return(null); } return(new ExerciseTrainingResponse(exerciseTraining)); } }
public ExerciseTrainingResponse(ExerciseTraining exerciseTraining) { Id = exerciseTraining.Id; if (exerciseTraining.Exercise != null) { ExerciseService exerciseService = new ExerciseService(); Exercise = exerciseService.GetExercise(exerciseTraining.Exercise.Id); } if (exerciseTraining.ExerciseDetails != null) { ExerciseDetails = new ExerciseDetailsResponse(exerciseTraining.ExerciseDetails); } }
public async Task <Guid> AddExercise(CreateTrainingAddExerciseViewModel createTrainingAddExerciseViewModel) { int trainingNumber = createTrainingAddExerciseViewModel.trainingNumber; var training = await _applicationDbContext.Trainings.Include(t => t.ExerciseTraining).FirstOrDefaultAsync(t => t.TrainingNumber == trainingNumber); var trainingGuid = training.Id; var exerciseId = Guid.NewGuid(); var exerciseFromVm = createTrainingAddExerciseViewModel.ExerciseId; var exercise = new ExerciseTraining { Id = exerciseId, ExerciseID = exerciseFromVm, TrainingId = trainingGuid, }; _applicationDbContext.TrainingExercises.Add(exercise); await _applicationDbContext.SaveChangesAsync(); return(exerciseId); }
public async Task <int> Create(TrainingViewModel model) { var exercises = await appDbContext.Exercises.AsNoTracking().Select(e => new { chest = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.CHEST) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), back = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.BACK) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), legs = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.LEGS) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), shoulders = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.SHOULDERS) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), triceps = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.TRICEPS) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), biceps = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.BICEPS) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), abs = appDbContext.Exercises.AsNoTracking() .Where(e2 => e2.Muscle == Muscle.ABS) .GroupBy(e2 => e2.Stage) .Select(g => new { Exercises = g.ToList() }) .Select(x => x.Exercises.OrderBy(o => Guid.NewGuid()).FirstOrDefault()) .ToList(), ifAlreadyExistTraining = appDbContext.Trainings.AsNoTracking().Any(t => t.UserId.Equals(httpContextAccessor.HttpContext.User.FindFirst(Constants.Strings.JwtClaimIdentifiers.Id).Value)) }).FirstOrDefaultAsync(); //// Get current training and set prop TrainingCurrent to false; if (exercises.ifAlreadyExistTraining) { var currentTraining = await appDbContext.Trainings .Where(t => t.UserId.Equals(httpContextAccessor.HttpContext.User.FindFirst(Constants.Strings.JwtClaimIdentifiers.Id).Value)) .OrderByDescending(t => t.Created).FirstOrDefaultAsync(); currentTraining.TrainingCurrent = false; } var newTraining = new Training { Name = model.Name, Days = model.Days, Created = DateTime.UtcNow, TrainingCurrent = true, Aim = model.Aim, UserId = httpContextAccessor.HttpContext.User.FindFirst(Constants.Strings.JwtClaimIdentifiers.Id).Value }; appDbContext.Trainings.Add(newTraining); await appDbContext.SaveChangesAsync(); //// Create exercise to training foreach (var chest in exercises.chest) { var exerciseTraining = new ExerciseTraining { ExerciseId = chest.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } foreach (var back in exercises.back) { var exerciseTraining = new ExerciseTraining { ExerciseId = back.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } foreach (var leg in exercises.legs) { var exerciseTraining = new ExerciseTraining { ExerciseId = leg.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } foreach (var shoulder in exercises.shoulders) { var exerciseTraining = new ExerciseTraining { ExerciseId = shoulder.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } foreach (var biceps in exercises.biceps) { var exerciseTraining = new ExerciseTraining { ExerciseId = biceps.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } foreach (var triceps in exercises.triceps) { var exerciseTraining = new ExerciseTraining { ExerciseId = triceps.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } foreach (var abs in exercises.abs) { var exerciseTraining = new ExerciseTraining { ExerciseId = abs.Id, TrainingId = newTraining.Id }; appDbContext.ExerciseTrainings.Add(exerciseTraining); } await appDbContext.SaveChangesAsync(); return(newTraining.Id); }