Пример #1
0
        public async Task DownloadRespostas(Int32 idpesquisa06, Int32 idpesquisa01)
        {
            try
            {
                JObject obj = new JObject();
                obj["idpesquisa06"] = idpesquisa06;

                var pesquisador = Utils.ObterPesquisadorLogado();

                obj["idcliente"] = pesquisador.idcliente;

                List <CE_Filtro> filtros = daoFiltro.ObterFiltrosPorPesquisa(idpesquisa01);

                var groupPergunta = filtros.GroupBy(o => o.idpesquisa04);

                JArray jFiltros = new JArray();

                foreach (var item in groupPergunta)
                {
                    List <CE_Filtro> filtrosPergunta = filtros.Where(o => o.idpesquisa04 == item.Key).ToList();

                    JObject objPergunta = new JObject();
                    objPergunta["idpesquisa04"] = item.Key;
                    objPergunta["temopcoes"]    = filtrosPergunta[0].idpesquisa03 != 0;

                    JArray jValores = new JArray();

                    if (filtrosPergunta[0].idpesquisa03 != 0)
                    {
                        foreach (var fp in filtrosPergunta)
                        {
                            JObject objValor = new JObject();
                            objValor["vlresposta"] = fp.vlresposta;

                            jValores.Add(objValor);
                        }
                    }
                    else
                    {
                        JObject objValor = new JObject();
                        objValor["vlresposta"] = filtrosPergunta[0].vlrde;

                        jValores.Add(objValor);

                        objValor = new JObject();
                        objValor["vlresposta"] = filtrosPergunta[0].vlrate;

                        jValores.Add(objValor);
                    }

                    objPergunta["valores"] = jValores;

                    jFiltros.Add(objPergunta);
                }

                obj["filtros"] = jFiltros;

                HttpResponseMessage resposta = await ws.Post("obterRespostasAgrupadasPorOnda", obj);

                String message = await resposta.Content.ReadAsStringAsync();

                if (resposta.IsSuccessStatusCode)
                {
                    DAO_Download daoDownload = DAO_Download.Instance;
                    daoDownload.InserirDownload(new CE_Download()
                    {
                        data = DateTime.Now, idpesquisa01 = idpesquisa01
                    });
                    Utils.SalvarArquivo("onda_" + idpesquisa06 + ".json", message);
                }
                else
                {
                    throw new Exception(message);
                }
            }
            catch (Exception)
            {
                throw new Exception("Não foi possível efetuar o download dos dados.");
            }
        }
Пример #2
0
        public void CompartilharPDF(List <CE_Pesquisa04> perguntas)
        {
            if (Android.Support.V4.App.ActivityCompat.CheckSelfPermission(Android.App.Application.Context, Android.Manifest.Permission.WriteExternalStorage) != (int)Android.Content.PM.Permission.Granted)
            {
                Android.Support.V4.App.ActivityCompat.RequestPermissions(mainActivity, new string[] { Android.Manifest.Permission.WriteExternalStorage }, 0);

                return;
            }
            else
            {
                try
                {
                    Configuracao conf = ObterConfiguracao();
                    //String path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
                    String path       = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
                    String arquivoPDF = Path.Combine(path, "graficos.pdf");

                    DAO_Filtro       daoFiltro   = DAO_Filtro.Instance;
                    List <CE_Filtro> listFiltros = daoFiltro.ObterFiltrosPorPesquisa(perguntas[0].idpesquisa01);

                    List <CE_Pesquisa03> opcoes = new List <CE_Pesquisa03>();

                    foreach (var item in perguntas)
                    {
                        if (item.TemFiltro())
                        {
                            opcoes.AddRange(item.Opcoes);
                        }
                    }

                    perguntas = perguntas.Where(o => o.IsPergunta && o.selecionado).ToList();

                    FileStream fs       = new FileStream(arquivoPDF, FileMode.Create);
                    Document   document = new Document(PageSize.A4, 25, 25, 30, 30);
                    PdfWriter  writer   = PdfWriter.GetInstance(document, fs);

                    document.Open();

                    foreach (var pergunta in perguntas)
                    {
                        Paragraph paragrafo = new Paragraph();
                        paragrafo.Alignment = iTextSharp.text.Element.ALIGN_LEFT;

                        Phrase prCabecalho = new Phrase("Gráfico gerado em: " + String.Format("{0:dd/MM/yyyy HH:mm:ss}", DateTime.Now) + " \n", new iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 15f, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.BLACK));

                        paragrafo.Add(prCabecalho);

                        Table table = new Table(1);
                        table.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
                        table.Width     = 100;

                        Phrase pr = new Phrase(pergunta.descricao + " (" + pergunta.Quantidade + ") \n\n", new iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 18f, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.WHITE));

                        iTextSharp.text.Cell cell = new iTextSharp.text.Cell(pr);
                        cell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
                        cell.BackgroundColor     = iTextSharp.text.Color.BLUE;

                        table.AddCell(cell);

                        paragrafo.Add(table);

                        Paragraph pImg = new Paragraph();
                        pImg.Alignment = iTextSharp.text.Element.ALIGN_CENTER;

                        MemoryStream ms = new MemoryStream();

                        if (pergunta.GraficoPizza != null)
                        {
                            if (pergunta.TipoGrafico == 1 && pergunta.GraficoPizza.Width > 0)
                            {
                                ((MikePhil.Charting.Data.PieData)pergunta.GraficoPizza.Data).SetValueTextSize(conf.TamanhoFonteGrafico);
                                ((MikePhil.Charting.Components.Legend)pergunta.GraficoPizza.Legend).TextSize = conf.TamanhoFonteGrafico - 2;
                                pergunta.GraficoPizza.ChartBitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, ms);
                                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(ms.ToArray());
                                img.ScalePercent(40f);
                                img.Alignment = iTextSharp.text.Element.ALIGN_CENTER;

                                pImg.Add(img);

                                paragrafo.Add(pImg);

                                document.Add(paragrafo);

                                ((MikePhil.Charting.Data.PieData)pergunta.GraficoPizza.Data).SetValueTextSize(15f);
                                ((MikePhil.Charting.Components.Legend)pergunta.GraficoPizza.Legend).TextSize = 15f;
                            }
                            else if (pergunta.TipoGrafico == 2 && pergunta.GraficoBarra.Width > 0)
                            {
                                pergunta.GraficoBarra.BarData.SetValueTextSize(conf.TamanhoFonteGrafico);
                                pergunta.GraficoBarra.ChartBitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, ms);
                                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(ms.ToArray());
                                img.ScalePercent(40f);
                                img.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
                                pImg.Add(img);

                                paragrafo.Add(pImg);

                                document.Add(paragrafo);

                                pergunta.GraficoBarra.BarData.SetValueTextSize(15f);
                            }
                        }
                        else
                        {
                            if (pergunta.TipoGrafico == 1 && pergunta.GraficoLinha.Width > 0)
                            {
                                pergunta.GraficoLinha.LineData.SetValueTextSize(conf.TamanhoFonteGrafico);
                                pergunta.GraficoLinha.ChartBitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, ms);
                                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(ms.ToArray());
                                img.ScalePercent(40f);
                                img.Alignment = iTextSharp.text.Element.ALIGN_CENTER;

                                pImg.Add(img);

                                paragrafo.Add(pImg);

                                document.Add(paragrafo);

                                pergunta.GraficoLinha.LineData.SetValueTextSize(15f);
                            }
                            else if (pergunta.TipoGrafico == 2 && pergunta.GraficoBarra.Width > 0)
                            {
                                pergunta.GraficoBarra.BarData.SetValueTextSize(conf.TamanhoFonteGrafico);
                                pergunta.GraficoBarra.ChartBitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, ms);
                                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(ms.ToArray());
                                img.ScalePercent(40f);
                                img.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
                                pImg.Add(img);

                                paragrafo.Add(pImg);

                                document.Add(paragrafo);

                                pergunta.GraficoBarra.BarData.SetValueTextSize(15f);
                            }
                        }

                        ms.Close();

                        Paragraph paragrafoRodape = new Paragraph();
                        paragrafoRodape.Alignment = iTextSharp.text.Element.ALIGN_LEFT;

                        String filtro = "Filtros: ";

                        if (listFiltros.Count > 0)
                        {
                            for (int i = 0; i < listFiltros.Count; i++)
                            {
                                if (i != listFiltros.Count - 1)
                                {
                                    filtro += opcoes.FirstOrDefault(o => o.idpesquisa03 == listFiltros[i].idpesquisa03).descricao + ", ";
                                }
                                else
                                {
                                    filtro += opcoes.FirstOrDefault(o => o.idpesquisa03 == listFiltros[i].idpesquisa03).descricao;
                                }
                            }
                        }
                        else
                        {
                            filtro = "Filtros: Nenhum";
                        }

                        Phrase prRodape = new Phrase(filtro, new iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 15f, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.BLACK));

                        paragrafoRodape.Add(prRodape);

                        document.Add(paragrafoRodape);

                        document.NewPage();
                    }

                    document.Close();
                    writer.Close();
                    fs.Close();

                    var fileUri       = Android.Net.Uri.FromFile(new Java.IO.File(arquivoPDF));
                    var sharingIntent = new Intent();
                    sharingIntent.SetAction(Intent.ActionSend);
                    sharingIntent.SetType("application/pdf");
                    //sharingIntent.PutExtra(Intent.ExtraText, content);
                    sharingIntent.PutExtra(Intent.ExtraStream, fileUri);
                    //sharingIntent.AddFlags(ActivityFlags.GrantReadUriPermission);
                    Intent intent = Intent.CreateChooser(sharingIntent, "graficos.pdf");
                    intent.AddFlags(ActivityFlags.NewTask);
                    Android.App.Application.Context.StartActivity(intent);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }