Esempio n. 1
0
        public PagareContrato TraeDatosContratoPagare(PagareContrato pagareContrato)
        {
            Guid x = Guid.NewGuid();

            manager = new Manager.Manager();
            Solicitudes solicitudes   = new Solicitudes();
            var         pagareCon     = new List <PagareContrato>();
            var         datosContrato = new List <PagareContrato>();
            string      xClase        = string.Format("{0}|{1}", MethodBase.GetCurrentMethod().Module.Name, MethodBase.GetCurrentMethod().DeclaringType.Name);
            string      xProceso      = MethodBase.GetCurrentMethod().Name;

            var dto_excepcion = new UTL_TRA_EXCEPCION
            {
                STR_CLASE      = xClase,
                STR_EVENTO     = xProceso,
                STR_APLICATIVO = ConfigurationManager.AppSettings["APLICATIVO"].ToString(),
                STR_SERVIDOR   = System.Net.Dns.GetHostName(),
                STR_PARAMETROS = JsonConvert.SerializeObject(pagareContrato),
                FEC_CREACION   = DateTime.Now
            };

            try
            {
                solicitudes.IdTipoIdentificacion = pagareContrato.IdTipoIdentificacion;
                solicitudes.Identificacion       = pagareContrato.Identificacion;

                var dto_DatosCredito = manager.CargarDatosCredito(solicitudes);

                if (dto_DatosCredito.Any())
                {
                    //pagareCon = manager.TraeDocumentoPagare();
                    pagareContrato.IdSolicitud       = dto_DatosCredito.FirstOrDefault().IdSolicitud;
                    pagareContrato.fechagenerapagare = DateTime.Today;
                    datosContrato = manager.PagareContrato(pagareContrato);
                    return(pagareContrato = datosContrato[0]);
                }
            }
            catch (Exception ex)
            {
                dto_excepcion.STR_MENSAJE = ex.Message;
                DynamicSqlDAO.guardaExcepcion(dto_excepcion, GlobalClass.connectionString.Where(a => a.Key == infDto.STR_COD_PAIS).FirstOrDefault().Value);
            }
            return(null);
        }
Esempio n. 2
0
        public string CrearPdf(PagareContrato pagareContrato)
        {
            Guid x = Guid.NewGuid();

            manager = new Manager.Manager();
            Utilitario  Util          = new Utilitario();
            Solicitudes solicitudes   = new Solicitudes();
            var         pagareCon     = new List <PagareContrato>();
            var         datosContrato = new List <PagareContrato>();

            string xClase      = string.Format("{0}|{1}", MethodBase.GetCurrentMethod().Module.Name, MethodBase.GetCurrentMethod().DeclaringType.Name);
            string xProceso    = MethodBase.GetCurrentMethod().Name;
            string strHostName = System.Net.Dns.GetHostName();
            //IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); <-- Obsolete
            IPHostEntry ipHostInfo = Dns.GetHostEntry(strHostName);
            IPAddress   ipAddress  = ipHostInfo.AddressList[0];

            Tab_ConfigSys dto_Config = new Tab_ConfigSys();

            dto_Config.llave_Config1 = "SERVICIO";
            dto_Config.llave_Config2 = "CONFIGURACION";
            dto_Config.llave_Config3 = "SERVIDOR";
            dto_Config.llave_Config4 = "DIRECTORIO";
            dto_Config.llave_Config5 = "CONTRATOPAGARE";

            solicitudes.IdTipoIdentificacion = pagareContrato.IdTipoIdentificacion;
            solicitudes.Identificacion       = pagareContrato.Identificacion;

            var dto_DatosCredito = manager.CargarDatosCredito(solicitudes);

            var    dto_interval = manager.ConsultaConfiUrlImagen(dto_Config);
            string URL          = dto_interval.Where(y => y.llave_Config5 == "CONTRATOPAGARE").Select(y => y.Dato_Char1).FirstOrDefault();

            var dto_excepcion = new UTL_TRA_EXCEPCION
            {
                STR_CLASE      = xClase,
                STR_EVENTO     = xProceso,
                STR_APLICATIVO = ConfigurationManager.AppSettings["APLICATIVO"].ToString(),
                STR_SERVIDOR   = ipAddress.ToString(),
                STR_PARAMETROS = JsonConvert.SerializeObject(pagareContrato),
                FEC_CREACION   = DateTime.Now
            };

            try
            {
                if (dto_DatosCredito.Any())
                {
                    pagareCon = manager.TraeDocumentoPagare();
                    pagareContrato.IdSolicitud       = dto_DatosCredito.FirstOrDefault().IdSolicitud;
                    pagareContrato.fechagenerapagare = DateTime.Today;
                    datosContrato           = manager.PagareContrato(pagareContrato);
                    pagareContrato.Pagare   = pagareCon.FirstOrDefault().Pagare;
                    pagareContrato.Contrato = pagareCon.FirstOrDefault().Contrato;

                    string Contrato = pagareContrato.Contrato;
                    string Pagare   = pagareContrato.Pagare;
                    string fileName = @"Pagare y contrato_" + datosContrato[0].Nombre + ".docx";

                    //Remplazo en la cadena los datos para generar el contrato
                    Contrato = Contrato.Replace("<Nombre>", datosContrato[0].Nombre);
                    Contrato = Contrato.Replace("<Identificacion>", datosContrato[0].Identificacion);
                    Contrato = Contrato.Replace("<MontoProductoLetras>", datosContrato[0].MontoProductoLetras);
                    Contrato = Contrato.Replace("<Moneda>", datosContrato[0].Moneda);
                    Contrato = Contrato.Replace("<MontoProducto>", Convert.ToString(datosContrato[0].MontoProducto));
                    Contrato = Contrato.Replace("<CantidadCuotas>", Convert.ToString(datosContrato[0].CantidadCuotas));
                    Contrato = Contrato.Replace("<Frecuencia>", datosContrato[0].Frecuencia);
                    Contrato = Contrato.Replace("<Cuota>", Convert.ToString(datosContrato[0].Cuota));
                    Contrato = Contrato.Replace("<FechaPrimerPagoLetras>", datosContrato[0].FechaPrimerPagoLetras);
                    Contrato = Contrato.Replace("<FechaUltimoPagoLetras>", datosContrato[0].FechaUltimoPagoLetras);
                    Contrato = Contrato.Replace("<Interes>", Convert.ToString(datosContrato[0].Interes));
                    Contrato = Contrato.Replace("<InteresLetras>", datosContrato[0].InteresLetras);
                    Contrato = Contrato.Replace("<CtaCliente>", datosContrato[0].CtaCliente);
                    Contrato = Contrato.Replace("<FechaHoy>", datosContrato[0].FechaHoy);
                    Contrato = Contrato.Replace("<CuotaenLetras>", datosContrato[0].CuotaenLetras);
                    Contrato = Contrato.Replace("<Frecuencia2>", datosContrato[0].Frecuencia2);
                    Contrato = Contrato.Replace("<Frecuencia3>", datosContrato[0].Frecuencia3);
                    Contrato = Contrato.Replace("<CantidadCuotasLetras>", datosContrato[0].CantidadCuotasLetras);

                    //Reemplazo los datos para generar el Pagaré
                    Pagare = Pagare.Replace("<Nombre>", datosContrato[0].Nombre);
                    Pagare = Pagare.Replace("<Identificacion>", datosContrato[0].Identificacion);
                    Pagare = Pagare.Replace("<MontoProductoLetras>", datosContrato[0].MontoProductoLetras);
                    Pagare = Pagare.Replace("<Moneda>", datosContrato[0].Moneda);
                    Pagare = Pagare.Replace("<MontoProductoPagare>", Convert.ToString(datosContrato[0].MontoProductoPagare));
                    Pagare = Pagare.Replace("<MontoProductoLetrasPagare>", Convert.ToString(datosContrato[0].MontoProductoLetrasPagare));
                    Pagare = Pagare.Replace("<CantidadCuotas>", Convert.ToString(datosContrato[0].CantidadCuotas));
                    Pagare = Pagare.Replace("<Frecuencia>", datosContrato[0].Frecuencia);
                    Pagare = Pagare.Replace("<Cuota>", Convert.ToString(datosContrato[0].Cuota));
                    Pagare = Pagare.Replace("<FechaPrimerPagoLetras>", datosContrato[0].FechaPrimerPagoLetras);
                    Pagare = Pagare.Replace("<FechaUltimoPagoLetras>", datosContrato[0].FechaUltimoPagoLetras);
                    Pagare = Pagare.Replace("<Interes>", Convert.ToString(datosContrato[0].Interes));
                    Pagare = Pagare.Replace("<InteresLetras>", datosContrato[0].InteresLetras);
                    Pagare = Pagare.Replace("<CtaCliente>", datosContrato[0].CtaCliente);
                    Pagare = Pagare.Replace("<FechaHoy>", datosContrato[0].FechaHoy);
                    Pagare = Pagare.Replace("<CuotaenLetras>", datosContrato[0].CuotaenLetras);
                    Pagare = Pagare.Replace("<CantidadCuotasLetras>", datosContrato[0].CantidadCuotasLetras);
                    Pagare = Pagare.Replace("<Frecuencia2>", datosContrato[0].Frecuencia2);
                    Pagare = Pagare.Replace("<pagoProximasCuotas>", datosContrato[0].PagoProximasCuotas);

                    //creamos la imagen editada de la firma para agregarla luego al documento
                    if (datosContrato[0].FotoFirma != "")
                    {
                        editarImagen(datosContrato[0].FotoFirma);
                    }

                    //Doy formato al archivo PDF
                    iTextSharp.text.Font fontHeader_1 = FontFactory.GetFont("Calibri", 9, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));
                    //Genero el documento PDF con la libreria iTextSharp
                    using (Document pdfDoc = new Document(PageSize.LETTER, 25f, 25f, 25f, 25f))
                    {
                        iTextSharp.text.Document oDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER);
                        //Escribo el documento en el archivo PDF generado
                        //PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream);

                        var OutputPathDocumento = AppDomain.CurrentDomain.BaseDirectory + "/Machote/archivos/Documento-" + datosContrato.FirstOrDefault().Nombre.ToString() + x + ".pdf";
                        using (PdfWriter wri = PdfWriter.GetInstance(pdfDoc, new FileStream(OutputPathDocumento, FileMode.Create)))
                        {
                            pdfDoc.Open();

                            var espacio = new Paragraph(" ");
                            //Ingreso el texto que corresponde al Contrato
                            var tituloContrato = new Paragraph("Solicitud N°: " + datosContrato.FirstOrDefault().Id.ToString(), FontFactory.GetFont("Calibri", 14, BaseColor.BLACK));
                            tituloContrato.Alignment = Element.ALIGN_CENTER;
                            tituloContrato.Font.Size = 14;
                            pdfDoc.Add(tituloContrato);
                            pdfDoc.Add(espacio);
                            var Contratopdf = new Paragraph(Contrato, fontHeader_1);
                            Contratopdf.Alignment = Element.ALIGN_JUSTIFIED;
                            Contratopdf.Font.Size = 8;
                            pdfDoc.Add(Contratopdf);


                            //si existe foto de la firma lo agregamos al contrato
                            if (datosContrato[0].FotoFirma != "")
                            {
                                //creamos la imagen de la firma para el PDF
                                iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(@AppDomain.CurrentDomain.BaseDirectory + @"\Machote\FotoFirma-Copia-Editada.png");
                                imagen.BorderWidth = 0;
                                imagen.Alignment   = Element.ALIGN_LEFT;
                                float percentage = 0.0f;
                                percentage = 70 / imagen.Width;
                                imagen.ScalePercent(percentage * 100);

                                //creamos una tabla para agregar la imagen
                                PdfPTable tablaImagen = new PdfPTable(1);;
                                PdfPCell  c1          = new PdfPCell();
                                PdfPCell  c2          = new PdfPCell(imagen);
                                c1.Border              = 0;
                                c2.Border              = 0;
                                c2.VerticalAlignment   = Element.ALIGN_MIDDLE;
                                c2.HorizontalAlignment = Element.ALIGN_LEFT;
                                tablaImagen.AddCell(c1); //celda con espacio a la derecha
                                tablaImagen.AddCell(c2); //celda con la imagen de la firma

                                // Insertamos la tabla con la imagen de la firma en el contrato
                                pdfDoc.Add(tablaImagen);
                            }
                            else
                            {
                                pdfDoc.Add(espacio);
                                pdfDoc.Add(espacio);
                            }

                            //Agregamos la info final del contrato
                            string textoFinal   = "               ……………………………………………                                                                                          ……………………………………………\n                                   El DEUDOR                                                                                                                                   LA ACREEDORA\n\n\n                                    " + datosContrato.FirstOrDefault().Identificacion.ToString() + "\n               …………………………………………      \n                                     CÉDULA ";
                            var    parrafoFinal = new Paragraph(textoFinal, fontHeader_1);
                            pdfDoc.Add(parrafoFinal);

                            //Ingreso el titulo del Pagaré
                            pdfDoc.NewPage();
                            var SubtituloPdf = new Paragraph("Pagaré N°: " + datosContrato.FirstOrDefault().Id.ToString(), FontFactory.GetFont("Calibri", 14, BaseColor.BLACK));
                            SubtituloPdf.Alignment = Element.ALIGN_CENTER;
                            SubtituloPdf.Font.Size = 14;
                            pdfDoc.Add(SubtituloPdf);
                            pdfDoc.Add(espacio);
                            //Ingreso Texto de Pagare
                            var PagarePdf = new Paragraph(Pagare, FontFactory.GetFont("Calibri", 10, BaseColor.BLACK));
                            PagarePdf.Alignment = Element.ALIGN_JUSTIFIED;
                            PagarePdf.Font.Size = 10;
                            pdfDoc.Add(PagarePdf);

                            if (datosContrato[0].FotoFirma != "")
                            {
                                iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(@AppDomain.CurrentDomain.BaseDirectory + @"\Machote\FotoFirma-Copia-Editada.png");
                                imagen.BorderWidth = 0;
                                imagen.Alignment   = Element.ALIGN_LEFT;
                                float percentage = 0.0f;
                                percentage = 70 / imagen.Width;
                                imagen.ScalePercent(percentage * 100);
                                // Insertamos la imagen de la firma en el Pagare
                                PdfPTable tablaImagenPagare       = new PdfPTable(5);;
                                iTextSharp.text.Phrase fraseFirma = new iTextSharp.text.Phrase("Firma Deudor:");
                                fraseFirma.Font.Size = 10;
                                PdfPCell espacioCelda = new PdfPCell();
                                PdfPCell celdaTexto   = new PdfPCell(fraseFirma);
                                PdfPCell celdaFirma   = new PdfPCell(imagen);
                                espacioCelda.Border            = 0;
                                celdaTexto.Border              = 0;
                                celdaTexto.VerticalAlignment   = Element.ALIGN_MIDDLE;
                                celdaTexto.HorizontalAlignment = Element.ALIGN_LEFT;
                                celdaFirma.Border              = 0;
                                celdaFirma.VerticalAlignment   = Element.ALIGN_MIDDLE;
                                celdaFirma.HorizontalAlignment = Element.ALIGN_LEFT;
                                tablaImagenPagare.AddCell(celdaTexto);   //celda con el texto de la firma
                                tablaImagenPagare.AddCell(celdaFirma);   //celda con la imagen de la firma
                                tablaImagenPagare.AddCell(espacioCelda); //celda con espacio en blanco
                                tablaImagenPagare.AddCell(espacioCelda); //celda con espacio en blanco
                                tablaImagenPagare.AddCell(espacioCelda); //celda con espacio en blanco
                                pdfDoc.Add(tablaImagenPagare);
                            }
                            else
                            {
                                var parrafoFirma = new Paragraph("\n\n                     Firma Deudor: \n\n\n", fontHeader_1);
                                parrafoFirma.Font.Size = 10;
                                pdfDoc.Add(parrafoFirma);
                            }
                            //Agregamos la info final del contrato
                            string textoFinalPagare   = "                     Nombre Completo:   " + datosContrato[0].Nombre + "\n\n\n                     Número de Cédula:   " + datosContrato[0].Identificacion;
                            var    parrafoFinalPagare = new Paragraph(textoFinalPagare, fontHeader_1);
                            parrafoFinalPagare.Font.Size = 10;
                            pdfDoc.Add(parrafoFinalPagare);
                            //Cierro el archivo PDF
                            pdfDoc.Close();
                            wri.Close();
                        }
                        oDoc.Close();
                    }

                    //Proceso para crear y agregar el formulario BCCR a el pdf final
                    var    path          = @AppDomain.CurrentDomain.BaseDirectory + @"\Machote\formulario-bac.html";
                    var    pathOriginal  = @AppDomain.CurrentDomain.BaseDirectory + @"\Machote\formulario-bac-sin-remplazo.html";
                    string html          = File.ReadAllText(pathOriginal);
                    string EncodedString = "";
                    string ret           = "";
                    string DecodedStringFormulario;
                    string htmlOriginal = html; //este sera el html orinal sin hacer los remplazas para luego de todo el proceso volver a guaradr el archivo html con los valores originales
                    using (StringWriter writer = new StringWriter())
                    {
                        HttpUtility.HtmlEncode(html, writer);

                        //Server.HtmlEncode(html, writer);
                        EncodedString           = html.ToString();
                        ret                     = completarFormularioDomiciliacion(EncodedString, datosContrato[0]); // replazamos el html con la info dinamica
                        DecodedStringFormulario = HttpUtility.HtmlDecode(ret);                                       //Server.HtmlDecode(ret);
                        writer.Close();
                    }
                    using (StreamWriter sw = new StreamWriter(path)) //sobrescribimos el html con la nueva info
                    {
                        sw.WriteLine(DecodedStringFormulario);
                        sw.Close();
                    }
                    //Generamos el pdf del formulario caon base en el archivo html

                    NReco.PdfGenerator.HtmlToPdfConverter pdfFormulario = new NReco.PdfGenerator.HtmlToPdfConverter();
                    pdfFormulario.PageHeight = 279;
                    pdfFormulario.PageWidth  = 216;
                    pdfFormulario.GeneratePdfFromFile(path, null, @AppDomain.CurrentDomain.BaseDirectory + @"\Machote\archivos\Formulario-" + datosContrato.FirstOrDefault().Nombre + x + ".pdf");

                    //llamamos al metodo interno mergePdfs para unir los pdfs del contrato, el pagare y el formulario
                    string rutaDocumentoFinal = URL + "/" + pagareContrato.Identificacion + "/" + "Contrato_Pagare_" + pagareContrato.Identificacion + ".pdf";


                    if (Util.ValidarFichero(rutaDocumentoFinal) == true)
                    {
                        rutaDocumentoFinal = Util.Renamefile(rutaDocumentoFinal, pagareContrato.Identificacion, ".pdf");
                        string[] archivos = { AppDomain.CurrentDomain.BaseDirectory + "/Machote/archivos/Documento-" + datosContrato.FirstOrDefault().Nombre + x + ".pdf", @AppDomain.CurrentDomain.BaseDirectory + @"\Machote\archivos\Formulario-" + datosContrato.FirstOrDefault().Nombre + x + ".pdf" };
                        mergePdfs(rutaDocumentoFinal, archivos);
                    }
                    //volvemos a guaradar el archivo html Original(sin los valores remplazados)
                    using (StreamWriter sw = new StreamWriter(path))
                    {
                        sw.WriteLine(htmlOriginal);
                        sw.Close();
                    }
                    File.Delete(AppDomain.CurrentDomain.BaseDirectory + "/Machote/archivos/Documento-" + datosContrato.FirstOrDefault().Nombre + x + ".pdf");
                    File.Delete(@AppDomain.CurrentDomain.BaseDirectory + @"\Machote\archivos\Formulario-" + datosContrato.FirstOrDefault().Nombre + x + ".pdf");
                    File.Delete(@AppDomain.CurrentDomain.BaseDirectory + @"\Machote\FotoFirma-Copia-Editada.png");

                    return(rutaDocumentoFinal);
                }
            }
            catch (Exception ex)
            {
                dto_excepcion.STR_MENSAJE = ex.Message;
                DynamicSqlDAO.guardaExcepcion(dto_excepcion, GlobalClass.connectionString.Where(a => a.Key == infDto.STR_COD_PAIS).FirstOrDefault().Value);
                pagareContrato.Mensaje = "ERR";
            }

            return(null);
        }