private void GenerarReporte()
        {
            try
            {
                var centro = new cCentro().Obtener(GlobalVar.gCentro).FirstOrDefault();

                var datosReporte = new List <cReporteDatos>();
                datosReporte.Add(new cReporteDatos()
                {
                    Encabezado1 = Parametro.ENCABEZADO1.Trim(),
                    Encabezado2 = Parametro.ENCABEZADO2.Trim(),
                    Encabezado3 = Parametro.ENCABEZADO3.Trim(),
                    Titulo      = "RELACIÓN DE INTERNOS",
                    Logo1       = Parametro.REPORTE_LOGO1,
                    Logo2       = Parametro.REPORTE_LOGO2,
                    Centro      = centro.DESCR.Trim().ToUpper(),
                });


                #region armar reporte
                var hoy     = Fechas.GetFechaDateServer;
                var f       = new Fechas();
                var reporte = new List <cReporteListadoGeneralDelito>();
                var lista   = new cIngreso().ReporteGeneralDelito(GlobalVar.gCentro, OrdenarPor, Ordenamiento);
                if (lista != null)
                {
                    foreach (var w in lista)
                    {
                        reporte.Add(new cReporteListadoGeneralDelito()
                        {
                            Expediente     = string.Format("{0}/{1}", w.ID_ANIO, w.ID_IMPUTADO),
                            Ingreso        = w.ID_INGRESO.ToString(),
                            Edad           = IncluirEdad ? (short?)f.CalculaEdad(w.NACIMIENTO_FECHA, hoy) : 0,
                            NombreCompleto = string.Format("{0} {1} {2}",
                                                           !string.IsNullOrEmpty(w.NOMBRE) ? w.NOMBRE.Trim() : string.Empty,
                                                           !string.IsNullOrEmpty(w.PATERNO) ? w.PATERNO.Trim() : string.Empty,
                                                           !string.IsNullOrEmpty(w.MATERNO) ? w.MATERNO.Trim() : string.Empty),
                            Ubicacion = string.Format("{0}-{1}-{2}-{3}",
                                                      !string.IsNullOrEmpty(w.EDIFICIO) ? w.EDIFICIO.Trim() : string.Empty,
                                                      !string.IsNullOrEmpty(w.SECTOR) ? w.SECTOR.Trim() : string.Empty,
                                                      !string.IsNullOrEmpty(w.CELDA) ? w.CELDA.Trim() : string.Empty,
                                                      w.CAMA),
                            Fuero         = string.IsNullOrEmpty(w.FUERO) ? (w.FUERO == "C" ? "COMUN" : w.FUERO == "F" ? "FEDERAL" : "DESCONOCIDO") : "DESCONOCIDO",
                            Situacion     = w.CLASIFICACION_JURIDICA,
                            FechaIngreso  = w.FEC_INGRESO_CERESO,
                            DelitoIngreso = w.INGRESO_DELITO,
                            Foto          = IncluirFoto ? (w.FOTO != null ? w.FOTO : new Imagenes().getImagenPerson()) : null,
                            Alias         = w.ALIAS,
                        });
                    }
                }
                #endregion

                #region Reporte
                Reporte.LocalReport.ReportPath = "Reportes/rListadoGeneralDelito.rdlc";
                Reporte.LocalReport.DataSources.Clear();

                var rds2 = new Microsoft.Reporting.WinForms.ReportDataSource();
                rds2.Name  = "DataSet2";
                rds2.Value = datosReporte;
                Reporte.LocalReport.DataSources.Add(rds2);

                var rds1 = new Microsoft.Reporting.WinForms.ReportDataSource();
                rds1.Name  = "DataSet1";
                rds1.Value = reporte;
                Reporte.LocalReport.DataSources.Add(rds1);

                #region Parametros
                Reporte.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("MostrarEdad", IncluirEdad ? "N" : "S"));
                Reporte.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("MostrarFoto", IncluirFoto ? "N" : "S"));
                #endregion

                //cReporteListadoGeneralDelito
                #region comentado
                //ListValue = new cIngreso().GetData().Where(w => w.ID_UB_CENTRO == GlobalVar.gCentro && !Parametro.ESTATUS_ADMINISTRATIVO_INACT.Contains(w.ID_ESTATUS_ADMINISTRATIVO)).GroupBy(g => new { g.ID_ANIO, g.ID_IMPUTADO }).SelectMany(sm => sm.Where(w => w.ID_INGRESO == sm.Max(m => m.ID_INGRESO))).AsEnumerable().Select(s => new cReporteListadoGeneralDelito()
                //{
                //    ID_ANIO = s.ID_ANIO,
                //    ID_IMPUTADO = s.ID_IMPUTADO,
                //    Expediente = s.ID_ANIO + "\\" + s.ID_IMPUTADO,
                //    NombreCompleto = (s.IMPUTADO.PATERNO != null ? s.IMPUTADO.PATERNO.Trim() : string.Empty) + " " + (s.IMPUTADO.MATERNO != null ? s.IMPUTADO.MATERNO.Trim() : string.Empty) + " " + (s.IMPUTADO.NOMBRE != null ? s.IMPUTADO.NOMBRE.Trim() : string.Empty),
                //    Ingreso = s.ID_INGRESO.ToString(),
                //    Alias = getAlias(s.IMPUTADO.ALIAS),// "preguntar por alias",
                //    DelitoIngreso = s.INGRESO_DELITO != null ? s.INGRESO_DELITO.DESCR : string.Empty,
                //    Fuero = "preguntar por fuero",
                //    Situacion = s.CLASIFICACION_JURIDICA != null ? s.CLASIFICACION_JURIDICA.DESCR.Trim() : string.Empty,
                //    Ubicacion = s.CAMA != null ? s.CAMA.CELDA.SECTOR.EDIFICIO.DESCR.Trim() + "-" + s.CAMA.CELDA.SECTOR.DESCR.Trim() + s.CAMA.CELDA.ID_CELDA.Trim() + "-" + (string.IsNullOrEmpty(s.CAMA.DESCR) ? s.CAMA.ID_CAMA.ToString().Trim() : s.CAMA.ID_CAMA + " " + s.CAMA.DESCR.Trim()) : string.Empty,
                //    Foto = IncluirFoto ? s.INGRESO_BIOMETRICO.Any(w => w.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_SEGUIMIENTO && w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG) ? s.INGRESO_BIOMETRICO.Where(w => w.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_SEGUIMIENTO && w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG).FirstOrDefault().BIOMETRICO : null : null,


                //    FechaIngreso = s.FEC_INGRESO_CERESO,
                //    Edad = IncluirEdad ? new Fechas().CalculaEdad(s.IMPUTADO.NACIMIENTO_FECHA) : new Nullable<short>()
                //}).ToList();

                //switch (SelectedValue)
                //{
                //    case OrderByValues.Ninguno:
                //        break;
                //    case OrderByValues.Numero_Expediente:
                //        if (Ordenamiento)
                //            rds1.Value = ListValue.OrderBy(o => o.ID_ANIO).ThenBy(t => t.ID_IMPUTADO).ToList();
                //        else
                //            rds1.Value = ListValue.OrderByDescending(o => o.ID_ANIO).ThenByDescending(t => t.ID_IMPUTADO).ToList();
                //        break;
                //    case OrderByValues.Nombre_Interno:
                //        if (Ordenamiento)
                //            rds1.Value = ListValue.OrderBy(o => o.NombreCompleto).ToList();
                //        else
                //            rds1.Value = ListValue.OrderByDescending(o => o.Expediente).ToList();
                //        break;
                //    case OrderByValues.Fecha_Ingreso:
                //        if (Ordenamiento)
                //            rds1.Value = ListValue.OrderBy(o => o.FechaIngreso).ToList();
                //        else
                //            rds1.Value = ListValue.OrderByDescending(o => o.Expediente).ToList();
                //        break;
                //    case OrderByValues.Ubicacion:
                //        if (Ordenamiento)
                //            rds1.Value = ListValue.OrderBy(o => o.Ubicacion).ToList();
                //        else
                //            rds1.Value = ListValue.OrderByDescending(o => o.Expediente).ToList();
                //        break;
                //    case OrderByValues.Clasificacion_Juridica:
                //        if (Ordenamiento)
                //            rds1.Value = ListValue.OrderBy(o => o.DelitoIngreso).ToList();
                //        else
                //            rds1.Value = ListValue.OrderByDescending(o => o.Expediente).ToList();
                //        break;
                //    default:
                //        break;
                //}

                //Reporte.LocalReport.DataSources.Add(rds1);
                #endregion

                Application.Current.Dispatcher.Invoke((Action)(delegate
                {
                    Reporte.RefreshReport();
                }));
                #endregion
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al generar reporte", ex);
            }
        }
        private void ImprimirDocumento()
        {
            try
            {
                if (SelectedImputadoDocumento != null)
                {
                    var centro     = new cCentro().Obtener(GlobalVar.gCentro).FirstOrDefault();
                    var parametros = new Dictionary <string, string>();
                    parametros.Add("<<centro>>", centro.DESCR.Trim());
                    parametros.Add("<<nombre>>", string.Format("{0} {1} {2}",
                                                               !string.IsNullOrEmpty(Imputado.NOMBRE) ? Imputado.NOMBRE.Trim() : string.Empty,
                                                               !string.IsNullOrEmpty(Imputado.PATERNO) ? Imputado.PATERNO.Trim() : string.Empty,
                                                               !string.IsNullOrEmpty(Imputado.MATERNO) ? Imputado.MATERNO.Trim() : string.Empty));
                    if (Imputado.ALIAS != null)
                    {
                        string alias = string.Empty;
                        foreach (var a in Imputado.ALIAS)
                        {
                            if (!string.IsNullOrEmpty(alias))
                            {
                                alias = string.Format("{0},", alias);
                            }
                            alias = alias + string.Format("{0} {1} {2}", a.NOMBRE, a.PATERNO, a.MATERNO);
                        }
                        parametros.Add("<<alias>>", alias);
                    }
                    else
                    {
                        parametros.Add("<<alias>>", string.Empty);
                    }
                    if (Imputado.APODO != null)
                    {
                        string apodos = string.Empty;
                        foreach (var a in Imputado.APODO)
                        {
                            if (!string.IsNullOrEmpty(apodos))
                            {
                                apodos = string.Format("{0},", apodos);
                            }
                            apodos = apodos + a.APODO1;
                        }
                        parametros.Add("<<apodo>>", apodos);
                    }
                    else
                    {
                        parametros.Add("<<apodo>>", string.Empty);
                    }

                    //parametros.Add("<<estadoCivil>>", Imputado.ESTADO_CIVIL != null ? Imputado.ESTADO_CIVIL.DESCR.Trim() : string.Empty);
                    parametros.Add("<<estadoCivil>>", SelectIngreso.ESTADO_CIVIL != null ? SelectIngreso.ESTADO_CIVIL.DESCR.Trim() : string.Empty);
                    parametros.Add("<<edad>>", new Fechas().CalculaEdad(Imputado.NACIMIENTO_FECHA).ToString());
                    parametros.Add("<<conyugue>>", string.Empty);
                    parametros.Add("<<originario>>", string.Empty);
                    parametros.Add("<<fecNacimiento>>", Imputado.NACIMIENTO_FECHA.Value.ToString("dd/MM/yyyy"));
                    //parametros.Add("<<escolaridad>>", Imputado.ESCOLARIDAD != null ? Imputado.ESCOLARIDAD.DESCR.Trim() : string.Empty);
                    parametros.Add("<<escolaridad>>", SelectIngreso.ESCOLARIDAD != null ? SelectIngreso.ESCOLARIDAD.DESCR.Trim() : string.Empty);

                    //parametros.Add("<<domicilioActual>>", string.Format("{0} {1},{2},{3},{4}",
                    //    !string.IsNullOrEmpty(Imputado.DOMICILIO_CALLE) ? Imputado.DOMICILIO_CALLE.Trim() : string.Empty,
                    //    Imputado.DOMICILIO_NUM_EXT,
                    //    Imputado.COLONIA != null ? Imputado.COLONIA.DESCR.Trim() : string.Empty,
                    //    Imputado.COLONIA.MUNICIPIO != null ? Imputado.COLONIA.MUNICIPIO.MUNICIPIO1.Trim() : string.Empty,
                    //    Imputado.COLONIA.MUNICIPIO.ENTIDAD != null ? Imputado.COLONIA.MUNICIPIO.ENTIDAD.DESCR.Trim() : string.Empty));
                    parametros.Add("<<domicilioActual>>", string.Format("{0} {1},{2},{3},{4}",
                                                                        !string.IsNullOrEmpty(SelectIngreso.DOMICILIO_CALLE) ? SelectIngreso.DOMICILIO_CALLE.Trim() : string.Empty,
                                                                        SelectIngreso.DOMICILIO_NUM_EXT,
                                                                        SelectIngreso.COLONIA != null ? SelectIngreso.COLONIA.DESCR.Trim() : string.Empty,
                                                                        SelectIngreso.COLONIA.MUNICIPIO != null ? SelectIngreso.COLONIA.MUNICIPIO.MUNICIPIO1.Trim() : string.Empty,
                                                                        SelectIngreso.COLONIA.MUNICIPIO.ENTIDAD != null ? SelectIngreso.COLONIA.MUNICIPIO.ENTIDAD.DESCR.Trim() : string.Empty));
                    //parametros.Add("<<TiempoRadicacion>>",(Imputado.RESIDENCIA_ANIOS != null ? string.Format("{0} AÑOS", Imputado.RESIDENCIA_ANIOS) : string.Empty) + (Imputado.RESIDENCIA_MESES != null ? string.Format(" {0} MESES", Imputado.RESIDENCIA_MESES) : string.Empty));
                    parametros.Add("<<TiempoRadicacion>>", (SelectIngreso.RESIDENCIA_ANIOS != null ? string.Format("{0} AÑOS", SelectIngreso.RESIDENCIA_ANIOS) : string.Empty) + (SelectIngreso.RESIDENCIAS_MESES != null ? string.Format(" {0} MESES", SelectIngreso.RESIDENCIAS_MESES) : string.Empty));
                    //parametros.Add("<<telefono>>", Imputado.TELEFONO != null ? Imputado.TELEFONO.ToString() : string.Empty);
                    parametros.Add("<<telefono>>", SelectIngreso.TELEFONO != null ? SelectIngreso.TELEFONO.ToString() : string.Empty);
                    //parametros.Add("<<ocupacion>>", Imputado.OCUPACION != null ? Imputado.OCUPACION.DESCR.Trim() : string.Empty);
                    parametros.Add("<<ocupacion>>", SelectIngreso.OCUPACION != null ? SelectIngreso.OCUPACION.DESCR.Trim() : string.Empty);
                    //parametros.Add("<<NombreMadre>>",string.Format("{0} {1} {2} {3}",
                    //    Imputado.NOMBRE_MADRE,
                    //    !string.IsNullOrEmpty(Imputado.PATERNO_MADRE) ? Imputado.PATERNO_MADRE.Trim() : string.Empty,
                    //    !string.IsNullOrEmpty(Imputado.MATERNO_MADRE) ? Imputado.MATERNO_MADRE.Trim() : string.Empty,
                    //    Imputado.MADRE_FINADO.Equals("S") ? "FINADO" : string.Empty));
                    parametros.Add("<<NombreMadre>>", string.Format("{0} {1} {2} {3}",
                                                                    Imputado.NOMBRE_MADRE,
                                                                    !string.IsNullOrEmpty(Imputado.PATERNO_MADRE) ? Imputado.PATERNO_MADRE.Trim() : string.Empty,
                                                                    !string.IsNullOrEmpty(Imputado.MATERNO_MADRE) ? Imputado.MATERNO_MADRE.Trim() : string.Empty,
                                                                    SelectIngreso.MADRE_FINADO.Equals("S") ? "FINADO" : string.Empty));
                    //parametros.Add("<<nombrePadre>>", string.Format("{0} {1} {2} {3}",
                    //    Imputado.NOMBRE_PADRE,
                    //    !string.IsNullOrEmpty(Imputado.PATERNO_PADRE) ? Imputado.PATERNO_PADRE.Trim() : string.Empty,
                    //    !string.IsNullOrEmpty(Imputado.MATERNO_PADRE) ? Imputado.MATERNO_PADRE.Trim() : string.Empty,
                    //    Imputado.PADRE_FINADO.Equals("S") ? "FINADO" : string.Empty));
                    parametros.Add("<<nombrePadre>>", string.Format("{0} {1} {2} {3}",
                                                                    Imputado.NOMBRE_PADRE,
                                                                    !string.IsNullOrEmpty(Imputado.PATERNO_PADRE) ? Imputado.PATERNO_PADRE.Trim() : string.Empty,
                                                                    !string.IsNullOrEmpty(Imputado.MATERNO_PADRE) ? Imputado.MATERNO_PADRE.Trim() : string.Empty,
                                                                    SelectIngreso.PADRE_FINADO.Equals("S") ? "FINADO" : string.Empty));
                    parametros.Add("<<domicilioPadres>>", string.Empty);

/*<<nombre>>
 * <<alias>>
 * <<apodo>>
 * <<estadoCivil>>
 * <<edad>>
 * <<conyugue>>
 * <<originario>>
 * <<fecNacimiento>>
 * <<escolaridad>>
 * <<domicilioActual>>
 * <<TiempoRadicacion>>
 * <<telefono>>
 * <<ocupacion>>
 * <<NombreMadre>>
 * <<nombrePadre>>
 * <<domicilioPadres>>*/



                    //CARGAMOS DE NUEVO PARA MOSTRAR LA INFORMACION ACTUALIZADA
                    SelectedImputadoDocumento = (new cImputadoDocumento()).Obtener(SelectedImputadoDocumento.ID_CENTRO, SelectedImputadoDocumento.ID_ANIO, SelectedImputadoDocumento.ID_IMPUTADO, SelectedImputadoDocumento.ID_IM_TIPO_DOCTO);
                    //if (docto != null)
                    //    if (docto.Count > 0)
                    //        SelectedImputadoDocumento = docto[0];


                    ReporteIngreso reporte = new ReporteIngreso();
                    reporte.Nombre = string.Format("{0} {1} {2}", Imputado.NOMBRE, Imputado.PATERNO, Imputado.MATERNO);
                    reporte.Alias  = " ";
                    if (Imputado.ALIAS != null)
                    {
                        string alias = string.Empty;
                        foreach (var a in Imputado.ALIAS)
                        {
                            if (!string.IsNullOrEmpty(alias))
                            {
                                alias = string.Format("{0},", alias);
                            }
                            alias = alias + string.Format("{0} {1} {2}", a.NOMBRE, a.PATERNO, a.MATERNO);
                        }
                    }
                    reporte.Apodo = " ";
                    if (Imputado.APODO != null)
                    {
                        string apodos = string.Empty;
                        foreach (var a in Imputado.APODO)
                        {
                            if (!string.IsNullOrEmpty(apodos))
                            {
                                apodos = string.Format("{0},", apodos);
                            }
                            apodos = apodos + a.APODO1;
                        }
                    }
                    //reporte.EstadoCivil = Imputado.ESTADO_CIVIL != null ? Imputado.ESTADO_CIVIL.DESCR : " ";
                    reporte.EstadoCivil   = SelectIngreso.ESTADO_CIVIL != null ? SelectIngreso.ESTADO_CIVIL.DESCR : " ";
                    reporte.Conyugue      = " ";
                    reporte.Originario    = " ";
                    reporte.FecNacimiento = " ";
                    //reporte.Escolaridad = Imputado.ESCOLARIDAD != null ? Imputado.ESCOLARIDAD.DESCR : " ";
                    reporte.Escolaridad = SelectIngreso.ESCOLARIDAD != null ? SelectIngreso.ESCOLARIDAD.DESCR : " ";

                    reporte.DomicilioActual = " ";//string.Format("{0} {1},{2},{3},{4}", Imputado.DOMICILIO_CALLE, Imputado.DOMICILIO_NUM_EXT, Imputado.COLONIA.DESCR, Imputado.COLONIA.MUNICIPIO.MUNICIPIO1, Imputado.COLONIA.MUNICIPIO.ENTIDAD.DESCR);
                    var fechas = new Fechas();
                    reporte.Edad = " ";
                    if (Imputado.NACIMIENTO_FECHA != null)
                    {
                        reporte.Edad = string.Format("{0} AÑOS", fechas.CalculaEdad(Imputado.NACIMIENTO_FECHA));
                    }
                    //reporte.TiempoBC = (Imputado.RESIDENCIA_ANIOS != null ? string.Format("{0} AÑOS", Imputado.RESIDENCIA_ANIOS) : string.Empty) + (Imputado.RESIDENCIA_MESES != null ? string.Format(" {0} MESES", Imputado.RESIDENCIA_MESES) : string.Empty);
                    reporte.TiempoBC = (SelectIngreso.RESIDENCIA_ANIOS != null ? string.Format("{0} AÑOS", SelectIngreso.RESIDENCIA_ANIOS) : string.Empty) + (SelectIngreso.RESIDENCIAS_MESES != null ? string.Format(" {0} MESES", SelectIngreso.RESIDENCIAS_MESES) : string.Empty);
                    //reporte.Telefono = Imputado.TELEFONO != null ? Imputado.TELEFONO.ToString() : " ";
                    reporte.Telefono = SelectIngreso.TELEFONO != null?SelectIngreso.TELEFONO.ToString() : " ";

                    //reporte.Ocupacion = Imputado.OCUPACION != null ? Imputado.OCUPACION.DESCR : " ";
                    reporte.Ocupacion = SelectIngreso.OCUPACION != null ? SelectIngreso.OCUPACION.DESCR : " ";
                    //reporte.NombreMadre = string.Format("{0} {1} {2} {3}", Imputado.NOMBRE_MADRE, Imputado.PATERNO_MADRE, Imputado.MATERNO_MADRE, Imputado.MADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);
                    reporte.NombreMadre = string.Format("{0} {1} {2} {3}", Imputado.NOMBRE_MADRE, Imputado.PATERNO_MADRE, Imputado.MATERNO_MADRE, SelectIngreso.MADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);
                    //reporte.NombrePadre = string.Format("{0} {1} {2} {3}", Imputado.NOMBRE_PADRE, Imputado.PATERNO_PADRE, Imputado.MATERNO_PADRE, Imputado.PADRE_FINADO.Equals("S") ? "FINADO" : string.Empty); ;
                    reporte.NombrePadre     = string.Format("{0} {1} {2} {3}", Imputado.NOMBRE_PADRE, Imputado.PATERNO_PADRE, Imputado.MATERNO_PADRE, SelectIngreso.PADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);;
                    reporte.DomicilioPadres = " ";
                    if (reporte != null)
                    {
                        Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
                        Document wordDoc       = new Document();
                        var      tmpFile       = Path.GetTempFileName();
                        var      tmpFileStream = File.OpenWrite(tmpFile);
                        tmpFileStream.Write(SelectedImputadoDocumento.DOCUMENTO, 0, SelectedImputadoDocumento.DOCUMENTO.Length);
                        tmpFileStream.Close();
                        wordDoc = wordApp.Documents.Add(tmpFile);
                        foreach (Field myMergeField in wordDoc.Fields)
                        {
                            Range  rngFieldCode = myMergeField.Code;
                            String fieldText    = rngFieldCode.Text;
                            // ONLY GETTING THE MAILMERGE FIELDS
                            if (fieldText.StartsWith(" MERGEFIELD"))
                            {
                                Int32  endMerge        = fieldText.IndexOf("\\");
                                Int32  fieldNameLength = fieldText.Length - endMerge;
                                String fieldName       = fieldText.Substring(11, endMerge - 11);
                                fieldName = fieldName.Trim();

                                switch (fieldName)
                                {
                                case "nombre":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Nombre);
                                    break;

                                case "alias":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Alias);
                                    break;

                                case "apodo":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Apodo);
                                    break;

                                case "estadoCivil":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.EstadoCivil);
                                    break;

                                case "edad":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Edad);
                                    break;

                                case "conyugue":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Conyugue);
                                    break;

                                case "originario":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Originario);
                                    break;

                                case "fecNacimiento":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.FecNacimiento);
                                    break;

                                case "escolaridad":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Escolaridad);
                                    break;

                                case "domicilioActual":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.DomicilioActual);
                                    break;

                                case "tiempoRadicacion":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.TiempoBC);
                                    break;

                                case "telefono":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Telefono);
                                    break;

                                case "ocupacion":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.Ocupacion);
                                    break;

                                case "nombreMadre":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.NombreMadre);
                                    break;

                                case "nombrePadre":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.NombrePadre);
                                    break;

                                case "domicilioPadres":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(reporte.DomicilioPadres);
                                    break;

                                case "centro":
                                    myMergeField.Select();
                                    wordApp.Selection.TypeText(centro.DESCR.Trim());
                                    break;
                                }
                            }
                        }
                        wordDoc.SaveAs(tmpFile, WdSaveFormat.wdFormatDocument97);
                        wordDoc.Close();
                        byte[] bytes = System.IO.File.ReadAllBytes(tmpFile);
                        var    v     = new EditorView(SelectedImputadoDocumento, bytes);
                        PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.OSCURECER_FONDO);
                        v.Owner   = PopUpsViewModels.MainWindow;
                        v.Closed += (s, e) => { PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.OSCURECER_FONDO); };
                        v.Show();
                    }
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al imprimir documento.", ex);
            }
        }
示例#3
0
        private void ReportViewer_Load(object sender, EventArgs e)
        {
            try
            {
                ReporteViewer.ShowExportButton = false;
                if (ing != null)
                {
                    ing = (new cIngreso()).Obtener(ing.ID_CENTRO, ing.ID_ANIO, ing.ID_IMPUTADO, ing.ID_INGRESO);
                    if (ing != null)
                    {
                        var f = new cFicha();
                        //HEADER
                        var imp = ing.IMPUTADO;
                        f.Expediente    = string.Format("{0}/{1}", imp.ID_ANIO, imp.ID_IMPUTADO);
                        f.FolioGobierno = string.Format("{0}/{1}", ing.ANIO_GOBIERNO, ing.FOLIO_GOBIERNO);
                        f.NoIngreso     = ing.ID_INGRESO.ToString();
                        f.FecIngreso    = ing.FEC_INGRESO_CERESO.HasValue ? ing.FEC_INGRESO_CERESO.Value.ToString("dd/MM/yyyy") : string.Empty;
                        f.HoraIngreso   = ing.FEC_INGRESO_CERESO.HasValue ? ing.FEC_INGRESO_CERESO.Value.ToString("HH:mm:ss") : string.Empty;
                        f.Nombre        = string.Format("{0} {1} {2}", !string.IsNullOrEmpty(imp.NOMBRE) ? imp.NOMBRE.Trim() : string.Empty, !string.IsNullOrEmpty(imp.PATERNO) ? imp.PATERNO.Trim() : string.Empty, !string.IsNullOrEmpty(imp.MATERNO) ? imp.MATERNO.Trim() : string.Empty);

                        f.Alias = string.Empty;
                        if (imp.ALIAS != null)
                        {
                            foreach (var i in imp.ALIAS)
                            {
                                if (!string.IsNullOrEmpty(f.Alias))
                                {
                                    f.Alias = string.Format("{0}, ", f.Alias);
                                }
                                f.Alias = string.Format("{0} {1} {2} {3}", f.Alias, !string.IsNullOrEmpty(i.NOMBRE) ? i.NOMBRE.Trim() : string.Empty, !string.IsNullOrEmpty(i.PATERNO) ? i.PATERNO.Trim() : string.Empty, !string.IsNullOrEmpty(i.MATERNO) ? i.MATERNO.Trim() : string.Empty);
                            }
                        }
                        f.Apodo = string.Empty;
                        if (f.Apodo != null)
                        {
                            foreach (var a in imp.APODO)
                            {
                                if (!string.IsNullOrEmpty(f.Apodo))
                                {
                                    f.Apodo = string.Format("{0}, ", f.Apodo);
                                }
                                f.Apodo = string.Format("{0}{1}", f.Apodo, a.APODO1);
                            }
                        }
                        f.Estatus             = ing.ESTATUS_ADMINISTRATIVO != null ? !string.IsNullOrEmpty(ing.ESTATUS_ADMINISTRATIVO.DESCR) ? ing.ESTATUS_ADMINISTRATIVO.DESCR.Trim() : string.Empty : string.Empty;
                        f.TipoIngreso         = ing.TIPO_INGRESO != null ? !string.IsNullOrEmpty(ing.TIPO_INGRESO.DESCR) ? ing.TIPO_INGRESO.DESCR.Trim() : string.Empty : string.Empty;
                        f.NoOficioInternacion = ing.DOCINTERNACION_NUM_OFICIO;
                        f.Autoridad           = ing.TIPO_AUTORIDAD_INTERNA != null ? !string.IsNullOrEmpty(ing.TIPO_AUTORIDAD_INTERNA.DESCR) ? ing.TIPO_AUTORIDAD_INTERNA.DESCR.Trim() : string.Empty : string.Empty;
                        f.ADisposicion        = ing.TIPO_DISPOSICION != null ? !string.IsNullOrEmpty(ing.TIPO_DISPOSICION.DESCR) ? ing.TIPO_DISPOSICION.DESCR.Trim() : string.Empty : string.Empty;
                        //DATOS GENERALES
                        f.Padre = string.Format("{0} {1} {2}", !string.IsNullOrEmpty(imp.NOMBRE_PADRE) ? imp.NOMBRE_PADRE.Trim() : string.Empty, !string.IsNullOrEmpty(imp.PATERNO_PADRE) ? imp.PATERNO_PADRE.Trim() : string.Empty, !string.IsNullOrEmpty(imp.MATERNO_PADRE) ? imp.MATERNO_PADRE.Trim() : string.Empty);
                        f.Madre = string.Format("{0} {1} {2}", !string.IsNullOrEmpty(imp.NOMBRE_MADRE) ? imp.NOMBRE_MADRE.Trim() : string.Empty, !string.IsNullOrEmpty(imp.PATERNO_MADRE) ? imp.PATERNO_MADRE.Trim() : string.Empty, !string.IsNullOrEmpty(imp.MATERNO_MADRE) ? imp.MATERNO_MADRE.Trim() : string.Empty);
                        var originario = new List <MUNICIPIO>((new cMunicipio()).Obtener(imp.NACIMIENTO_ESTADO.Value, imp.NACIMIENTO_MUNICIPIO.Value));
                        f.Originario = string.Empty;
                        if (originario != null)
                        {
                            if (originario.Count > 0)
                            {
                                var o = originario[0];
                                f.Originario = string.Format("{0},{1},{2}", originario[0].MUNICIPIO1, originario[0].ENTIDAD.DESCR, originario[0].ENTIDAD.PAIS_NACIONALIDAD.PAIS);
                            }
                        }

                        f.Domicilio     = ing.DOMICILIO_CALLE;
                        f.Numero        = ing.DOMICILIO_NUM_EXT.HasValue ? ing.DOMICILIO_NUM_EXT.Value.ToString() : string.Empty;
                        f.Colonia       = ing.COLONIA != null ? !string.IsNullOrEmpty(ing.COLONIA.DESCR) ? ing.COLONIA.DESCR.Trim() : string.Empty : string.Empty;
                        f.Ciudad        = ing.MUNICIPIO != null ? !string.IsNullOrEmpty(ing.MUNICIPIO.MUNICIPIO1) ? ing.MUNICIPIO.MUNICIPIO1.Trim() : string.Empty : string.Empty;
                        f.FecNacimiento = imp.NACIMIENTO_FECHA.HasValue ? imp.NACIMIENTO_FECHA.Value.ToString("dd/MM/yyyy") : string.Empty;
                        var calcula = new Fechas();
                        f.Edad = calcula.CalculaEdad(imp.NACIMIENTO_FECHA).ToString();
                        f.Sexo = imp.SEXO == "M" ? "MASCULINO" : "FEMENINO";
                        //f.EdoCivil = imp.ESTADO_CIVIL != null ? !string.IsNullOrEmpty(imp.ESTADO_CIVIL.DESCR) ? imp.ESTADO_CIVIL.DESCR.Trim() : string.Empty : string.Empty;
                        //f.Religion = imp.RELIGION != null ? !string.IsNullOrEmpty(imp.RELIGION.DESCR) ? imp.RELIGION.DESCR.Trim() : string.Empty : string.Empty;
                        //f.Ocupacion = imp.OCUPACION != null ? !string.IsNullOrEmpty(imp.OCUPACION.DESCR) ? imp.OCUPACION.DESCR.Trim() : string.Empty : string.Empty;
                        //f.GradoMaxEstudio = imp.ESCOLARIDAD != null ? !string.IsNullOrEmpty(imp.ESCOLARIDAD.DESCR) ? imp.ESCOLARIDAD.DESCR.Trim() : string.Empty : string.Empty;
                        f.EdoCivil           = ing.ESTADO_CIVIL != null ? !string.IsNullOrEmpty(ing.ESTADO_CIVIL.DESCR) ? ing.ESTADO_CIVIL.DESCR.Trim() : string.Empty : string.Empty;
                        f.Religion           = ing.RELIGION != null ? !string.IsNullOrEmpty(ing.RELIGION.DESCR) ? ing.RELIGION.DESCR.Trim() : string.Empty : string.Empty;
                        f.Ocupacion          = ing.OCUPACION != null ? !string.IsNullOrEmpty(ing.OCUPACION.DESCR) ? ing.OCUPACION.DESCR.Trim() : string.Empty : string.Empty;
                        f.GradoMaxEstudio    = ing.ESCOLARIDAD != null ? !string.IsNullOrEmpty(ing.ESCOLARIDAD.DESCR) ? ing.ESCOLARIDAD.DESCR.Trim() : string.Empty : string.Empty;
                        f.LugarNAcExtranjero = imp.NACIMIENTO_LUGAR;



                        //MEDIA FILIACION
                        f.Estatura = ing.ESTATURA != null?ing.ESTATURA.HasValue?ing.ESTATURA.Value.ToString() : string.Empty : string.Empty;

                        f.Peso = ing.PESO != null?ing.PESO.HasValue?ing.PESO.Value.ToString() : string.Empty : string.Empty;

                        if (imp.IMPUTADO_FILIACION != null)
                        {
                            foreach (var x in imp.IMPUTADO_FILIACION)
                            {
                                switch (x.ID_MEDIA_FILIACION)
                                {
                                case 1://NARIZ RAIZ
                                    f.NarizRaiz = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 4://NARIZ ANCHO
                                    f.NarizAncho = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 9://CABELLO COLOR
                                    f.CabelloColor = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 11://CABELLO FORMA
                                    f.CabelloForma = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 16://OJOS COLOR
                                    f.OjosColor = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 17://OJOS FORMA
                                    f.OjosForma = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 18://OJOS TAMANIO
                                    f.OjosTamano = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 19://BOCA TAMANIO
                                    f.BocaTamano = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 20://BOCA COMISURAS
                                    f.BocaComisuras = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 21://LABIOS ESPESOR
                                    f.LabiosEspesor = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 24://MENTON TIPO
                                    f.MentonTipo = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 25://MENTON FORMA
                                    f.MentonForma = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 26://MENTON INCLINACION
                                    f.MentonInclinacion = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 27://FRENTE ALTURA
                                    f.FrenteAlta = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 28://FRENTE INCLINACION
                                    f.FrenteInclinada = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 29://FRENTE ANCHO
                                    f.FrenteAncha = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 30://COLOR DE PIEL
                                    f.ColorPiel = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 32://LABIO ALTURA
                                    f.LabiosAltura = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 33://LABIO PROMINENCIA
                                    f.LabiosPromedio = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;

                                case 39://COMPLEAXION
                                    f.Complexion = x.TIPO_FILIACION != null ? !string.IsNullOrEmpty(x.TIPO_FILIACION.DESCR) ? x.TIPO_FILIACION.DESCR.Trim() : string.Empty : string.Empty;
                                    break;
                                }
                            }
                        }
                        var ficha = new List <cFicha>();
                        ficha.Add(f);
                        //CAUSAS PENALES
                        var causasPenales = new List <cCausasPenales>();
                        if (ing.CAUSA_PENAL != null)
                        {
                            foreach (var x in ing.CAUSA_PENAL)
                            {
                                var cp = new cCausasPenales();
                                cp.CausaPenal  = string.Format("{0}/{1}{2}", x.CP_ANIO, x.CP_FOLIO, string.IsNullOrEmpty(x.CP_BIS) ? string.Empty : "-" + x.CP_BIS);
                                cp.Abreviatura = string.Empty;
                                if (x.JUZGADO != null)
                                {
                                    cp.Juzgado = x.JUZGADO.DESCR;
                                }
                                cp.Consignado = x.AP_FEC_CONSIGNACION != null?x.AP_FEC_CONSIGNACION.Value.ToString("dd/MM/yyyy") : string.Empty;

                                cp.Delitos = string.Empty;//"* HOMICIDIO SIMPLE \n* PRIVACION DE LIBERTAR PERSONAL \n* DELITOS EN MATERIA DE INHUMACION Y EXHUMACION \n* RESPONSABILIDAD PROFESIONAL Y TECNICA";
                                if (x.CAUSA_PENAL_DELITO != null)
                                {
                                    foreach (var d in x.CAUSA_PENAL_DELITO)
                                    {
                                        if (string.IsNullOrEmpty(cp.Delitos))
                                        {
                                            cp.Delitos = string.Format("{0}\n", d.TIPO_DELITO != null ? !string.IsNullOrEmpty(d.TIPO_DELITO.DESCR) ? d.TIPO_DELITO.DESCR.Trim() : string.Empty : string.Empty);
                                        }
                                        cp.Delitos = string.Format("{0}* {1}", cp.Delitos, d.MODALIDAD_DELITO != null ? !string.IsNullOrEmpty(d.MODALIDAD_DELITO.DESCR) ? d.MODALIDAD_DELITO.DESCR.Trim() : string.Empty : string.Empty);
                                    }
                                }
                                causasPenales.Add(cp);
                            }
                        }

                        //SENIAS PARTICULARES
                        var seniasParticulares = new List <cSeniasParticulares>();
                        if (imp.SENAS_PARTICULARES != null)
                        {
                            foreach (var x in imp.SENAS_PARTICULARES)
                            {
                                var sp = new cSeniasParticulares();
                                sp.Significado = x.SIGNIFICADO;
                                seniasParticulares.Add(sp);
                            }
                        }
                        //BIOMETRICO (FOTOS)
                        var imputadoBiometricos = new List <cBiometricos>();
                        var ib = new cBiometricos();
                        ib.FotoIzquerda = ib.FotoCentro = ib.FotoDerecha = new Imagenes().getImagenPerson();//System.IO.File.ReadAllBytes("../../Imagen/placeholder_person.gif");
                        if (ing.INGRESO_BIOMETRICO.Where(w => w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG) != null)
                        {
                            foreach (var b in ing.INGRESO_BIOMETRICO)
                            {
                                switch (b.ID_TIPO_BIOMETRICO)
                                {
                                case (int)enumTipoBiometrico.FOTO_IZQ_SEGUIMIENTO:
                                    ib.FotoIzquerda = b.BIOMETRICO;
                                    break;

                                case (int)enumTipoBiometrico.FOTO_FRENTE_SEGUIMIENTO:
                                    ib.FotoCentro = b.BIOMETRICO;
                                    break;

                                case (int)enumTipoBiometrico.FOTO_DER_SEGUIMIENTO:
                                    ib.FotoDerecha = b.BIOMETRICO;
                                    break;
                                }
                            }
                        }


                        //HUELLAS
                        if (imp.IMPUTADO_BIOMETRICO != null)
                        {
                            foreach (var b in imp.IMPUTADO_BIOMETRICO.Where(w => w.ID_FORMATO == (short)enumTipoFormato.FMTO_WSQ))
                            {
                                if (b.BIOMETRICO.Length > 0)
                                {
                                    switch (b.ID_TIPO_BIOMETRICO)
                                    {
                                    case (int)enumTipoBiometrico.PULGAR_IZQUIERDO:
                                        ib.PulgarIzquierda = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.INDICE_IZQUIERDO:
                                        ib.IndiceIzquierda = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.MEDIO_IZQUIERDO:
                                        ib.MedioIzquierda = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.ANULAR_IZQUIERDO:
                                        ib.AnularIzquierda = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.MENIQUE_IZQUIERDO:
                                        ib.MeniqueIzquierda = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.PULGAR_DERECHO:
                                        ib.PulgarDerecha = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.INDICE_DERECHO:
                                        ib.IndiceDerecha = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.MEDIO_DERECHO:
                                        ib.MedioDerecha = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.ANULAR_DERECHO:
                                        ib.AnularDerecha = getHuella(b.BIOMETRICO);
                                        break;

                                    case (int)enumTipoBiometrico.MENIQUE_DERECHO:
                                        ib.MeniqueDerecha = getHuella(b.BIOMETRICO);
                                        break;
                                    }
                                }
                            }
                        }

                        //GENERALES IDIOMA
                        var gi = new List <cIdiomaGenerales>();
                        gi.Add(
                            new cIdiomaGenerales()
                        {
                            Nacionalidad      = ing.IMPUTADO != null ? ing.IMPUTADO.PAIS_NACIONALIDAD != null ? !string.IsNullOrEmpty(ing.IMPUTADO.PAIS_NACIONALIDAD.NACIONALIDAD) ? ing.IMPUTADO.PAIS_NACIONALIDAD.NACIONALIDAD.Trim() : string.Empty : string.Empty : string.Empty,
                            Idioma            = ing.IMPUTADO != null ? ing.IMPUTADO.IDIOMA != null ? !string.IsNullOrEmpty(ing.IMPUTADO.IDIOMA.DESCR) ? ing.IMPUTADO.IDIOMA.DESCR.Trim() : string.Empty : string.Empty : string.Empty,
                            Etnia             = ing.IMPUTADO != null ? ing.IMPUTADO.ETNIA != null ? !string.IsNullOrEmpty(ing.IMPUTADO.ETNIA.DESCR) ? ing.IMPUTADO.ETNIA.DESCR.Trim() : string.Empty : string.Empty : string.Empty,
                            Dialecto          = ing.IMPUTADO != null ? ing.IMPUTADO.DIALECTO != null ? !string.IsNullOrEmpty(ing.IMPUTADO.DIALECTO.DESCR) ? ing.IMPUTADO.DIALECTO.DESCR.Trim() : string.Empty : string.Empty : string.Empty,
                            RequiereTraductor = ing.IMPUTADO != null ? !string.IsNullOrEmpty(ing.IMPUTADO.TRADUCTOR) ? ing.IMPUTADO.TRADUCTOR == "S" ? "SI" : "NO" : "NO" : "NO"
                        });


                        //ib.PulgarIzquierda = System.IO.File.ReadAllBytes(@"C:\Git\seguridadpublica\ControlPenales\Imagen\huella.jpg");
                        //ib.IndiceIzquierda = System.IO.File.ReadAllBytes(@"C:\Git\seguridadpublica\ControlPenales\Imagen\huella.jpg");
                        //ib.MedioIzquierda = ib.IndiceIzquierda;
                        //ib.AnularIzquierda = ib.IndiceIzquierda;
                        //ib.MeniqueIzquierda = ib.IndiceIzquierda;
                        //ib.PulgarDerecha = ib.IndiceIzquierda;
                        //ib.IndiceDerecha = ib.IndiceIzquierda;
                        //ib.MedioDerecha = ib.IndiceIzquierda;
                        //ib.AnularDerecha = ib.IndiceIzquierda;
                        //ib.MeniqueDerecha = ib.IndiceIzquierda;
                        imputadoBiometricos.Add(ib);

                        var centro  = new cCentro().Obtener(GlobalVar.gCentro).SingleOrDefault();
                        var reporte = new List <cReporte>();
                        reporte.Add(new cReporte()
                        {
                            Encabezado1 = Parametro.ENCABEZADO1,
                            Encabezado2 = Parametro.ENCABEZADO2,
                            Encabezado3 = centro.DESCR.Trim().ToUpper(),
                            Encabezado4 = "Ficha",
                            Logo1       = Parametro.REPORTE_LOGO1,
                            Logo2       = Parametro.REPORTE_LOGO2,
                        });

                        var firmas = new List <cFirmas>();
                        firmas.Add(new cFirmas()
                        {
                            NombreUsuario     = StaticSourcesViewModel.UsuarioLogin.Nombre,
                            NombreSubdirector = Parametro.SUBDIRECTOR_CENTRO.Trim()
                        });

                        ReporteViewer.LocalReport.ReportPath = "Reportes/rFicha.rdlc";
                        ReporteViewer.LocalReport.DataSources.Clear();
                        //FICHA
                        Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds.Name  = "DataSet1";
                        rds.Value = ficha;
                        ReporteViewer.LocalReport.DataSources.Add(rds);
                        //CAUSA PENAL
                        Microsoft.Reporting.WinForms.ReportDataSource rds2 = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds2.Name  = "DataSet2";
                        rds2.Value = causasPenales;
                        ReporteViewer.LocalReport.DataSources.Add(rds2);
                        //SENIAS PARTICULARES
                        Microsoft.Reporting.WinForms.ReportDataSource rds3 = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds3.Name  = "DataSet3";
                        rds3.Value = seniasParticulares;
                        ReporteViewer.LocalReport.DataSources.Add(rds3);
                        //BIOMETRICO
                        Microsoft.Reporting.WinForms.ReportDataSource rds4 = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds4.Name  = "DataSet4";
                        rds4.Value = imputadoBiometricos;
                        ReporteViewer.LocalReport.DataSources.Add(rds4);
                        ReporteViewer.RefreshReport();

                        //IDIOMA
                        Microsoft.Reporting.WinForms.ReportDataSource rds5 = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds5.Name  = "DataSet5";
                        rds5.Value = gi;
                        ReporteViewer.LocalReport.DataSources.Add(rds5);

                        //Reporte
                        Microsoft.Reporting.WinForms.ReportDataSource rds6 = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds6.Name  = "DataSet6";
                        rds6.Value = reporte;
                        ReporteViewer.LocalReport.DataSources.Add(rds6);

                        //Firmas
                        Microsoft.Reporting.WinForms.ReportDataSource rds7 = new Microsoft.Reporting.WinForms.ReportDataSource();
                        rds7.Name  = "DataSet7";
                        rds7.Value = firmas;
                        ReporteViewer.LocalReport.DataSources.Add(rds7);

                        ReporteViewer.RefreshReport();
                    }
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al generar reporte de la ficha.", ex);
            }
        }
        private void VerDocumento()
        {
            //if (SelectedImputadoDocumento != null)
            if (SelectIngreso == null)
            {
                new Dialogos().ConfirmacionDialogo("Validación", "Favor de guardar antes de imprimir");
                return;
            }
            else
            {
                if (SelectIngreso.ID_ANIO == 0 && SelectIngreso.ID_IMPUTADO == 0 && SelectIngreso.ID_INGRESO == 0)
                {
                    new Dialogos().ConfirmacionDialogo("Validación", "Favor de guardar antes de imprimir");
                    return;
                }
            }
            if (SelectIngreso != null)
            {
                //SelectIngreso = new cIngreso().Obtener(SelectIngreso.ID_CENTRO, SelectIngreso.ID_ANIO, SelectIngreso.ID_IMPUTADO, SelectIngreso.ID_INGRESO);
                var centro = new cCentro().Obtener(GlobalVar.gCentro).FirstOrDefault();
                //CARGAMOS DE NUEVO PARA MOSTRAR LA INFORMACION ACTUALIZADA
                SelectedImputadoDocumento = (new cImputadoDocumento()).Obtener(SelectIngreso.ID_CENTRO, SelectIngreso.ID_ANIO, SelectIngreso.ID_IMPUTADO, SelectIngreso.ID_INGRESO, (short)enumTipoDocumentoImputado.SALA_CABOS);
                if (SelectedImputadoDocumento == null)
                {
                    #region Reporte
                    ReporteIngreso reporte = new ReporteIngreso();
                    reporte.Nombre = string.Format("{0} {1} {2}", SelectIngreso.IMPUTADO.NOMBRE.Trim(),
                                                   !string.IsNullOrEmpty(SelectIngreso.IMPUTADO.PATERNO) ? SelectIngreso.IMPUTADO.PATERNO.Trim() : string.Empty,
                                                   !string.IsNullOrEmpty(SelectIngreso.IMPUTADO.MATERNO) ? SelectIngreso.IMPUTADO.MATERNO.Trim() : string.Empty);
                    reporte.Alias = " ";
                    if (SelectIngreso.IMPUTADO.ALIAS != null)
                    {
                        string alias = string.Empty;
                        foreach (var a in SelectIngreso.IMPUTADO.ALIAS)
                        {
                            if (!string.IsNullOrEmpty(alias))
                            {
                                alias = string.Format("{0},", alias);
                            }
                            alias = alias + string.Format("{0} {1} {2}", a.NOMBRE.Trim(),
                                                          !string.IsNullOrEmpty(a.PATERNO) ? a.PATERNO.Trim() : string.Empty,
                                                          !string.IsNullOrEmpty(a.MATERNO) ? a.MATERNO.Trim() : string.Empty);
                        }
                    }
                    reporte.Apodo = " ";
                    if (SelectIngreso.IMPUTADO.APODO != null)
                    {
                        string apodos = string.Empty;
                        foreach (var a in SelectIngreso.IMPUTADO.APODO)
                        {
                            if (!string.IsNullOrEmpty(apodos))
                            {
                                apodos = string.Format("{0},", apodos);
                            }
                            apodos = apodos + a.APODO1.Trim();
                        }
                    }
                    //reporte.EstadoCivil = Imputado.ESTADO_CIVIL != null ? Imputado.ESTADO_CIVIL.DESCR : " ";
                    reporte.EstadoCivil   = SelectIngreso.ESTADO_CIVIL != null ? SelectIngreso.ESTADO_CIVIL.DESCR : " ";
                    reporte.Conyugue      = " ";
                    reporte.Originario    = " ";
                    reporte.FecNacimiento = " ";
                    //reporte.Escolaridad = Imputado.ESCOLARIDAD != null ? Imputado.ESCOLARIDAD.DESCR : " ";
                    reporte.Escolaridad = SelectIngreso.ESCOLARIDAD != null ? SelectIngreso.ESCOLARIDAD.DESCR : " ";

                    reporte.DomicilioActual = " ";//string.Format("{0} {1},{2},{3},{4}", Imputado.DOMICILIO_CALLE, Imputado.DOMICILIO_NUM_EXT, Imputado.COLONIA.DESCR, Imputado.COLONIA.MUNICIPIO.MUNICIPIO1, Imputado.COLONIA.MUNICIPIO.ENTIDAD.DESCR);
                    var fechas = new Fechas();
                    reporte.Edad = " ";
                    if (Imputado.NACIMIENTO_FECHA != null)
                    {
                        reporte.Edad = string.Format("{0} AÑOS", fechas.CalculaEdad(SelectIngreso.IMPUTADO.NACIMIENTO_FECHA));
                    }
                    //reporte.TiempoBC = (Imputado.RESIDENCIA_ANIOS != null ? string.Format("{0} AÑOS",Imputado.RESIDENCIA_ANIOS) : string.Empty) + (Imputado.RESIDENCIA_MESES != null ? string.Format(" {0} MESES",Imputado.RESIDENCIA_MESES) : string.Empty);
                    reporte.TiempoBC = (SelectIngreso.RESIDENCIA_ANIOS != null ? string.Format("{0} AÑOS", SelectIngreso.RESIDENCIA_ANIOS) : string.Empty) + (SelectIngreso.RESIDENCIAS_MESES != null ? string.Format(" {0} MESES", SelectIngreso.RESIDENCIAS_MESES) : string.Empty);
                    //reporte.Telefono = Imputado.TELEFONO != null ? Imputado.TELEFONO.ToString() : " ";
                    reporte.Telefono = SelectIngreso.TELEFONO != null?SelectIngreso.TELEFONO.ToString() : " ";

                    //reporte.Ocupacion = Imputado.OCUPACION != null ? Imputado.OCUPACION.DESCR : " ";
                    reporte.Ocupacion = SelectIngreso.OCUPACION != null ? SelectIngreso.OCUPACION.DESCR : " ";
                    //reporte.NombreMadre = string.Format("{0} {1} {2} {3}", Imputado.NOMBRE_MADRE, Imputado.PATERNO_MADRE, Imputado.MATERNO_MADRE, Imputado.MADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);
                    //reporte.NombrePadre = string.Format("{0} {1} {2} {3}", Imputado.NOMBRE_PADRE, Imputado.PATERNO_PADRE, Imputado.MATERNO_PADRE, Imputado.PADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);
                    reporte.NombreMadre = string.Format("{0} {1} {2} {3}",
                                                        Imputado.NOMBRE_MADRE.Trim(),
                                                        !string.IsNullOrEmpty(Imputado.PATERNO_MADRE) ? Imputado.PATERNO_MADRE.Trim() : string.Empty,
                                                        !string.IsNullOrEmpty(Imputado.MATERNO_MADRE) ? Imputado.MATERNO_MADRE.Trim() : string.Empty,
                                                        SelectIngreso.MADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);
                    reporte.NombrePadre = string.Format("{0} {1} {2} {3}",
                                                        Imputado.NOMBRE_PADRE.Trim(),
                                                        !string.IsNullOrEmpty(Imputado.PATERNO_PADRE) ? Imputado.PATERNO_PADRE.Trim() : string.Empty,
                                                        !string.IsNullOrEmpty(Imputado.MATERNO_PADRE) ? Imputado.MATERNO_PADRE.Trim() : string.Empty,
                                                        SelectIngreso.PADRE_FINADO.Equals("S") ? "FINADO" : string.Empty);
                    reporte.DomicilioPadres = " ";

                    var diccionario = new Dictionary <string, string>();
                    diccionario.Add("<<nombre>>", reporte.Nombre);
                    diccionario.Add("<<alias>>", reporte.Alias);
                    diccionario.Add("<<apodo>>", reporte.Apodo);
                    diccionario.Add("<<estadoCivil>>", reporte.EstadoCivil);
                    diccionario.Add("<<edad>>", reporte.Edad);
                    diccionario.Add("<<conyugue>>", reporte.Conyugue);
                    diccionario.Add("<<originario>>", reporte.Originario);
                    diccionario.Add("<<fecNacimiento>>", reporte.FecNacimiento);
                    diccionario.Add("<<escolaridad>>", reporte.Escolaridad);
                    diccionario.Add("<<domicilioActual>>", reporte.DomicilioActual);
                    diccionario.Add("<<tiempoRadicacion>>", reporte.TiempoBC);
                    diccionario.Add("<<telefono>>", reporte.Telefono);
                    diccionario.Add("<<ocupacion>>", reporte.Ocupacion);
                    diccionario.Add("<<nombreMadre>>", reporte.NombreMadre);
                    diccionario.Add("<<nombrePadre>>", reporte.NombrePadre);
                    diccionario.Add("<<domicilioPadres>>", reporte.DomicilioPadres);
                    diccionario.Add("<<centro>>", centro.DESCR.Trim());

                    var documento = new cImputadoTipoDocumento().Obtener((short)enumTipoDocumentoImputado.SALA_CABOS);

                    var contenido = new cWord().FillFieldsDocx(documento.DOCUMENTO, diccionario);
                    #endregion
                    GuardarDocumento(contenido);
                    SelectedImputadoDocumento = (new cImputadoDocumento()).Obtener(SelectIngreso.ID_CENTRO, SelectIngreso.ID_ANIO, SelectIngreso.ID_IMPUTADO, SelectIngreso.ID_INGRESO, (short)enumTipoDocumentoImputado.SALA_CABOS);
                }
                #region comentado
                //if (docto != null)
                //    if (docto.Count > 0)
                //        SelectedImputadoDocumento = docto[0];

                //if (reporte != null)
                //{



                //Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
                //Document wordDoc = new Document();
                //var tmpFile = Path.GetTempFileName();
                //var tmpFileStream = File.OpenWrite(tmpFile);
                //tmpFileStream.Write(SelectedImputadoDocumento.DOCUMENTO, 0, SelectedImputadoDocumento.DOCUMENTO.Length);
                //tmpFileStream.Close();
                //wordDoc = wordApp.Documents.Add(tmpFile);
                //foreach (Field myMergeField in wordDoc.Fields)
                //{
                //    Range rngFieldCode = myMergeField.Code;
                //    String fieldText = rngFieldCode.Text;
                //    // ONLY GETTING THE MAILMERGE FIELDS
                //    if (fieldText.StartsWith(" MERGEFIELD"))
                //    {
                //        Int32 endMerge = fieldText.IndexOf("\\");
                //        Int32 fieldNameLength = fieldText.Length - endMerge;
                //        String fieldName = fieldText.Substring(11, endMerge - 11);
                //        fieldName = fieldName.Trim();

                //        switch (fieldName)
                //        {
                //            case "nombre":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Nombre);
                //                break;
                //            case "alias":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Alias);
                //                break;
                //            case "apodo":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Apodo);
                //                break;
                //            case "estadoCivil":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.EstadoCivil);
                //                break;
                //            case "edad":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Edad);
                //                break;
                //            case "conyugue":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Conyugue);
                //                break;
                //            case "originario":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Originario);
                //                break;
                //            case "fecNacimiento":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.FecNacimiento);
                //                break;
                //            case "escolaridad":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Escolaridad);
                //                break;
                //            case "domicilioActual":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.DomicilioActual);
                //                break;
                //            case "tiempoRadicacion":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.TiempoBC);
                //                break;
                //            case "telefono":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Telefono);
                //                break;
                //            case "ocupacion":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.Ocupacion);
                //                break;
                //            case "nombreMadre":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.NombreMadre);
                //                break;
                //            case "nombrePadre":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.NombrePadre);
                //                break;
                //            case "domicilioPadres":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(reporte.DomicilioPadres);
                //                break;
                //            case "centro":
                //                myMergeField.Select();
                //                wordApp.Selection.TypeText(centro.DESCR.Trim());
                //                break;
                //        }
                //    }
                //}
                //wordDoc.SaveAs(tmpFile, WdSaveFormat.wdFormatDocument97);
                //wordDoc.Close();
                //byte[] bytes = System.IO.File.ReadAllBytes(tmpFile);
                #endregion
                var v = new EditorView(SelectedImputadoDocumento, SelectedImputadoDocumento.DOCUMENTO);
                PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.OSCURECER_FONDO);
                v.Owner   = PopUpsViewModels.MainWindow;
                v.Closed += (s, e) => { PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.OSCURECER_FONDO); };
                v.Show();
                //}
            }
        }