Exemplo n.º 1
0
        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;
            }
        }