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); }
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)); } }