private void AddRepAction()
        {
            try
            {
                int    previousRep    = 0;
                double previousWeight = 0;
                if (BindingTrainingExerciseSetReps.Count > 0)
                {
                    previousRep    = BindingTrainingExerciseSetReps[BindingTrainingExerciseSetReps.Count - 1].Reps;
                    previousWeight = BindingTrainingExerciseSetReps[BindingTrainingExerciseSetReps.Count - 1].Weights;
                }

                foreach (var bindingSetRep in BindingTrainingExerciseSetReps)
                {
                    if (bindingSetRep.BtnPlusVisible)
                    {
                        bindingSetRep.BtnPlusVisible = false;
                    }
                }

                BindingTrainingExerciseSetReps.Add(new BindingTrainingExerciseSetRep()
                {
                    Reps           = previousRep,
                    Weights        = previousWeight,
                    BtnPlusVisible = true,
                    RepsLabel      = string.Empty, // necessary for trigger Text.Length
                    WeightsLabel   = string.Empty  // necessary for trigger Text.Length
                });
            }
            catch (Exception except)
            {
                ILogger.Instance.Error("Unable to add rep in training exercise", except);
            }
        }
        private async Task SynchronizeDataAsync()
        {
            var unit = await GetExerciseUnit();

            string weightUnit = "kg";

            if (unit == TUnitType.Imperial)
            {
                weightUnit = Translation.Get(TRS.POUND);
            }

            ExerciseTitle              = Translation.GetInDB(BodyExerciseTransformer.GetTranslationKey(_trainingExercise.BodyExerciseId));
            RestTime                   = _trainingExercise.RestTime;
            EccentricContractionTempo  = _trainingExercise.EccentricContractionTempo;
            StretchPositionTempo       = _trainingExercise.StretchPositionTempo;
            ConcentricContractionTempo = _trainingExercise.ConcentricContractionTempo;
            ContractedPositionTempo    = _trainingExercise.ContractedPositionTempo;

            string urlImages      = HttpConnector.Instance.BaseUrl + "images/bodyexercises/{0}";
            var    imageName      = string.Format("{0}.png", _trainingExercise.BodyExerciseId);
            var    urlImage       = string.Format(urlImages, imageName);
            var    localImagePath = Path.Combine(AppTools.BodyExercisesImagesDirectory, imageName);
            await AppTools.Instance.CachingImageAsync(_trainingExercise, urlImage, localImagePath, null);

            ExerciseImageSource = localImagePath;

            if (BindingTrainingExerciseSetReps == null)
            {
                BindingTrainingExerciseSetReps = new ObservableCollection <BindingTrainingExerciseSetRep>();
            }
            else
            {
                BindingTrainingExerciseSetReps.Clear();
            }

            if (_trainingExercise != null)
            {
                BindingTrainingExerciseSetRep bindingSetRep;
                if (_trainingExercise.TrainingExerciseSets == null || _trainingExercise.TrainingExerciseSets.Count == 0)
                {
                    bindingSetRep              = new BindingTrainingExerciseSetRep();
                    bindingSetRep.RepsLabel    = Translation.Get(TRS.REPS);
                    bindingSetRep.WeightsLabel = Translation.Get(TRS.WEIGHT) + "(" + weightUnit + ")";
                    bindingSetRep.Reps         = 8;
                    bindingSetRep.Weights      = 0;
                    BindingTrainingExerciseSetReps.Add(bindingSetRep);
                }
                else
                {
                    int count = 0;
                    foreach (var trainingExerciseSet in _trainingExercise.TrainingExerciseSets)
                    {
                        for (int i = 0; i < trainingExerciseSet.NumberOfSets; i++)
                        {
                            bindingSetRep = new BindingTrainingExerciseSetRep();
                            if (count == 0)
                            {
                                bindingSetRep.RepsLabel    = Translation.Get(TRS.REPS);
                                bindingSetRep.WeightsLabel = Translation.Get(TRS.WEIGHT) + "(" + weightUnit + ")";
                            }
                            else
                            {
                                bindingSetRep.RepsLabel = bindingSetRep.WeightsLabel = string.Empty; // necessary for trigger Text.Length
                            }
                            bindingSetRep.Reps    = trainingExerciseSet.NumberOfReps;
                            bindingSetRep.Weights = trainingExerciseSet.Weight;
                            BindingTrainingExerciseSetReps.Add(bindingSetRep);
                            count++;
                        }
                    }
                }
                if (BindingTrainingExerciseSetReps.Count > 0)
                {
                    BindingTrainingExerciseSetReps[BindingTrainingExerciseSetReps.Count - 1].BtnPlusVisible = true;
                }
            }
        }