コード例 #1
0
        public static async Task <SelectTrainingExercisesViewModelResut> ShowAsync(TrainingDayKey trainingDayKey, BaseViewModel parent = null, ValidateInputDataDelegate onValidateInputData = null)
        {
            var selectTrainingExercisesViewModelResut = new SelectTrainingExercisesViewModelResut();
            var viewModel = new SelectTrainingExercisesViewModel();

            viewModel._onValidateInputData = onValidateInputData;
            viewModel._trainingDayKey      = trainingDayKey;
            if (await ShowModalViewModelAsync(viewModel, parent))
            {
                selectTrainingExercisesViewModelResut.Result           = true;
                selectTrainingExercisesViewModelResut.BodyExerciseList = viewModel.SelectedBodyExerciseList;
            }
            viewModel._onValidateInputData = null;

            return(selectTrainingExercisesViewModelResut);
        }
コード例 #2
0
        private async Task AddExerciseActionAsync(TrainingDay trainingDay)
        {
            if (trainingDay == null)
            {
                return;
            }
            try
            {
                int indexOfTrainingDay = _trainingDays.IndexOf(trainingDay);
                if (indexOfTrainingDay != -1)
                {
                    var selectTrainingExercisesViewModelResut = await SelectTrainingExercisesViewModel.ShowAsync(trainingDay, this, async (trainingDayKey, selectedBodyExerciseList) => {
                        // Validate by upload data on server
                        if (trainingDayKey != null && selectedBodyExerciseList != null)
                        {
                            var trainingDayScenario = new TrainingDayScenario()
                            {
                                ManageExercise = true
                            };
                            var modifiedTrainingDay = await TrainingDayWebService.GetTrainingDayAsync(trainingDayKey, trainingDayScenario);

                            if (modifiedTrainingDay.TrainingExercises == null)
                            { // New training exercises
                                modifiedTrainingDay.TrainingExercises = new List <TrainingExercise>();
                            }

                            //AddExerciseActionAsync new exercises
                            int nextIdTrainingExercise = 1;
                            if (modifiedTrainingDay.TrainingExercises.Count > 0)
                            {
                                nextIdTrainingExercise = modifiedTrainingDay.TrainingExercises.Max(te => te.Id) + 1;
                            }
                            foreach (var bodyExercise in selectedBodyExerciseList)
                            {
                                var trainingExercise = new TrainingExercise()
                                {
                                    Year           = modifiedTrainingDay.Year,
                                    WeekOfYear     = modifiedTrainingDay.WeekOfYear,
                                    DayOfWeek      = modifiedTrainingDay.DayOfWeek,
                                    UserId         = modifiedTrainingDay.UserId,
                                    TrainingDayId  = modifiedTrainingDay.TrainingDayId,
                                    BodyExerciseId = bodyExercise.Id,
                                    Id             = nextIdTrainingExercise
                                };
                                trainingExercise.RestTime = 0;
                                trainingExercise.EccentricContractionTempo  = 1;
                                trainingExercise.StretchPositionTempo       = 0;
                                trainingExercise.ConcentricContractionTempo = 1;
                                trainingExercise.ContractedPositionTempo    = 0;
                                modifiedTrainingDay.TrainingExercises.Add(trainingExercise);
                                nextIdTrainingExercise++;
                            }
                            //synchronise to server
                            modifiedTrainingDay = await TrainingDayWebService.UpdateTrainingDayAsync(modifiedTrainingDay, trainingDayScenario);
                            //local update
                            _trainingDayService.UpdateTrainingDay(modifiedTrainingDay, trainingDayScenario);
                            return(true);
                        }
                        return(false);
                    });

                    if (selectTrainingExercisesViewModelResut.Result)
                    {
                        //reload local data
                        var trainingDayScenario = new TrainingDayScenario()
                        {
                            ManageExercise = true
                        };
                        trainingDay = _trainingDayService.GetTrainingDay(trainingDay, trainingDayScenario);
                        //Change modified trainingday in list of trainingdays
                        _trainingDays[indexOfTrainingDay] = trainingDay;
                        //Binding trainingDay for refresh view
                        CreateOrReplaceBindingTrainingDay(trainingDay);
                    }
                }
            }
            catch (Exception except)
            {
                ILogger.Instance.Error("Unable to add exercise", except);
                await _userDialog.AlertAsync(except.Message, Translation.Get(TRS.ERROR), Translation.Get(TRS.OK));
            }
        }