Beispiel #1
0
        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());
        }