public async Task <ActionResult <List <Series> > > GetSeriesForExercise(int id) { var email = GetEmail(); var series = await seriesRepository.GetSeriesForExerciseAsync(id, email); return(series); }
public async Task <ActionResult> SwapExercise(SwapSExerciseIn model) { var email = GetEmail(); var exerciseDelete = await scheduleExerciseRepository.GetScheduleExerciseAsync(model.ScheduleExerciseId, email); var newExercise = new ScheduleExercise { ScheduleTrainingId = exerciseDelete.ScheduleTrainingId, Started = false, UserEmail = email, Order = exerciseDelete.Order, ExerciseId = model.ExerciseId }; await _context.AddAsync(newExercise); await _context.SaveChangesAsync(); var series = new List <ScheduleSeries>(); var seriesInExercise = await seriesRepository.GetSeriesForExerciseAsync(newExercise.ExerciseId, email); foreach (var s in seriesInExercise) { series.Add(new ScheduleSeries { ScheduleExerciseId = newExercise.ScheduleExerciseId, Distance = s.Distance, Finish = false, Load = s.Load, Name = s.Name, Order = s.Order, Repeats = s.Repeats, RestTime = s.RestTime, Time = s.Time, UserEmail = email, }); } await _context.AddRangeAsync(series); _context.Remove(exerciseDelete); await _context.SaveChangesAsync(); return(Ok()); }
public async Task <ActionResult> FinishTraining(FinishTrainingIn form) { var email = GetEmail(); var mScheduleTrainingTask = scheduleTrainingRepository.GetScheduleTrainingAsync(form.ScheduleTrainingId, email); var mScheduleTraining = await mScheduleTrainingTask; var seriesTask = scheduleSeriesRepository.GetScheduleSeriesForScheduleTrainingAsync(form.ScheduleTrainingId, email); mScheduleTraining.TrainingFinishDate = form.FinishDate; mScheduleTraining.Finish = true; var seriesInFinishedTraining = await seriesTask; var seriesToComplete = new List <ScheduleSeries>(); var scheduleExercises = new List <Models.Schedule.Exercise.ScheduleExercise>(); var scheduleTraining = new ScheduleTraining(); var t = await trainingRepository.GetTraining(mScheduleTraining.TrainingId, email); if (form.CreateNextTraining) { scheduleTraining.TrainingDate = form.NextTrainingDate; scheduleTraining.ExerciseNumber = mScheduleTraining.ExerciseNumber; scheduleTraining.Name = t.Name; scheduleTraining.Finish = false; scheduleTraining.UserEmail = email; scheduleTraining.TrainingId = mScheduleTraining.TrainingId; var addTrainingTask = _context.ScheduleTrainings.AddAsync(scheduleTraining); await addTrainingTask; } var exercisesList = new List <Models.Schedule.Exercise.ScheduleExercise>(); var seriesList = new List <ScheduleSeries>(); foreach (var series in seriesInFinishedTraining) { //Zakonczenie wszystkich serii if (!series.Finish) { series.Finish = true; seriesToComplete.Add(series); } if (form.CreateNextTraining) { if (exercisesList.Find(e => e.ExerciseId == series.ScheduleExercise.ExerciseId && e.Order == series.ScheduleExercise.Order) == null) { //przekopiowanie cwiczen do nowego treningu var c = new Models.Schedule.Exercise.ScheduleExercise { ExerciseId = series.ScheduleExercise.ExerciseId, ScheduleTraining = scheduleTraining, Order = series.ScheduleExercise.Order, UserEmail = email }; exercisesList.Add(c); } //przekopiowanie serii do nowego treningu var s = new ScheduleSeries { Time = series.Time, Distance = series.Distance, ScheduleExercise = exercisesList.Find(c => c.ExerciseId == series.ScheduleExercise.ExerciseId && c.Order == series.ScheduleExercise.Order), Repeats = series.Repeats, Order = series.Order, Load = series.Load, RestTime = series.RestTime, Name = CreateSeriesName(series), UserEmail = email }; seriesList.Add(s); } //aktualizacja serii if (!form.UpdateSeries) { continue; } var se = await seriesRespository.GetSeriesForExerciseAsync(series.ScheduleExercise.ExerciseId, email); var newSeries = new Series { Time = series.Time, Distance = series.Distance, Repeats = series.Repeats, Name = series.Name, Load = series.Load, RestTime = series.RestTime, Order = series.Order, ExerciseId = series.ScheduleExercise.ExerciseId, UserEmail = email }; if (se != null) { _context.RemoveRange(se); } await _context.Series.AddAsync(newSeries); } _context.UpdateRange(seriesToComplete); _context.Update(mScheduleTraining); await _context.SaveChangesAsync(); if (!form.CreateNextTraining) { return(Ok()); } var addScheduleExerciseTask = _context.AddRangeAsync(scheduleExercises.Distinct()); await addScheduleExerciseTask; var addScheduleSeriesTask = _context.ScheduleSeries.AddRangeAsync(seriesList); await addScheduleSeriesTask; await _context.SaveChangesAsync(); return(Ok()); }