public async Task<ObservableCollection<Enquete>> GetEnquetesDeSeuInteresse() { Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Buscando Enquetes..."); var db = new Repositorio<Enquete>(); var dbUsuario = new Repositorio<Usuario>(); var usuario = (await dbUsuario.RetornarTodos()).First(); var ultimaEnquete = 0; ICollection<Enquete> listaEnquetes = null; var temRegistro = await db.ExisteEnqueteInteresse(); if (!temRegistro) { listaEnquetes = await this.service.RetornarEnquetesInteresse(-1, usuario.Id); await db.InserirTodos(listaEnquetes.ToList()); foreach (var item in listaEnquetes) { if (!String.IsNullOrEmpty(item.Imagem)) await DependencyService.Get<ISaveAndLoadFile>().BaixaImagemSalvarEmDisco(item.Imagem, Constants.baseImageAddress); if (!String.IsNullOrEmpty(item.UrlVideo)) { var str = new Uri(item.UrlVideo).Segments; var url = String.Format(Constants.uriYoutubeThumbnail, str[2]); await DependencyService.Get<ISaveAndLoadFile>().BaixaThumbnailYoutubeSalvarEmDisco(url, String.Concat(str[2], ".jpg")); } } } else { Expression<Func<Enquete,bool>> filtro = (f) => f.Tipo == EnumTipoEnquete.Interesse; ultimaEnquete = (await db.ProcurarPorColecao(filtro)).OrderByDescending(e => e.ServerEnqueteId).First().ServerEnqueteId; listaEnquetes = await this.service.RetornarEnquetesInteresse(ultimaEnquete, usuario.Id); if (listaEnquetes != null && listaEnquetes.Any()) { foreach (var item in listaEnquetes) { Expression<Func<Enquete,bool>> porServerId = (x) => x.ServerEnqueteId == item.ServerEnqueteId; var achou = await db.ProcurarPorFiltro(porServerId); if (achou != null) item.Id = achou.Id; } await db.InserirTodos(listaEnquetes.ToList()); foreach (var item in listaEnquetes) { if (!String.IsNullOrEmpty(item.Imagem)) await DependencyService.Get<ISaveAndLoadFile>().BaixaImagemSalvarEmDisco(item.Imagem, Constants.baseImageAddress); if (!String.IsNullOrEmpty(item.UrlVideo)) { var str = new Uri(item.UrlVideo).Segments; var url = String.Format(Constants.uriYoutubeThumbnail, str[2]); await DependencyService.Get<ISaveAndLoadFile>().BaixaThumbnailYoutubeSalvarEmDisco(url, String.Concat(str[2], ".jpg")); } } } var enquetesNoTelefone = (await db.RetornarTodos()).Where(e => e.Tipo == EnumTipoEnquete.Interesse); foreach (var enquete in enquetesNoTelefone) { if (!listaEnquetes.Contains(enquete)) listaEnquetes.Add(enquete); } } ICollection<Banner> banners = null; List<Banner> ultimoBanner; var dbBanner = new Repositorio<Banner>(); var categorias = String.Empty; var dbUsuarioCategoria = new Repositorio<UsuarioCategoria>(); foreach (var item in usuario.CategoriaMobileSelection.Split(';')) { categorias += item + ';'; } categorias = categorias.TrimEnd(';'); var temBannerGravado = await db.ExisteBanner(); if (!temBannerGravado) { banners = await this.service.RetornarBanners(-1, 1, categorias); foreach (var banner in banners.ToList()) { await DependencyService.Get<ISaveAndLoadFile>().BaixaImagemSalvarEmDisco(banner.FileName, Constants.baseImageAddress); } await dbBanner.InserirTodos(banners.ToList()); } else { ultimoBanner = await dbBanner.RetornarTodos(); banners = ultimoBanner != null ? await this.service.RetornarBanners(ultimoBanner.OrderByDescending(e => e.Id).First().Id, 1, categorias) : await this.service.RetornarBanners(-1, 1, categorias); foreach (var banner in banners.ToList()) { await DependencyService.Get<ISaveAndLoadFile>().BaixaImagemSalvarEmDisco(banner.FileName, Constants.baseImageAddress); } await dbBanner.InserirTodos(banners.ToList()); } var b = await dbBanner.RetornarTodos(); this.Banners = new ObservableCollection<Banner>(b.ToList()); Acr.UserDialogs.UserDialogs.Instance.HideLoading(); return new ObservableCollection<Enquete>(listaEnquetes.Where(e => e.Tipo == EnumTipoEnquete.Interesse)); }