Exemplo n.º 1
0
        public async Task<ObservableCollection<Enquete>> GetEnquetesPublicas()
        {
            Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Buscando Enquetes...");

            try
            {
                if (App.PushWooshToken != null && !String.IsNullOrEmpty(App.PushWooshToken))
                {
                    var dbUsuario = new Repositorio<Usuario>();
                    var _user = (await dbUsuario.RetornarTodos()).FirstOrDefault();
                    await this.service.GravaChavePushWoosh(App.PushWooshToken, _user.Id);
                }
                
                var db = new Repositorio<Enquete>();

                await this.service.RetornarEnqueteTipoQuiz();

                var ultimaEnquete = 0;
                ICollection<Enquete> listaEnquetes = null;
                
                var temRegistro = await db.ExisteEnquetePublica();
                if (!temRegistro)
                {
                    listaEnquetes = await this.service.RetornarEnquetesPublicas(-1);
                    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"));
                        }
                
                        foreach (var resposta in item.Pergunta.Respostas)
                        {
                            if (!String.IsNullOrEmpty(resposta.Imagem))
                                await DependencyService.Get<ISaveAndLoadFile>().BaixaImagemSalvarEmDisco(resposta.Imagem, Constants.baseImageAddress);
                        }
                    }
                }
                else
                {
                    ultimaEnquete = (await db.RetornarTodos()).OrderByDescending(e => e.Id).First(e => e.ServerEnqueteId != -1 && (e.Tipo == EnumTipoEnquete.Publica || e.Tipo == EnumTipoEnquete.Quiz)).ServerEnqueteId;
                    listaEnquetes = await this.service.RetornarEnquetesPublicas(ultimaEnquete);
                
                    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.Publica || e.Tipo == EnumTipoEnquete.Quiz);
                
                    foreach (var enquete in enquetesNoTelefone)
                    {
                        if (!listaEnquetes.Contains(enquete))
                            listaEnquetes.Add(enquete);
                    }
                }
                
                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                //return new ObservableCollection<Enquete>(listaEnquetes.Where(e => e.Tipo == EnumTipoEnquete.Publica));
                return await this.GetMensagens(listaEnquetes.Where(e => e.Tipo == EnumTipoEnquete.Publica || e.Tipo == EnumTipoEnquete.Quiz));
            }
            catch (Exception ex)
            {
                Insights.Report(ex);
                return null;
            }
        }