public async Task<ObservableCollection<Enquete>> GetMensagens(IEnumerable<Enquete> enquetes) { Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Buscando Mensagens..."); var db = new Repositorio<Enquete>(); try { var ultimaEnquete = 0; ICollection<Enquete> listaEnquetes = null; var temRegistro = await db.ExisteMensagem(); if (!temRegistro) { listaEnquetes = await this.service.RetornarMensagens(-1, 1); if (listaEnquetes != null && listaEnquetes.Any()) { 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 { ultimaEnquete = (await db.RetornarTodos()).OrderByDescending(e => e.Id).First(e => e.ServerEnqueteId != -1 && e.Tipo == EnumTipoEnquete.Mensagem).ServerEnqueteId; listaEnquetes = await this.service.RetornarMensagens(ultimaEnquete, 1); if (listaEnquetes != null && listaEnquetes.Any()) { 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.Mensagem); if (listaEnquetes == null) listaEnquetes = enquetesNoTelefone.ToList(); else { foreach (var enquete in enquetesNoTelefone) { if (!listaEnquetes.Contains(enquete)) listaEnquetes.Add(enquete); } } } Acr.UserDialogs.UserDialogs.Instance.HideLoading(); IEnumerable<Enquete> x = null; if (listaEnquetes != null && listaEnquetes.Any()) x = enquetes.Union(listaEnquetes.Where(e => e.Tipo == EnumTipoEnquete.Mensagem)); else x = enquetes; return new ObservableCollection<Enquete>(x); } catch (Exception ex) { Insights.Report(ex); return null; } }