public static CartaOfertaPdfViewModel ConvertToCartaOfertaPdfIndexViewModel(this Candidatura candidatura,
                                                                                    string nombreEntregaCarta, string cargoEntregaCarta, string telefono, string mailTo, string atencionTelefonica, string ayudaComedor, string fax)
        {
            var cartaOfertaViewModel = new CartaOfertaPdfViewModel()
            {
                CandidaturaId = candidatura.CandidaturaId,
                Centro        = candidatura.Usuario.Centro != null ? candidatura.Usuario.Centro.Nombre : string.Empty,
                CartaOfertaId = candidatura.CartaOfertas.SingleOrDefault(x => x.CandidaturaId == candidatura.CandidaturaId) != null?
                                candidatura.CartaOfertas.SingleOrDefault(x => x.CandidaturaId == candidatura.CandidaturaId).CartaOfertaId : 0,
                //fecha = candidatura.CartaOfertas.SingleOrDefault(x => x.CandidaturaId == candidatura.CandidaturaId).FechaCartaOferta.ToLongDateString(),
                fecha = "",
                //la fecha en que se agendo la carta oferta
                NombreCandidato = string.Concat(candidatura.Candidato.Nombre != null ? candidatura.Candidato.Nombre.TrimEnd() : string.Empty, " ",
                                                candidatura.Candidato.Apellidos != null ? candidatura.Candidato.Apellidos.TrimEnd() : string.Empty),
                Categoria          = GetNombreCategoriaCOByCategoria(candidatura.Categoria.Nombre),
                SalarioBruto       = (ayudaComedor != "" && candidatura.SalarioPropuesto.HasValue) ? String.Format("{0:0,0.00}", Convert.ToDouble(candidatura.SalarioPropuesto.Value) + Convert.ToDouble(ayudaComedor)) : String.Format("{0:0,0.00}", 0),
                NombreEntregaCarta = nombreEntregaCarta,
                CargoEntregaCarta  = cargoEntregaCarta,
                Telefono           = telefono,
                MailTo             = mailTo,
                Atencion           = atencionTelefonica,
                AyudaComedor       = ayudaComedor,
                SalarioNeto        = String.Format("{0:0,0.00}", candidatura.SalarioPropuesto.Value),
                Fax = fax
            };

            cartaOfertaViewModel.fecha        = cartaOfertaViewModel.fecha.Substring(cartaOfertaViewModel.fecha.IndexOf(",") + 1);
            cartaOfertaViewModel.LogoCabecera = string.Concat(HttpContext.Current.Server.MapPath(RutaImagenes), "cabecera.png");
            cartaOfertaViewModel.imagenFirma  = string.Concat(HttpContext.Current.Server.MapPath(RutaImagenes), "firma.png");
            return(cartaOfertaViewModel);
        }
Beispiel #2
0
        public static byte[] GenerarCartaOfertaForCartaOfertaPdfViewModel(string TituloDocumento, string NombreCreador,
                                                                          CartaOfertaPdfViewModel CartaOfertaPdfViewModel, string textoCartaOfertaPDF)
        {
            //Creamos el documento con el tamaño de página tradicional
            Document doc = new Document(PageSize.A4, 0, 0, 0, 0);

            // Indicar donde vamos a guardar el documento
            var buffer = new MemoryStream();

            if (textoCartaOfertaPDF != "")
            {
                PdfWriter writer = PdfWriter.GetInstance(doc, buffer);

                // Le colocamos el título y el autor
                doc.AddTitle(TituloDocumento);
                doc.AddCreator(NombreCreador);
                // Abrimos el archivo
                doc.Open();

                //obtemenos el texto del documento del recurso
                string[]      parrafosCartaOferta = textoCartaOfertaPDF.Split('|');
                string        parrafoTexto        = string.Empty;
                string        parrafoParametros   = string.Empty;
                string[]      nombresParametros   = null;
                List <string> datos        = new List <string>();
                string        valor        = string.Empty;
                var           documentoPDF = new StringBuilder();


                foreach (string parrafo in parrafosCartaOferta)
                {
                    if (parrafo != string.Empty)
                    {
                        var inicio = 0;
                        //sustituimos los parametros
                        if (parrafo.IndexOf('~') > inicio)
                        {
                            parrafoTexto      = parrafo.Substring(inicio, parrafo.IndexOf('~'));
                            parrafoParametros = parrafo.Substring(parrafo.IndexOf('~') + 1);
                        }
                        else
                        {
                            parrafoTexto      = parrafo;
                            parrafoParametros = string.Empty;
                        }

                        if (parrafoParametros != string.Empty)
                        {
                            nombresParametros = parrafoParametros.Split('~');

                            foreach (string nombreParametro in nombresParametros)
                            {
                                var propiedad = CartaOfertaPdfViewModel.GetType().GetProperty(nombreParametro);
                                if (propiedad != null)
                                {
                                    valor = propiedad.GetValue(CartaOfertaPdfViewModel) != null?propiedad.GetValue(CartaOfertaPdfViewModel).ToString() : "";
                                }
                                else
                                {
                                    valor = "Valor del parametro no encontrado en el modelo";
                                }

                                datos.Add(valor);
                            }
                        }

                        parrafoTexto = string.Format(parrafoTexto, datos.ToArray());
                        documentoPDF.AppendLine(parrafoTexto);
                        datos.Clear();
                    }
                }

                using (var srHtml = new StringReader(documentoPDF.ToString()))
                {
                    //Interpretar el HTML
                    //iTextSharp.text.xml.
                    //descomentar
                    iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
                }


                doc.Close();
            }

            return(buffer.ToArray());
        }