Пример #1
0
        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));
        }