public async Task OnLoadAsync(INavigationParameters parameters, int attempt = 0)
        {
            try
            {
                var data = await SponsorService.GetAsync();

                Sponsors.Clear();

                foreach (var item in data.OrderBy(x => x.Level))
                {
                    var sponsor = new Sponsor
                    {
                        Name     = item.Name,
                        Homepage = item.Homepage,
                        Image    = ImageSource.FromStream(() => new MemoryStream(item.Image)),
                        Level    = (SponsorType)item.Level
                    };

                    switch (item.Level)
                    {
                    case Data.Models.SponsorLevel.Title:
                        Sponsors.Add(new TitlePlatinumSponsor
                        {
                            DataContext = sponsor,
                            Level       = SponsorType.Title
                        });
                        break;

                    case Data.Models.SponsorLevel.Platinum:
                        Sponsors.Add(new TitlePlatinumSponsor
                        {
                            DataContext = sponsor,
                            Level       = SponsorType.Platinum
                        });
                        break;
                    }
                }

                var goldGroup = new GeneralSponsor
                {
                    DataContext = data
                                  .Where(x => x.Level == Data.Models.SponsorLevel.Gold)
                                  .Select(x => new Sponsor
                    {
                        Name     = x.Name,
                        Homepage = x.Homepage,
                        Image    = ImageSource.FromStream(() => new MemoryStream(x.Image)),
                        Level    = SponsorType.Gold
                    }),
                    Level = SponsorType.Gold
                };

                var silverGroup = new GeneralSponsor
                {
                    DataContext = data
                                  .Where(x => x.Level == Data.Models.SponsorLevel.Silver)
                                  .Select(x => new Sponsor
                    {
                        Name     = x.Name,
                        Homepage = x.Homepage,
                        Image    = ImageSource.FromStream(() => new MemoryStream(x.Image)),
                        Level    = SponsorType.Silver
                    }),
                    Level = SponsorType.Silver
                };

                var bronzeGroup = new GeneralSponsor
                {
                    DataContext = data
                                  .Where(x => x.Level == Data.Models.SponsorLevel.Bronze)
                                  .Select(x => new Sponsor
                    {
                        Name     = x.Name,
                        Homepage = x.Homepage,
                        Image    = ImageSource.FromStream(() => new MemoryStream(x.Image)),
                        Level    = SponsorType.Bronze
                    }),
                    Level = SponsorType.Bronze
                };

                if (goldGroup.DataContext.Any())
                {
                    Sponsors.Add(goldGroup);
                }

                if (silverGroup.DataContext.Any())
                {
                    Sponsors.Add(silverGroup);
                }

                if (bronzeGroup.DataContext.Any())
                {
                    Sponsors.Add(bronzeGroup);
                }
            }
            catch (Exception)
            {
                await ErrorRetryManager.HandleRetryAsync(this, parameters, attempt);
            }
        }
        public async void OnNavigatingTo(INavigationParameters parameters)
        {
            var data = await SponsorService.GetAsync();

            Sponsors.Clear();

            foreach (var item in data)
            {
                var sponsor = new Sponsor
                {
                    Name      = item.Name,
                    Homepage  = item.Homepage,
                    ImageLink = item.ImageLink,
                    Level     = (SponsorType)item.Level
                };

                switch (item.Level)
                {
                case Data.Models.SponsorLevel.Title:
                    Sponsors.Add(new TitlePlatinumSponsor
                    {
                        DataContext = sponsor,
                        Level       = SponsorType.Title
                    });
                    break;

                case Data.Models.SponsorLevel.Platinum:
                    Sponsors.Add(new TitlePlatinumSponsor
                    {
                        DataContext = sponsor,
                        Level       = SponsorType.Platinum
                    });
                    break;
                }
            }

            var goldGroup = new GeneralSponsor
            {
                DataContext = data
                              .Where(x => x.Level == Data.Models.SponsorLevel.Gold)
                              .Select(x => new Sponsor
                {
                    Name      = x.Name,
                    Homepage  = x.Homepage,
                    ImageLink = x.ImageLink,
                    Level     = SponsorType.Gold
                }),
                Level = SponsorType.Gold
            };

            var silverGroup = new GeneralSponsor
            {
                DataContext = data
                              .Where(x => x.Level == Data.Models.SponsorLevel.Silver)
                              .Select(x => new Sponsor
                {
                    Name      = x.Name,
                    Homepage  = x.Homepage,
                    ImageLink = x.ImageLink,
                    Level     = SponsorType.Silver
                }),
                Level = SponsorType.Silver
            };

            var bronzeGroup = new GeneralSponsor
            {
                DataContext = data
                              .Where(x => x.Level == Data.Models.SponsorLevel.Bronze)
                              .Select(x => new Sponsor
                {
                    Name      = x.Name,
                    Homepage  = x.Homepage,
                    ImageLink = x.ImageLink,
                    Level     = SponsorType.Bronze
                }),
                Level = SponsorType.Bronze
            };

            if (goldGroup.DataContext.Any())
            {
                Sponsors.Add(goldGroup);
            }

            if (silverGroup.DataContext.Any())
            {
                Sponsors.Add(silverGroup);
            }

            if (bronzeGroup.DataContext.Any())
            {
                Sponsors.Add(bronzeGroup);
            }
        }