예제 #1
0
        public ActionResult buildPDF(List <InformeResponse> lista, string nombreAsada)
        {
            MemoryStream ms = new MemoryStream();
            PdfWriter    pw = new PdfWriter(ms);

            PdfDocument pdfDocument = new PdfDocument(pw);
            Document    doc         = new Document(pdfDocument, PageSize.LETTER);

            doc.Add(new Paragraph("Reporte " + nombreAsada).SetFontSize(20).SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER).SetFontColor(new DeviceRgb(4, 124, 188)));
            foreach (InformeResponse item in lista)
            {
                Preguntas preguntasObj = TipoFormulario(item.tipo);

                doc.Add(new Paragraph(item.acueducto).SetFontSize(15).SetBold());
                doc.Add(new Paragraph("Fecha: " + item.fecha).SetFontSize(12));
                doc.Add(new Paragraph("Encargado: " + item.encargado).SetFontSize(12).SetPaddingBottom(2));
                doc.Add(new Paragraph("Respuestas ").SetFontSize(12).SetUnderline());

                var infra = JsonConvert.DeserializeObject <Dictionary <string, string> >(item.infraestructura);
                foreach (var kv in infra)
                {
                    if (kv.Key == "P1")
                    {
                        doc.Add(new Paragraph(preguntasObj.p1 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P2")
                    {
                        doc.Add(new Paragraph(preguntasObj.p2 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P3")
                    {
                        doc.Add(new Paragraph(preguntasObj.p3 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P4")
                    {
                        doc.Add(new Paragraph(preguntasObj.p4 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P5")
                    {
                        doc.Add(new Paragraph(preguntasObj.p5 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P6")
                    {
                        doc.Add(new Paragraph(preguntasObj.p6 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P7")
                    {
                        doc.Add(new Paragraph(preguntasObj.p7 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P8")
                    {
                        doc.Add(new Paragraph(preguntasObj.p8 + ": " + kv.Value).SetFontSize(8));
                    }
                    else if (kv.Key == "P9")
                    {
                        doc.Add(new Paragraph(preguntasObj.p9 + ": " + kv.Value).SetFontSize(8));
                    }
                }
                doc.Add(new Paragraph("Comentarios: " + item.comentarios).SetFontSize(12));
                doc.Add(new Paragraph("Tipo de formulario: " + preguntasObj.tipo).SetFontSize(12));
                Cell cell = new Cell();
                cell.Add(new Paragraph("Riesgo " + item.riesgo).SetBorder(new SolidBorder(colorRiesgo(item.riesgo), 1)).SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER).SetFontSize(14));
                doc.Add(cell);
            }

            doc.Close();

            byte[] bytesStream = ms.ToArray();
            ms = new MemoryStream();
            ms.Write(bytesStream, 0, bytesStream.Length);
            ms.Position = 0;

            return(new FileStreamResult(ms, "application/pdf"));
        }
예제 #2
0
        public Preguntas TipoFormulario(string t)
        {
            int       caseSwitch = Int32.Parse(t);
            Preguntas p          = new Preguntas();

            switch (caseSwitch)
            {
            case 1:
                p.tipo = "Fuente Superficial";
                p.p1   = "1. ¿Está la captación fuera de un área protegida o zona de conservación?";
                p.p2   = "2. ¿Está la toma de agua desprovista de infraestructura que la proteja?";
                p.p3   = "3. ¿Está el área alrededor de la toma sin cerca?";
                p.p4   = "4. ¿Está la toma de agua ubicada dentro de alguna zona de actividad agrícola? (crítica)";
                p.p5   = "5. ¿Existe alguna otra fuente de contaminación alrededor de la toma (letrinas, animales, viviendas, basura o industrias, etc.)? (Observar si aproximadamente a 200 metros a la redonda existen letrinas, animales, viviendas, basura) (crítica)";
                p.p6   = "6. ¿Está la captación con acceso fácil de personas y animales?(crítica)";
                p.p7   = "7. ¿Están las rejillas de la toma en malas condiciones (ausentes, quebradas y otros)?";
                p.p8   = "8. ¿Existe presencia de plantas (raíces, hojas y otros) tapando las rejillas de la toma?";
                p.p9   = "9. ¿Existen condiciones de deforestación y erosión en los alrededores de la toma de agua?";
                p.p10  = "10. ¿Está ausente el desarenador después de la toma de agua?";
                break;

            case 2:
                p.tipo = "Fuente Naciente";
                p.p1   = "1. ¿Está la naciente sin cerca de protección que impida el acceso de personas y animales a la captación (crítica)";
                p.p2   = "2. ¿Está la captación de la naciente desprotegida abierta a la contaminación ambiental? (sin tapa o sin tanque de captación)";
                p.p3   = "3. ¿Está la tapa de la captación construida en condiciones no sanitarias?";
                p.p4   = "4. ¿Están las paredes y las losas superior e inferior de la captación con grietas? (critica)";
                p.p5   = "5. ¿Se carece de canales para desviar el agua de escorrentía? (crítica)";
                p.p6   = "6. ¿Carece la captación de respiraderos o tubería de rebalse con rejilla de protección?";
                p.p7   = "7. ¿Se encuentran plantas (raíces, hojas, algas y otros) dentro de la captación de la naciente?";
                p.p8   = "8. ¿Existen aguas estancadas sobre o alrededor de la captación? (crítica)";
                p.p9   = "9. ¿Existe alguna fuente de contaminación alrededor de la captación? (Observar si aproximadamente a 200 metros a la redonda existen letrinas, animales, viviendas, basura)";
                p.p10  = "10. ¿Se encuentra la captación ubicada en zonas con actividad agrícola o industrial? (crítica)";

                break;

            case 3:
                p.tipo = "Pozos";
                p.p1   = "1. ¿Está el pozo sin cerca de protección que impida el acceso de personas y animales (crítica)";
                p.p2   = "2. ¿Está el pozo desprotegido abierto a la contaminación ambiental? (sin caseta o sin tapa). (critica)";
                p.p3   = "3. ¿Está la bomba en malas condiciones (sucia, mal funcionamiento)?";
                p.p4   = "4. ¿Se carece de la curva de bombeo del fabricante de la bomba?";
                p.p5   = "5. ¿Se carece de canales para desviar el agua de escorrentía? (crítica)";
                p.p6   = "6. ¿Se carece con un tubo de 25-38 mm de diámetro para efectuar la medición de niveles de agua?";
                p.p7   = "7. ¿Se encuentran plantas (raíces, hojas, algas y otros) dentro del pozo?";
                p.p8   = "8. ¿Existen aguas estancadas sobre o alrededor del pozo? (crítica)";
                p.p9   = "9. ¿Existe alguna fuente de contaminación alrededor del pozo? (Observar si aproximadamente a 200 metros a la redonda existen letrinas, animales, viviendas, basura)";
                p.p10  = "10. ¿Se encuentra el pozo ubicado en zonas con actividad agrícola o industrial? (crítica)";
                break;

            case 4:
                p.tipo = "Tanques de Almacenamiento";
                p.p1   = "1. ¿Están las paredes agrietadas (concreto) o herrumbradas (metálico)? (critica)";
                p.p2   = "2. ¿Está la tapa del tanque de almacenamiento, construida en  condiciones no sanitarias? (critica)";
                p.p3   = "3. ¿Es el borde de cemento alrededor del tanque menor a 1 metro?";
                p.p4   = "4. ¿Está ausente o fuera de operación el sistema de cloración? (critica)";
                p.p5   = "5. ¿Está el nivel del agua menor que 1/4 del volumen del tanque?";
                p.p6   = "6. ¿Existen sedimentos, algas u hongos dentro del tanque? ";
                p.p7   = "7. ¿Está ausente o defectuosa la cerca de protección?";
                p.p8   = "8. ¿Carece la tapa de un sistema seguro de cierre (candado, cadena, tornillo)?";
                p.p9   = "9. ¿Carece el tanque de respiraderos o tubería de rebalse con rejilla de protección? (critica)";
                p.p10  = "10. ¿Existe alguna fuente de contaminación alrededor del tanque (letrinas, animales, viviendas, basura, actividad agrícola o industrial) (critica)";
                break;

            case 5:
                p.tipo = "Conduccion";
                p.p1   = "1. ¿Existe alguna fuga en la línea de conducción? (crítica)";
                p.p2   = "2. ¿Se encuentra la línea de conducción descubierta, con riesgo de ser alterada?";
                p.p3   = "3. ¿Se encuentra la línea de conducción en lugares colindantes sin el adecuado soporte? (crítica)";
                p.p4   = "4. ¿Se encuentran debidamente separadas las aguas provenientes de manantiales y nacientes con respecto a las aguas superficiales? (crítica)";
                p.p5   = "5. ¿Existen variaciones significativas de presión en la red de conducción?";
                p.p6   = "6. ¿La unión de la línea de conducción con la toma de agua o captación está asegurada contra posibles contaminaciones? (crítica)";
                p.p7   = "7. ¿Carece de válvulas de control anterior a la entrada al tanque de almacenamiento?";
                p.p8   = "8. ¿Existen hongos, moho, etc. en la superficie de las tuberías?";
                p.p9   = "9. ¿Se Carece de sistema para purgar y desfogue de aire en la tubería de conducción? (crítica)";
                p.p10  = "10. ¿Carecen de un esquema del sistema de conducción (planos o croquis)?";
                break;

            case 6:
                p.tipo = "Red de Distribucion";
                p.p1   = "1. ¿Existen uniones ilícitas que pongan en riesgo la calidad del agua en la red de distribución? (crítica)";
                p.p2   = "2. ¿Se carece de micromedidores?";
                p.p3   = "3. ¿No se realizan pruebas periódicas de cloro residual en la red de distribución? (crítica)";
                p.p4   = "4. ¿Se observan fugas visibles en alguna parte de la red de distribución? (crítico)";
                p.p5   = "5. ¿Existen variaciones significativas de presión en la red de distribución?";
                p.p6   = "6. ¿Se carece de válvulas de control de presiones y para realizar reparaciones en la red de distribución sin necesidad de quitar todo el servicio de agua a la comunidad?";
                p.p7   = "7. ¿Existen interrupciones constantes en el servicio de distribución de agua? (crítica)";
                p.p8   = "8. ¿Se carece de sistema para purgar en la tubería de distribución?";
                p.p9   = "9. ¿Existe conexiones cruzadas de red de aguas negras con la red de distribución de agua potable? (crítica)";
                p.p10  = "10. ¿Se carece de un esquema del sistema de distribución (planos o croquis)?";
                break;

            case 7:
                p.tipo = "Quiebragradientes";
                p.p1   = "1. ¿Están las paredes agrietadas (concreto) o herrumbradas (metálico)? (crítica)";
                p.p2   = "2. ¿Está la tapa de inspección construida en  condiciones no sanitarias?";
                p.p3   = "3. ¿Es el borde de cemento alrededor del tanque menor a 1 metro?";
                p.p4   = "4. ¿Existen sedimentos, algas u hongos dentro del tanque? (crítico)";
                p.p5   = "5. ¿Está ausente o defectuosa la cerca de protección?";
                p.p6   = "6. ¿Carece la tapa de un sistema seguro de cierre (candado, cadena, tornillo)?";
                p.p7   = "7. ¿Carece el tanque de respiraderos o tubería de rebalse con rejilla de protección?";
                p.p8   = "8. ¿Existe alguna fuente de contaminación alrededor del tanque (letrinas, animales, viviendas, basura, actividad agrícola o industrial)? (crítico)";
                p.p9   = "9. ¿Se carece de válvula(s) de cierre para limpieza y/o reparación de la estructura?";
                p.p10  = "10. ¿La estructura  carece de pintura de protección tanto externa como interna?";
                break;

            case 8:
                p.tipo = "Desinfeccion";
                p.p1   = "1. ¿Se carece de una zona/caseta debidamente acondicionada para la preparación y aplicación del cloro? (critica)";
                p.p2   = "2. ¿Carece el acueducto de bitácora de la dosificación del cloro? (crítica)";
                p.p3   = "3. ¿Carece el operario de la capacitación necesaria para la preparación y aplicación de la cloración? (crítica)";
                p.p4   = "4. ¿Se carece del equipo de protección necesaria para el personal operativo del sistema de cloración? (crítica)";
                p.p5   = "5. ¿Se carece del equipo para la medición de cloro residual?";
                p.p6   = "6. ¿Se carece de registros de la concentración y del caudal de la solución de cloro preparada y aplicada? (critica)";
                p.p7   = "7. ¿Se carece de registros de los niveles de cloro residual en tanque(s) de almacenamiento?";
                p.p8   = "8. ¿Se carece de registros de caudal del agua a ser clorada (caudal que ingresa al tanque donde se homogeniza el cloro)?";
                p.p9   = "9. ¿Se carece de mantenimiento periódico del sistema de cloración?";
                p.p10  = "10. ¿Se carece de registros de consumo de cloro día/semana/mes/año?";
                break;

            case 9:
                p.tipo = "Planta de potabilizacion";
                p.p1   = "1. ¿Están las paredes agrietadas (concreto) o herrumbradas (metálico)? (critica)";
                p.p2   = "2. ¿Es el borde de cemento alrededor de los tanques menor a 1 metro?";
                p.p3   = "3. ¿Está la planta sin cerca de protección que impida el acceso de personas y animales? (crítica)";
                p.p4   = "4. ¿Carecen los operarios de la capacitación necesaria para la operación y mantenimiento de la planta? (critica)";
                p.p5   = "5. ¿Se carece de equipos para realizar las pruebas de laboratorio básicas para establecer la calidad del agua que ingresa a la planta parámetros Nivel I según la normatividad?";
                p.p6   = "6. ¿Se carece de registros de la calidad del agua que ingresa a la planta? (critica)";
                p.p7   = "7. ¿Se carece de registros de caudal del agua que ingresa a la planta? (critica)";
                p.p8   = "8. ¿Carece la planta de bitácora donde se anoten las actividades realizadas durante cada jornada de la cuadrilla de operadores? (critica)";
                p.p9   = "9. ¿Se carece de mantenimiento periódico de la planta?";
                p.p10  = "10. ¿Se carece de un esquema del sistema de potabilización (planos o croquis)?";
                break;
            }
            return(p);
        }
예제 #3
0
        public ActionResult buildPDF(List <InformeResponse> lista, string nombreAsada)
        {
            MemoryStream ms = new MemoryStream();
            PdfWriter    pw = new PdfWriter(ms);

            PdfDocument pdfDocument = new PdfDocument(pw);
            Document    doc         = new Document(pdfDocument, PageSize.LETTER, false);

            doc.Add(new Paragraph("Reporte " + nombreAsada).SetFontSize(20).SetTextAlignment(TextAlignment.CENTER).SetFontColor(new DeviceRgb(4, 124, 188)));
            foreach (InformeResponse item in lista)
            {
                Preguntas preguntasObj = TipoFormulario(item.tipo);

                doc.Add(new Paragraph(item.acueducto).SetFontSize(15).SetBold());
                doc.Add(new Paragraph("Fecha: " + item.fecha).SetFontSize(12));
                doc.Add(new Paragraph("Encargado: " + item.encargado).SetFontSize(12).SetPaddingBottom(2));
                doc.Add(new Paragraph("Respuestas ").SetFontSize(12).SetUnderline());

                var infra = JsonConvert.DeserializeObject <Dictionary <string, string> >(item.infraestructura);
                foreach (var kv in infra)
                {
                    if (kv.Key == "P1")
                    {
                        doc.Add(new Paragraph(preguntasObj.p1 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P2")
                    {
                        doc.Add(new Paragraph(preguntasObj.p2 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P3")
                    {
                        doc.Add(new Paragraph(preguntasObj.p3 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P4")
                    {
                        doc.Add(new Paragraph(preguntasObj.p4 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P5")
                    {
                        doc.Add(new Paragraph(preguntasObj.p5 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P6")
                    {
                        doc.Add(new Paragraph(preguntasObj.p6 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P7")
                    {
                        doc.Add(new Paragraph(preguntasObj.p7 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P8")
                    {
                        doc.Add(new Paragraph(preguntasObj.p8 + ": " + kv.Value).SetFontSize(10));
                    }
                    else if (kv.Key == "P9")
                    {
                        doc.Add(new Paragraph(preguntasObj.p9 + ": " + kv.Value).SetFontSize(10));
                    }
                }
                doc.Add(new Paragraph("Comentarios: " + item.comentarios).SetFontSize(12));
                doc.Add(new Paragraph("Tipo de formulario: " + preguntasObj.tipo).SetFontSize(12));
                Cell cell = new Cell();
                cell.Add(new Paragraph("Riesgo " + item.riesgo).SetBorder(new SolidBorder(colorRiesgo(item.riesgo), 1)).SetBackgroundColor(colorRiesgo(item.riesgo)).SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER).SetFontSize(14).SetBold());
                doc.Add(cell);

                WebClient webClient = new WebClient();
                byte[]    data      = webClient.DownloadData(item.imagen);

                ImageData imageData = ImageDataFactory.Create(data);
                Image     image     = new Image(imageData);
                var       s         = 0.4;
                float     fwi       = (float)s;
                float     fhei      = (float)s;
                doc.Add(image.Scale(fwi, fhei).SetHorizontalAlignment(HorizontalAlignment.CENTER).SetMarginBottom(15).SetMarginTop(15));
            }
            //imagen del logo de sersa
            var       s2         = 0.08;
            float     fwi2       = (float)s2;
            float     fhei2      = (float)s2;
            WebClient webClient2 = new WebClient();

            byte[]    data2      = webClient2.DownloadData(logoletra);
            ImageData imageData2 = ImageDataFactory.Create(data2);
            Image     image2     = new Image(imageData2);
            Paragraph header     = new Paragraph("");

            header.Add(image2.Scale(fwi2, fhei2).SetMarginBottom(15));


            //imagen del logo de TEC
            var       s3         = 0.4;
            float     fwi3       = (float)s3;
            float     fhei3      = (float)s3;
            WebClient webClient3 = new WebClient();

            byte[]    data3      = webClient3.DownloadData(logotec);
            ImageData imageData3 = ImageDataFactory.Create(data3);
            Image     image3     = new Image(imageData3);
            Paragraph header2    = new Paragraph("");

            header2.Add(image3.Scale(fwi3, fhei3)).SetMarginBottom(10);



            for (int i = 1; i <= pdfDocument.GetNumberOfPages(); i++)
            {
                Rectangle pageSize = pdfDocument.GetPage(i).GetPageSize();
                float     x1       = 20;
                float     y1       = pageSize.GetTop() - 55;
                float     x2       = pageSize.GetRight() - 30;
                float     y2       = pageSize.GetTop() - 40;
                doc.ShowTextAligned(header, x1, y1, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
                doc.ShowTextAligned(header2, x2, y2, i, TextAlignment.RIGHT, VerticalAlignment.BOTTOM, 0);
            }



            doc.Close();

            byte[] bytesStream = ms.ToArray();
            ms = new MemoryStream();
            ms.Write(bytesStream, 0, bytesStream.Length);
            ms.Position = 0;

            return(new FileStreamResult(ms, "application/pdf"));
        }