public async Task UpdateMealOptionSelected(MealOptionSelected MealOptionSelected = MealOptionSelected.None)
        {
            if (MealOptionSelectedPreviously != MealOptionSelected.None &&
                MealOptionSelectedPreviously == MealOptionSelected)
            {
                return;
            }
            this.FullMealsStyle = this.LabelStyleDefault;
            this.ShakesStyle    = this.LabelStyleDefault;
            this.ProMealsStyle  = this.LabelStyleDefault;

            this.FullMealsImage = TextResources.icon_full_meals_gray;
            this.ShakesImage    = TextResources.icon_shakes_gray;
            this.ProMealsImage  = TextResources.icon_pro_meals_gray;

            switch (MealOptionSelected)
            {
            case MealOptionSelected.FullMeals:
                this.FullMealsStyle = this.LabelStyleSelected;
                this.FullMealsImage = TextResources.icon_full_meals;
                break;

            case MealOptionSelected.Shakes:
                this.ShakesStyle = this.LabelStyleSelected;
                this.ShakesImage = TextResources.icon_shakes;
                break;

            case MealOptionSelected.ProMeals:
                this.ProMealsStyle = this.LabelStyleSelected;
                this.ProMealsImage = TextResources.icon_pro_meals;
                break;
            }

            MealOptionSelectedPreviously = MealOptionSelected;
            await this.GetData(MealOptionSelected);
        }
        private async Task GetData(MealOptionSelected mealOptionSelected)
        {
            if (mealOptionSelected == MealOptionSelected.None)
            {
                return;
            }

            var mealPlanDetail = (await this.GetAsync()).FirstOrDefault(l =>
                                                                        l.MealTitleCompare.ToLower().Contains(mealOptionSelected.ToString().ToLower()));
            var accordionSources      = new List <AccordionMultiViewSource>();
            var mealPlanOptionDetails =
                mealPlanDetail?.MealPlanOptionDetails.OrderBy(m => m.DisplaySequence).ThenBy(m => m.ID).ToList() ??
                new List <MealPlanOptionDetail>();

            await this.SetMealHeaderImage(mealPlanDetail);

            foreach (var mealPlanOptionDetail in mealPlanOptionDetails)
            {
                switch (mealPlanDetail?.ViewType)
                {
                case "list":
                    accordionSources.Add(await SetupMealPlanOptionList(mealPlanOptionDetail,
                                                                       mealPlanOptionDetail.MealPlanOptionListDetails.OrderBy(m => m.DisplaySequence)
                                                                       .ThenBy(m => m.ID).ToList(), mealPlanDetail.ViewType));
                    break;

                case "grid":
                    accordionSources.Add(await SetupMealPlanOptionGrid(mealPlanOptionDetail,
                                                                       mealPlanOptionDetail.MealPlanOptionGridDetails.OrderBy(m => m.DisplaySequence)
                                                                       .ThenBy(m => m.ID).ToList(), mealPlanDetail.ViewType));
                    break;
                }
            }

            this.AccordionSources = accordionSources;
        }