private async Task InsertEnquetes()
        {
            var enquetes = EnqueteMock.MockEnquetes();

            var db = new Repositorio<Enquete>();
            await db.InserirTodos(enquetes);
        }
        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;
            }
        }
        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;
            }
        }
        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));
        }
        private async Task GravarResposta()
        {
            Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Enviando");

            if (this.Respostas != null)
            {
                var db = new Repositorio<Resposta>();
                if (await db.InserirTodos(this.Respostas))
                {
                    var dbEnquete = new Repositorio<Enquete>();
                    var enquete = (await dbEnquete.RetornarTodos()).First(e => e.PerguntaId == this.Pergunta.Id);
                    enquete.EnqueteRespondida = true;

                    if (await dbEnquete.Atualizar(enquete))
                    {
                        foreach (var resposta in this.Respostas.Where(r=>r.Respondida))
                        {
                            var perguntaResposta = new PerguntaResposta();

                            var dbUsuario = new Repositorio<Usuario>();
                            var usuarioLogado = (await dbUsuario.RetornarTodos()).First();

                            perguntaResposta.RespostaId = resposta.RespostaServerId;
                            perguntaResposta.PerguntaId = enquete.PerguntaServerId == 0 ? enquete.Pergunta.PerguntaServerId : enquete.PerguntaServerId;
                            perguntaResposta.UsuarioId = usuarioLogado.Id;

                            var salvouNoServidor = await this.service.CadastrarRespostaEnquete(perguntaResposta);

                            if (salvouNoServidor == null || !salvouNoServidor.Any())
                            {
                                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                                await Acr.UserDialogs.UserDialogs.Instance.AlertAsync("Erro ao salvar resposta, tente novamente");
                                return;
                            }

                            var dbperguntaResposta = new Repositorio<PerguntaResposta>();
                            await dbperguntaResposta.InserirTodos(salvouNoServidor.ToList());

                            var dbResposta = new Repositorio<Resposta>();
                            foreach (var pr in salvouNoServidor)
                            {
                                Expression<Func<Resposta,bool>> porPerguntaServerId = (x) => x.PerguntaServerId == pr.PerguntaId && x.RespostaServerId == pr.RespostaId;
                                var _resposta = await dbResposta.ProcurarPorFiltro(porPerguntaServerId);
                                _resposta.percentualResposta = pr.percentual;
									
                                await dbResposta.Atualizar(_resposta);
                            }
                        }

                        if (enquete.TemVoucher)
                        {
                            var dbQuiz = new Repositorio<RespostaQuiz>();

                            if ((await dbQuiz.RetornarTodos()).Any(x => x.EnqueteId == enquete.ServerEnqueteId))
                            {
                                this.Pergunta.correta = (await dbQuiz.RetornarTodos()).Any(c => c.EnqueteId == enquete.ServerEnqueteId && c.RespostaId == this.Respostas.First(r => r.Respondida).RespostaServerId);

                                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                                var pagina = Activator.CreateInstance(typeof(VotoSalvoComVoucherQuizPage), new[]{ this.Pergunta }) as VotoSalvoComVoucherQuizPage;
                                await this.Navigation.PushModalAsync(pagina);
                            }
                            else
                            {
                                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                                var pagina = Activator.CreateInstance(typeof(VotoSalvoComVoucherPage), new[]{ this.Pergunta,  }) as VotoSalvoComVoucherPage;
                                await this.Navigation.PushModalAsync(pagina);
                            }
                        }
                        else
                        {
                            var dbQuiz = new Repositorio<RespostaQuiz>();

                            if ((await dbQuiz.RetornarTodos()).Any(x => x.EnqueteId == enquete.ServerEnqueteId))
                            {
                                this.Pergunta.correta = (await dbQuiz.RetornarTodos()).Any(c => c.EnqueteId == enquete.ServerEnqueteId && c.RespostaId == this.Respostas.First(r => r.Respondida).RespostaServerId);

                                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                                var pagina = Activator.CreateInstance(typeof(VotoSalvoQuizPage), new[]{ this.Pergunta }) as VotoSalvoQuizPage;
                                await this.Navigation.PushModalAsync(pagina);
                            }
                            else
                            {
                                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                                var pagina = Activator.CreateInstance(typeof(VotoSalvoPage), new[]{ this.Pergunta }) as VotoSalvoPage;
                                await this.Navigation.PushModalAsync(pagina);
                            }
                        }
                    }
                }
            }
            else
            {
                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                await Acr.UserDialogs.UserDialogs.Instance.AlertAsync(AppResources.TituloErro, AppResources.MsgErroAoResponder, "OK");
            }
        }
        public async Task TrataClique()
        {
            Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Importando...");

            var service = App.Container.Resolve<ILogin>();

            var dbUsuario = new Repositorio<Usuario>();
            var _usuario = (await dbUsuario.RetornarTodos()).FirstOrDefault();

            if (_usuario != null)
            {
                var friends = await DependencyService.Get<IFacebook>().GetAmigos(_usuario.FacebookToken);
                var dbAmigos = new Repositorio<Amigo>();
                    
                var tels = friends.data.Distinct().Select(x => x.id).ToList();
                var existemNoServer = await service.RetornarAmigos(tels);

                var amigos = new List<Amigo>();

                if (existemNoServer != null && existemNoServer.Any())
                {
                    foreach (var item in existemNoServer.Distinct())
                    {
                        amigos.Add(new Amigo
                            {
                                Nome = item.Nome,
                                FacebookID = item.FacebookID,
                                UsuarioId = item.Id
                            });
                    }

                    await dbAmigos.InserirTodos(amigos.Distinct().ToList());
                }

                this.listViewContatos.ItemsSource = (await dbAmigos.RetornarTodos()).Distinct();

                var cellTemplate = new DataTemplate(typeof(TextCell));

                cellTemplate.SetBinding(TextCell.TextProperty, "Nome");
                this.listViewContatos.ItemTemplate = cellTemplate;

                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
            }
            else
                Acr.UserDialogs.UserDialogs.Instance.ShowError("Problemas com a autenticaĆ§Ć£o");
        }
Example #7
0
        public async Task RetornarEnqueteTipoQuiz()
        {
            using (var client = CallAPI.RetornaClientHttp())
            {
                response = await client.GetAsync(string.Format("{0}", Constants.uriGetEnquetesQuiz));

                if (response.IsSuccessStatusCode)
                {
                    var quizResponse = response.Content.ReadAsStringAsync().Result;
                    var quisToJson = JsonConvert.DeserializeObject(quizResponse);
                    var listaQuiz = JsonConvert.DeserializeObject<List<RespostaQuiz>>(quisToJson.ToString());

                    var dbQuiz = new Repositorio<RespostaQuiz>();
                    await dbQuiz.InserirTodos(listaQuiz);
                }
            }
        }
        protected async override void OnAppearing()
        {
            try
            {
                var progress = UserDialogs.Instance.Progress(AppResources.MsgLoading);
                progress.Show();
                
                #region -- FAKE DATABASE --
                //          var enquetes = EnqueteMock.MockEnquetes();
                //          var dbEnquete = new Repositorio<Enquete>();
                //          if (!(await dbEnquete.RetornarTodos()).Any())
                //              await dbEnquete.InserirTodos(enquetes);
                //
                //          var usuario = UsuarioMock.MockUsuario();
                //          var dbUsuario = new Repositorio<Usuario>();
                //          if (!(await dbUsuario.RetornarTodos()).Any())
                //              await dbUsuario.Inserir(usuario);
                //
                //          var amigos = AmigoMock.RetornaListaMockAmigo();
                //          var dbAmigo = new Repositorio<Amigo>();
                //          if (!(await dbAmigo.RetornarTodos()).Any())
                //              await dbAmigo.InserirTodos(amigos);
                #endregion
                
                #region -- Atualiza Categorias
                this.BindingContext = model = App.Container.Resolve<ColetaDadosViewModel>();
                
                var dbCategoria = new Repositorio<Categoria>();
                var ultimaCategoria = -1;
                
                if (await dbCategoria.ExisteCategoria())
                    ultimaCategoria = (await dbCategoria.RetornarTodos()).OrderByDescending(c => c.Id).First().Id;
                
                var categorias = await this.model.RetornarCategoriasDoServidor(ultimaCategoria);

                await dbCategoria.InserirTodos(categorias.ToList());

                try
                {
                    var _categorias = await dbCategoria.RetornarTodos();
                    
                    foreach (var item in categorias)
                    {
                        if (!String.IsNullOrEmpty(item.Imagem))
                            await DependencyService.Get<ISaveAndLoadFile>().BaixaImagemSalvarEmDisco(item.Imagem, Constants.baseImageAddress);
                    }
                }
                catch (Exception ex)
                {
                    Insights.Report(ex);
                }
                
                #endregion
                
                //Simula o carregamento de dados.
                Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
                    {
                        if (progress.IsShowing && progress.PercentComplete < 100)
                            progress.PercentComplete = progress.PercentComplete + 10;
                        else if (progress.IsShowing && progress.PercentComplete >= 100)
                        {
                            progress.Hide();
                            IsLogado();
                        }
                
                        return true;
                    });
            }
            catch (Exception ex)
            {
                Insights.Report(ex);
            }
        }