public void GenerarReporte()
        {
            var Centro = new cCentro().Obtener(GlobalVar.gCentro).FirstOrDefault();

            try
            {
                #region EncabezadoReporte
                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(),
                });
                #endregion

                #region ListaEstancias
                List <cEstancia> lEstancia = new List <cEstancia>();
                var edificio = SelectedEdificio.ID_EDIFICIO != TODOS_LOS_EDIFICIOS ? SelectedEdificio.ID_EDIFICIO : (short?)0;
                var sector   = SelectedEdificio.ID_EDIFICIO != TODOS_LOS_EDIFICIOS ? (SelectedSector.ID_SECTOR != TODOS_LOS_SECTORES ? SelectedSector.ID_SECTOR : (short?)0) : (short?)0;
                lEstancia.AddRange(new cCelda().ObtenerCeldas(
                                       GlobalVar.gCentro,
                                       edificio,
                                       sector).
                                   AsEnumerable().
                                   Where(w =>
                                         w.CAMA.Count > 0).
                                   ToList().
                                   Select(s => new cEstancia()
                {
                    Pagina        = 0,
                    CantidadCamas = s.CAMA.Count,
                    Edificio      = s.ID_EDIFICIO,
                    Sector        = s.ID_SECTOR,
                    Celda         = s.ID_CELDA,
                    EdificioDescr = new cEdificio().Obtener(s.ID_EDIFICIO, GlobalVar.gCentro).DESCR.TrimEnd(),
                    SectorDescr   = new cSector().Obtener(s.ID_SECTOR, s.ID_EDIFICIO, GlobalVar.gCentro).DESCR.TrimEnd(),
                    NumeroLista   = 1
                }).
                                   OrderBy(o => o.Edificio).
                                   ThenBy(t => t.Sector).
                                   ThenBy(t => t.Celda).
                                   ToList());


                #endregion

                #region PaseLista
                lEstancia = lEstancia.OrderBy(o => o.Edificio).ThenBy(t => t.Sector).ThenBy(t => t.Celda).ToList(); //ThenBy(tB => tB.NumeroLista).ToList();
                var lPaseLista = new cCama().
                                 ObtenerCamasEstancias(lEstancia.Select(s =>
                                                                        new CELDA()
                {
                    ID_CENTRO   = GlobalVar.gCentro,
                    ID_EDIFICIO = (short)s.Edificio,
                    ID_SECTOR   = (short)s.Sector,
                    ID_CELDA    = s.Celda
                }).ToList()).
                                 AsEnumerable().
                                 Select(s => new cPaseLista()
                {
                    Celda         = s.ID_CELDA,
                    Edificio      = s.ID_EDIFICIO,
                    EdificioDescr = s.CELDA != null ? s.CELDA.SECTOR != null ? s.CELDA.SECTOR.EDIFICIO != null ? !string.IsNullOrEmpty(s.CELDA.SECTOR.EDIFICIO.DESCR) ? s.CELDA.SECTOR.EDIFICIO.DESCR.Trim() : string.Empty : string.Empty : string.Empty : string.Empty,
                    Expediente    = (s.INGRESO != null && s.ESTATUS != CAMA_LIBERADA) ? (s.INGRESO.Where(w => w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.LIBERADO &&
                                                                                                         w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.TRASLADADO &&
                                                                                                         w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.SUJETO_A_PROCESO_EN_LIBERTAD &&
                                                                                                         w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.DISCRECIONAL).Any() ? new Func <string>(() =>
                    {
                        var Ingreso = s.INGRESO.Where(w => w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.LIBERADO &&
                                                      w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.TRASLADADO &&
                                                      w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.SUJETO_A_PROCESO_EN_LIBERTAD &&
                                                      w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.DISCRECIONAL).
                                      OrderByDescending(oD => oD.ID_ANIO).
                                      ThenByDescending(tD => tD.ID_IMPUTADO).
                                      FirstOrDefault();
                        return(string.Format("{0}/{1}", Ingreso != null ? Ingreso.ID_ANIO : new short(), Ingreso != null ? Ingreso.ID_IMPUTADO : new Int32()));
                    })() : "/") : "/",
                    Nombre = (s.INGRESO != null && s.ESTATUS != CAMA_LIBERADA) ? (s.INGRESO.Where(w => w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.LIBERADO &&
                                                                                                  w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.TRASLADADO &&
                                                                                                  w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.SUJETO_A_PROCESO_EN_LIBERTAD &&
                                                                                                  w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.DISCRECIONAL).Any() ? new Func <string>(() =>
                    {
                        var Imputado = s.INGRESO.Where(w => w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.LIBERADO &&
                                                       w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.TRASLADADO &&
                                                       w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.SUJETO_A_PROCESO_EN_LIBERTAD &&
                                                       w.ID_ESTATUS_ADMINISTRATIVO != (short)enumEstatusAdministrativo.DISCRECIONAL).
                                       OrderByDescending(oD => oD.ID_ANIO).
                                       ThenByDescending(tD => tD.ID_IMPUTADO).
                                       FirstOrDefault().IMPUTADO;
                        return(string.Format("{1} {2} {0}", Imputado != null ? !string.IsNullOrEmpty(Imputado.NOMBRE) ? Imputado.NOMBRE.TrimEnd() : string.Empty : string.Empty,
                                             Imputado != null ? !string.IsNullOrEmpty(Imputado.PATERNO) ? Imputado.PATERNO.TrimEnd() : string.Empty : string.Empty,
                                             Imputado != null ? !string.IsNullOrEmpty(Imputado.MATERNO) ? Imputado.MATERNO.TrimEnd() : string.Empty : string.Empty));
                    })() : "/") : "/",
                    Sector      = s.ID_SECTOR,
                    SectorDescr = s.CELDA.SECTOR.DESCR,
                    Ubicacion   = string.Format("{0}-{1}{2}-{3}",
                                                s.CELDA != null ? s.CELDA.SECTOR != null ? s.CELDA.SECTOR.EDIFICIO != null ? !string.IsNullOrEmpty(s.CELDA.SECTOR.EDIFICIO.DESCR) ? s.CELDA.SECTOR.EDIFICIO.DESCR.TrimEnd() : string.Empty : string.Empty : string.Empty : string.Empty,
                                                s.CELDA != null ? s.CELDA.SECTOR != null ? !string.IsNullOrEmpty(s.CELDA.SECTOR.DESCR) ? s.CELDA.SECTOR.DESCR.TrimEnd() : string.Empty : string.Empty : string.Empty,
                                                s.ID_CELDA.TrimStart().TrimEnd(), s.ID_CAMA)
                }).ToList();
                #endregion

                Application.Current.Dispatcher.Invoke((Action)(delegate
                {
                    #region Reporte
                    Reporte.LocalReport.ReportPath = "Reportes/rImpresionListas.rdlc";
                    Reporte.LocalReport.DataSources.Clear();
                    ReportDataSource ReportDataSource_Encabezado = new ReportDataSource();
                    ReportDataSource_Encabezado.Name = "DataSet1";
                    ReportDataSource_Encabezado.Value = datosReporte;
                    Reporte.LocalReport.DataSources.Add(ReportDataSource_Encabezado);

                    ReportDataSource Camas = new ReportDataSource();
                    Camas.Name = "DataSet2";
                    Camas.Value = lPaseLista;
                    Reporte.LocalReport.DataSources.Add(Camas);

                    #endregion

                    #region Parametros
                    Reporte.LocalReport.SetParameters(new ReportParameter("Mes_Seleccionado", Ventana.ListaMeses.SelectedItem.ToString()));
                    Reporte.LocalReport.SetParameters(new ReportParameter("Anio", Fechas.GetFechaDateServer.Year.ToString()));
                    Reporte.LocalReport.SetParameters(new ReportParameter("Mes", Fechas.GetFechaDateServer.Month.ToString()));
                    Reporte.LocalReport.SetParameters(new ReportParameter("Dia", Fechas.GetFechaDateServer.Day.ToString()));
                    #endregion

                    Reporte.Refresh();
                    Reporte.RefreshReport();
                }));
            }
            catch (Exception ex)
            {
                throw new ApplicationException(ex.Message);
            }
        }
        public void ObtenerIngresos()
        {
            short?nulo = null;

            var Ingresos = new cIngreso().ObtenerIngresosActivosFiltradosPorEdificio(GlobalVar.gCentro,
                                                                                     SelectedEdificio.ID_EDIFICIO != TODOS_LOS_EDIFICIOS ? SelectedEdificio.ID_EDIFICIO : nulo,
                                                                                     SelectedEdificio.ID_EDIFICIO != TODOS_LOS_EDIFICIOS ? (SelectedSector.ID_SECTOR != TODOS_LOS_SECTORES ? SelectedSector.ID_SECTOR : nulo) : nulo, Pagina,
                                                                                     BusquedaAvanzadaChecked && AnioBuscar.HasValue ? AnioBuscar.Value : 0,
                                                                                     BusquedaAvanzadaChecked && FolioBuscar.HasValue ? FolioBuscar.Value : 0,
                                                                                     BusquedaAvanzadaChecked && !string.IsNullOrEmpty(NombreBuscar) ? NombreBuscar : string.Empty,
                                                                                     BusquedaAvanzadaChecked && !string.IsNullOrEmpty(ApellidoPaternoBuscar) ? ApellidoPaternoBuscar : string.Empty,
                                                                                     BusquedaAvanzadaChecked && !string.IsNullOrEmpty(ApellidoMaternoBuscar) ? ApellidoMaternoBuscar : string.Empty).ToList();

            if (Ingresos.Any())
            {
                Pagina++;
                SeguirCargandoIngresos = true;
                var lista_ingresos = new List <cCredencialBiblioteca>(ListaIngresos);
                foreach (var Ingreso in Ingresos)
                {
                    var foto_ingreso = Ingreso.INGRESO_BIOMETRICO.Where(w => w.BIOMETRICO_TIPO.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO).FirstOrDefault();
                    var foto_centro  = Ingreso.INGRESO_BIOMETRICO.Where(w => w.BIOMETRICO_TIPO.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_SEGUIMIENTO).FirstOrDefault();
                    var cama         = new cCama().ObtenerCama((short)Ingreso.ID_UB_CENTRO, (short)Ingreso.ID_UB_EDIFICIO, (short)Ingreso.ID_UB_SECTOR, Ingreso.ID_UB_CELDA, (short)Ingreso.ID_UB_CAMA);
                    var interno      = new cCredencialBiblioteca()
                    {
                        Id_Centro     = Ingreso.ID_CENTRO,
                        Id_Anio       = Ingreso.ID_ANIO,
                        Id_Imputado   = Ingreso.ID_IMPUTADO,
                        Id_Ingreso    = Ingreso.ID_INGRESO,
                        Nombre        = !string.IsNullOrEmpty(Ingreso.IMPUTADO.NOMBRE) ? Ingreso.IMPUTADO.NOMBRE.TrimEnd() : string.Empty,
                        Paterno       = !string.IsNullOrEmpty(Ingreso.IMPUTADO.PATERNO) ? Ingreso.IMPUTADO.PATERNO.TrimEnd() : string.Empty,
                        Materno       = !string.IsNullOrEmpty(Ingreso.IMPUTADO.MATERNO) ? Ingreso.IMPUTADO.MATERNO.TrimEnd() : string.Empty,
                        CentroDescr   = Ingreso.CENTRO.DESCR.Replace("CERESO ", "").TrimStart().TrimEnd(),
                        EdificioDescr = cama.CELDA.SECTOR.EDIFICIO.DESCR.TrimEnd(),
                        SectorDescr   = cama.CELDA.SECTOR.DESCR.TrimEnd(),
                        Celda         = cama.ID_CELDA.TrimStart().TrimEnd(),
                        Foto          = foto_centro != null ? foto_centro.BIOMETRICO : (foto_ingreso != null ? foto_ingreso.BIOMETRICO : new Imagenes().getImagenPerson()),
                        CodigoBarras  = ObtenerCodigoBarras(Ingreso.IMPUTADO.NIP),
                        Seleccionado  = false,
                        FOTOCENTRO    = foto_centro != null ? foto_centro.BIOMETRICO : new Imagenes().getImagenPerson(),
                        FOTOINGRESO   = foto_ingreso != null ? foto_ingreso.BIOMETRICO : new Imagenes().getImagenPerson(),
                    };
                    if (ListaIngresosSeleccionados.Any())
                    {
                        if (!(ListaIngresosSeleccionados.Count(c =>
                                                               c.Id_Centro == interno.Id_Centro &&
                                                               c.Id_Anio == interno.Id_Anio &&
                                                               c.Id_Imputado == interno.Id_Imputado &&
                                                               c.Id_Ingreso == interno.Id_Ingreso) > 0))
                        {
                            interno.Seleccionado = SeleccionarTodosIngresos;
                            lista_ingresos.Add(interno);
                        }
                    }
                    else
                    {
                        interno.Seleccionado = SeleccionarTodosIngresos;
                        lista_ingresos.Add(interno);
                    }
                }
                ListaIngresos = lista_ingresos;
                EmptyVisible  = !lista_ingresos.Any();
            }
            else
            {
                SeguirCargandoIngresos = false;
            }
        }
Exemplo n.º 3
0
        public async void GenerarReporte()
        {
            try
            {
                var lVisitas      = new List <cControlVisita>();
                var datosReporte  = new List <cReporteDatos>();
                var VisitasGenero = new List <cVisitantesGenero>();

                await StaticSourcesViewModel.CargarDatosMetodoAsync(() =>
                {
                    Application.Current.Dispatcher.Invoke((Action)(delegate
                    {
                        ReportViewerVisible = Visibility.Collapsed;
                    }));
                    var centro = new cCentro().Obtener(GlobalVar.gCentro).FirstOrDefault();

                    var totales = new List <cControlVisitaTotales>();
                    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(),
                    });

                    var consulta_cama = new cCama();

                    double Total_Resultados = new cAduana().
                                              ObtenerVisitas(SelectedFechaInicial, SelectedFechaFinal, Parametro.CONTROL_VISITANTES_REPORTE).Count();
                    var Paginas = Math.Abs(Total_Resultados - (int)Total_Resultados) < double.Epsilon ? ((int)((Total_Resultados / VISITANTES_POR_PAGINA) + 1)) : ((int)(Total_Resultados / VISITANTES_POR_PAGINA));

                    for (int i = 0; i < Paginas; i++)
                    {
                        lVisitas.AddRange(new cAduana().
                                          ObtenerVisitas(SelectedFechaInicial, SelectedFechaFinal, Parametro.CONTROL_VISITANTES_REPORTE).OrderBy(o => o.ID_ADUANA).Skip(ULTIMO_REGISTRO).Take(VISITANTES_POR_PAGINA).
                                          AsEnumerable().
                                          Select(s => new cControlVisita()
                        {
                            Hora_Ingreso    = string.Format("{0}:{1}", s.ENTRADA_FEC.Value.Hour < 10 ? string.Format("0{0}", s.ENTRADA_FEC.Value.Hour.ToString()) : s.ENTRADA_FEC.Value.Hour.ToString(), s.ENTRADA_FEC.Value.Minute < 10 ? string.Format("0{0}", s.ENTRADA_FEC.Value.Minute.ToString()) : s.ENTRADA_FEC.Value.Minute.ToString()),
                            Hora_Salida     = s.SALIDA_FEC.HasValue ? string.Format("{0}:{1}", s.SALIDA_FEC.Value.Hour < 10 ? string.Format("0{0}", s.SALIDA_FEC.Value.Hour.ToString()) : s.SALIDA_FEC.Value.Hour.ToString(), s.SALIDA_FEC.Value.Minute < 10 ? string.Format("0{0}", s.SALIDA_FEC.Value.Minute.ToString()) : s.SALIDA_FEC.Value.Minute.ToString()) : string.Empty,
                            Centro          = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().ID_CENTRO : new short(),
                            Id_Anio         = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().ID_ANIO : new short(),
                            Id_Imputado     = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().ID_IMPUTADO : new short(),
                            Id_Persona      = s.ID_PERSONA,
                            Paterno_Ingreso = s.ADUANA_INGRESO.Any() ? !string.IsNullOrEmpty(s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.PATERNO) ?
                                              s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.PATERNO.TrimEnd() : string.Empty : string.Empty,
                            Materno_Ingreso = s.ADUANA_INGRESO.Any() ? !string.IsNullOrEmpty(s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.MATERNO) ?
                                              s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.MATERNO.TrimEnd() : string.Empty : string.Empty,
                            Nombre_Ingreso = s.ADUANA_INGRESO.Any() ? !string.IsNullOrEmpty(s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.NOMBRE) ?
                                             s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.NOMBRE.TrimEnd() : string.Empty : string.Empty,
                            Ubicacion_Ingreso = new Func <string>(() =>
                            {
                                var ingreso = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO : null;

                                if (ingreso != null)
                                {
                                    if (ingreso.ID_UB_CENTRO != null &&
                                        ingreso.ID_UB_EDIFICIO != null &&
                                        ingreso.ID_UB_SECTOR != null &&
                                        ingreso.ID_UB_CELDA != null &&
                                        ingreso.ID_UB_CAMA != null)
                                    {
                                        var cama = consulta_cama.ObtenerCama((short)ingreso.ID_UB_CENTRO, (short)ingreso.ID_UB_EDIFICIO, (short)ingreso.ID_UB_SECTOR, ingreso.ID_UB_CELDA, (short)ingreso.ID_UB_CAMA);
                                        if (cama != null)
                                        {
                                            return(string.Format("{0}-{1}-{2}",
                                                                 cama.CELDA != null ? cama.CELDA.SECTOR != null ? cama.CELDA.SECTOR.EDIFICIO != null ? !string.IsNullOrEmpty(cama.CELDA.SECTOR.EDIFICIO.DESCR) ? cama.CELDA.SECTOR.EDIFICIO.DESCR.TrimEnd() : string.Empty : string.Empty : string.Empty : string.Empty,
                                                                 cama.CELDA != null ? cama.CELDA.SECTOR != null ? !string.IsNullOrEmpty(cama.CELDA.SECTOR.DESCR) ? cama.CELDA.SECTOR.DESCR.TrimEnd() : string.Empty : string.Empty : string.Empty,
                                                                 cama.CELDA != null ? cama.CELDA.ID_CELDA.TrimStart().TrimEnd() : string.Empty));
                                        }
                                    }
                                }
                                return(string.Empty);
                            })(),
                            Usuario           = s.USUARIO != null ? s.USUARIO.ID_USUARIO : string.Empty,
                            Paterno_Visitante = s.PERSONA != null ? !string.IsNullOrEmpty(s.PERSONA.PATERNO) ? s.PERSONA.PATERNO.TrimEnd() : string.Empty : string.Empty,
                            Materno_Visitante = s.PERSONA != null ? !string.IsNullOrEmpty(s.PERSONA.MATERNO) ? s.PERSONA.MATERNO.TrimEnd() : string.Empty : string.Empty,
                            Nombre_Visitante  = s.PERSONA != null ? !string.IsNullOrEmpty(s.PERSONA.NOMBRE) ? s.PERSONA.NOMBRE.TrimEnd() : string.Empty : string.Empty,
                            Tipo_Visita       = new Func <string>(() =>
                            {
                                enumTipoPersona TipoPersona = (enumTipoPersona)s.ID_TIPO_PERSONA;
                                var TipoVisita = string.Empty;
                                switch (TipoPersona)
                                {
                                case enumTipoPersona.ABOGADO:
                                    TipoVisita = string.Format(VISITA_LEGAL + " ({0})", s.TIPO_PERSONA != null ? !string.IsNullOrEmpty(s.TIPO_PERSONA.DESCR) ? s.TIPO_PERSONA.DESCR.TrimEnd() : string.Empty : string.Empty);
                                    break;

                                case enumTipoPersona.VISITA:
                                    TipoVisita = s.ADUANA_INGRESO.Any() ? string.Format("{0}", s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INTIMA == ES_VISITA_INTIMA ? VISITA_INTIMA : VISITA_FAMILIAR) : string.Empty;
                                    break;
                                }
                                return(TipoVisita);
                            })(),
                            Categoria = ObtenerEdad(s.PERSONA.FEC_NACIMIENTO.Value) < MAYORIA_DE_EDAD ? MENORES : (s.PERSONA.SEXO == FEMENINO ? MUJERES : HOMBRES),
                        }).
                                          ToList());
                        ULTIMO_REGISTRO += VISITANTES_POR_PAGINA;
                    }


                    #region Informacion_Reporte
                    //lVisitas = new cAduana().
                    //    ObtenerVisitas(SelectedFechaInicial, SelectedFechaFinal, Parametro.CONTROL_VISITANTES_REPORTE).
                    //    AsEnumerable().
                    //    Select(s => new cControlVisita()
                    //    {
                    //        Hora_Ingreso = string.Format("{0}:{1}", s.ENTRADA_FEC.Value.Hour < 10 ? string.Format("0{0}", s.ENTRADA_FEC.Value.Hour.ToString()) : s.ENTRADA_FEC.Value.Hour.ToString(), s.ENTRADA_FEC.Value.Minute < 10 ? string.Format("0{0}", s.ENTRADA_FEC.Value.Minute.ToString()) : s.ENTRADA_FEC.Value.Minute.ToString()),
                    //        Hora_Salida = s.SALIDA_FEC.HasValue ? string.Format("{0}:{1}", s.SALIDA_FEC.Value.Hour < 10 ? string.Format("0{0}", s.SALIDA_FEC.Value.Hour.ToString()) : s.SALIDA_FEC.Value.Hour.ToString(), s.SALIDA_FEC.Value.Minute < 10 ? string.Format("0{0}", s.SALIDA_FEC.Value.Minute.ToString()) : s.SALIDA_FEC.Value.Minute.ToString()) : string.Empty,
                    //        Id_Anio = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().ID_ANIO : new short(),
                    //        Id_Imputado = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().ID_IMPUTADO : new short(),
                    //        Id_Persona = s.ID_PERSONA,
                    //        Paterno_Ingreso = s.ADUANA_INGRESO.Any() ? !string.IsNullOrEmpty(s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.PATERNO) ?
                    //                s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.PATERNO.TrimEnd() : string.Empty : string.Empty,
                    //        Materno_Ingreso = s.ADUANA_INGRESO.Any() ? !string.IsNullOrEmpty(s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.MATERNO) ?
                    //                s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.MATERNO.TrimEnd() : string.Empty : string.Empty,
                    //        Nombre_Ingreso = s.ADUANA_INGRESO.Any() ? !string.IsNullOrEmpty(s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.NOMBRE) ?
                    //                s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO.IMPUTADO.NOMBRE.TrimEnd() : string.Empty : string.Empty,
                    //        Ubicacion_Ingreso = new Func<string>(() =>
                    //        {
                    //            var ingreso = s.ADUANA_INGRESO.Any() ? s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INGRESO : null;

                    //            if (ingreso != null)
                    //            {
                    //                if (ingreso.ID_UB_CENTRO != null &&
                    //                    ingreso.ID_UB_EDIFICIO != null &&
                    //                    ingreso.ID_UB_SECTOR != null &&
                    //                    ingreso.ID_UB_CELDA != null &&
                    //                    ingreso.ID_UB_CAMA != null)
                    //                {
                    //                    var cama = consulta_cama.ObtenerCama((short)ingreso.ID_UB_CENTRO, (short)ingreso.ID_UB_EDIFICIO, (short)ingreso.ID_UB_SECTOR, ingreso.ID_UB_CELDA, (short)ingreso.ID_UB_CAMA);
                    //                    if (cama != null)
                    //                        return string.Format("{0}-{1}-{2}",
                    //                            cama.CELDA != null ? cama.CELDA.SECTOR != null ? cama.CELDA.SECTOR.EDIFICIO != null ? !string.IsNullOrEmpty(cama.CELDA.SECTOR.EDIFICIO.DESCR) ? cama.CELDA.SECTOR.EDIFICIO.DESCR.TrimEnd() : string.Empty : string.Empty : string.Empty : string.Empty,
                    //                            cama.CELDA != null ? cama.CELDA.SECTOR != null ? !string.IsNullOrEmpty(cama.CELDA.SECTOR.DESCR) ? cama.CELDA.SECTOR.DESCR.TrimEnd() : string.Empty : string.Empty : string.Empty,
                    //                            cama.CELDA != null ? cama.CELDA.ID_CELDA.TrimStart().TrimEnd() : string.Empty);
                    //                }
                    //            }
                    //            return string.Empty;
                    //        })(),
                    //        Usuario = s.USUARIO != null ? s.USUARIO.ID_USUARIO : string.Empty,
                    //        Paterno_Visitante = s.PERSONA != null ? !string.IsNullOrEmpty(s.PERSONA.PATERNO) ? s.PERSONA.PATERNO.TrimEnd() : string.Empty : string.Empty,
                    //        Materno_Visitante = s.PERSONA != null ? !string.IsNullOrEmpty(s.PERSONA.MATERNO) ? s.PERSONA.MATERNO.TrimEnd() : string.Empty : string.Empty,
                    //        Nombre_Visitante = s.PERSONA != null ? !string.IsNullOrEmpty(s.PERSONA.NOMBRE) ? s.PERSONA.NOMBRE.TrimEnd() : string.Empty : string.Empty,
                    //        Tipo_Visita = new Func<string>(() =>
                    //        {
                    //            enumTipoPersona TipoPersona = (enumTipoPersona)s.ID_TIPO_PERSONA;
                    //            var TipoVisita = string.Empty;
                    //            switch (TipoPersona)
                    //            {
                    //                case enumTipoPersona.ABOGADO:
                    //                    TipoVisita = string.Format(VISITA_LEGAL + " ({0})", s.TIPO_PERSONA != null ? !string.IsNullOrEmpty(s.TIPO_PERSONA.DESCR) ? s.TIPO_PERSONA.DESCR.TrimEnd() : string.Empty : string.Empty);
                    //                    break;
                    //                case enumTipoPersona.VISITA:
                    //                    TipoVisita = s.ADUANA_INGRESO.Any() ? string.Format("{0}", s.ADUANA_INGRESO.Where(w => w.ID_ADUANA == s.ID_ADUANA).FirstOrDefault().INTIMA == ES_VISITA_INTIMA ? VISITA_INTIMA : VISITA_FAMILIAR) : string.Empty;
                    //                    break;
                    //            }
                    //            return TipoVisita;
                    //        })(),
                    //        Categoria = ObtenerEdad(s.PERSONA.FEC_NACIMIENTO.Value) < MAYORIA_DE_EDAD ? MENORES : (s.PERSONA.SEXO == FEMENINO ? MUJERES : HOMBRES),
                    //    }).
                    //    ToList();
                    #endregion
                    Application.Current.Dispatcher.Invoke((Action)(delegate
                    {
                        ReportViewerVisible = Visibility.Visible;
                    }));
                });


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

                ReportDataSource ReportDataSource_Encabezado = new ReportDataSource();
                ReportDataSource_Encabezado.Name  = "DataSet2";
                ReportDataSource_Encabezado.Value = datosReporte;

                ReportDataSource ReportDataSource = new ReportDataSource();
                ReportDataSource.Name  = "DataSet1";
                ReportDataSource.Value = lVisitas;


                Reporte.LocalReport.DataSources.Add(ReportDataSource_Encabezado);
                Reporte.LocalReport.DataSources.Add(ReportDataSource);
                #endregion

                #region Grafica
                ReporteGrafica.LocalReport.ReportPath = "Reportes/rControlVisitantesGrafica.rdlc";
                ReporteGrafica.LocalReport.DataSources.Clear();

                ReportDataSource ReportDataSource_Encabezado_Grafica = new ReportDataSource();
                ReportDataSource_Encabezado_Grafica.Name  = "DataSet1";
                ReportDataSource_Encabezado_Grafica.Value = datosReporte;

                ReportDataSource ReportDataSource_Grafica = new ReportDataSource();
                ReportDataSource_Grafica.Name  = "DataSet3";
                ReportDataSource_Grafica.Value = lVisitas;

                ReporteGrafica.LocalReport.DataSources.Add(ReportDataSource_Encabezado_Grafica);
                ReporteGrafica.LocalReport.DataSources.Add(ReportDataSource_Grafica);
                #endregion

                #region Parametros
                Reporte.LocalReport.SetParameters(new ReportParameter("FechaInicial", string.Format("{0} DE {1} DEL {2}", SelectedFechaInicial.Day, SelectedFechaInicial.Month, SelectedFechaInicial.Year)));
                Reporte.LocalReport.SetParameters(new ReportParameter("FechaFinal", string.Format("{0} DE {1} DEL {2}", SelectedFechaFinal.Day, SelectedFechaFinal.Month, SelectedFechaFinal.Year)));
                ReporteGrafica.LocalReport.SetParameters(new ReportParameter("FechaInicial", string.Format("{0} DE {1} DEL {2}", SelectedFechaInicial.Day, SelectedFechaInicial.Month, SelectedFechaInicial.Year)));
                ReporteGrafica.LocalReport.SetParameters(new ReportParameter("FechaFinal", string.Format("{0} DE {1} DEL {2}", SelectedFechaFinal.Day, SelectedFechaFinal.Month, SelectedFechaFinal.Year)));
                ReporteGrafica.LocalReport.SetParameters(new ReportParameter("TotalVisitantes", lVisitas.Count.ToString()));
                #endregion


                Reporte.Refresh();
                Reporte.RefreshReport();
                ReporteGrafica.Refresh();
                ReporteGrafica.RefreshReport();
            }
            catch (Exception ex)
            {
                throw new ApplicationException(ex.Message);
            }
        }