public async Task CarregarMensagem(int enqueteId) { var dbEnquete = new Repositorio<Enquete>(); Expression<Func<Enquete,bool>> porId = (x) => x.Id == enqueteId && x.Tipo == EnumTipoEnquete.Mensagem; var mensagem = (await dbEnquete.ProcurarPorFiltro(porId)); var dbCategoria = new Repositorio<Categoria>(); var _categoria = await dbCategoria.RetornarPorId(mensagem.CategoriaId); mensagem.Categoria = _categoria; mensagem.CategoriaId = _categoria.Id; mensagem.EnqueteRespondida = true; await dbEnquete.Atualizar(mensagem); await this.Navigation.PushAsync(new ExibirMensagemPage(enqueteId, mensagem.Imagem, mensagem.UrlVideo, mensagem.TemVoucher)); }
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"); } }