//NIP PARA DAR ENCONTRAR A LOS CUSTODIOS (AUSENTES)
        private async void CompararNIPAsistenciaCustodio(string nip)
        {
            try
            {
                ListResultadoCustodio = ListResultadoCustodio ?? new List <ResultadoBusquedaBiometricoCustodio>();
                if (BuscarNIP != string.Empty)
                {
                    long NIP = Convert.ToInt64(nip);
                    //Se busca el custodio por medio del ID obtenido
                    CustodioSelect = new cEmpleado().ObtenerEmpleadoPorDepartamento(NIP, (short)enumAreaTrabajo.COMANDANCIA);

                    if (CustodioSelect != null)
                    {
                        ListResultadoCustodio.Add(new ResultadoBusquedaBiometricoCustodio()
                        {
                            //Se muestra la información del custodio encontrado
                            Nombre     = string.IsNullOrEmpty(CustodioSelect.PERSONA.NOMBRE) ? string.Empty : CustodioSelect.PERSONA.NOMBRE.TrimEnd(),
                            CPaterno   = string.IsNullOrEmpty(CustodioSelect.PERSONA.PATERNO) ? string.Empty : CustodioSelect.PERSONA.PATERNO.TrimEnd(),
                            CMaterno   = string.IsNullOrEmpty(CustodioSelect.PERSONA.MATERNO) ? string.Empty : CustodioSelect.PERSONA.MATERNO.TrimEnd(),
                            IdPersona  = CustodioSelect.ID_EMPLEADO,
                            ENCONTRADO = true,
                            Persona    = CustodioSelect.PERSONA
                        });
                        ImagenCustodio = new cPersonaBiometrico().ObtenerTodos(CustodioSelect.ID_EMPLEADO, (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO).Any() ? new cPersonaBiometrico().ObtenerTodos(CustodioSelect.ID_EMPLEADO, (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO).FirstOrDefault().BIOMETRICO : new Imagenes().getImagenPerson();
                        //SE ENCONTRO CUSTODIO
                        CambiarMensajeNIP(enumMensajeNIP.ENCONTRADO);
                        NIPCapturaVisible = false;
                    }
                    else
                    {
                        //NO SE ENCONTRO CUSTODIO
                        CambiarMensajeNIP(enumMensajeNIP.NO_ENCONTRADO);
                    }
                }
                else
                {
                    //NIP VIENE VACIO
                    CambiarMensajeNIP(enumMensajeNIP.NO_ENCONTRADO);
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al obtener información.", ex);
            }
        }
        //HUELLA PARA LOS CUSTODIOS
        private Task <bool> CompararHuellaCustodio(byte[] Huella = null, enumTipoBiometrico?Finger = null)
        {
            try
            {
                var bytesHuella = FingerPrintData != null?FeatureExtraction.CreateFmdFromFid(FingerPrintData, Constants.Formats.Fmd.ANSI).Data.Bytes : null ?? Huella;

                var verifyFinger = Finger ?? (DD_DedoHuella.HasValue ? DD_DedoHuella.Value : enumTipoBiometrico.INDICE_DERECHO);
                ImagenCustodio                = null;
                ListResultadoCustodio         = null;
                TextoRegistroEdificioCustodio = null;

                if (bytesHuella == null)
                {
                    Application.Current.Dispatcher.Invoke((System.Action)(delegate
                    {
                        if (Finger == null)
                        {
                            ScannerMessage = "Vuelve a capturar las huellas";
                        }
                        else
                        {
                            ScannerMessage = "Siguiente Huella";
                        }
                        FocusAceptarBusquedaHuella = true;
                        ColorMensaje = new SolidColorBrush(Colors.DarkOrange);
                        ShowLinea    = Visibility.Collapsed;
                    }));
                }
                Application.Current.Dispatcher.Invoke((System.Action)(delegate
                {
                    ScannerMessage             = "Procesando...";
                    ColorMensaje               = new SolidColorBrush(System.Windows.Media.Color.FromRgb(51, 115, 242));
                    FocusAceptarBusquedaHuella = false;
                }));
                var Service = new BiometricoServiceClient();
                if (Service == null)
                {
                    Application.Current.Dispatcher.Invoke((System.Action)(delegate
                    {
                        ScannerMessage             = "Error en el servicio de comparación";
                        FocusAceptarBusquedaHuella = true;
                        ColorMensaje = new SolidColorBrush(Colors.Red);
                        ShowLinea    = Visibility.Collapsed;
                    }));
                }
                var CompareResult = Service.CompararHuellaPersona(new ComparationRequest {
                    BIOMETRICO = bytesHuella, ID_TIPO_BIOMETRICO = verifyFinger, ID_TIPO_FORMATO = enumTipoFormato.FMTO_DP, ID_TIPO_PERSONA = enumTipoPersona.PERSONA_EMPLEADO, ID_CENTRO = GlobalVar.gCentro
                });
                //var CompareResult = Service.CompararHuellaPersona(new ComparationRequest { BIOMETRICO = bytesHuella, ID_TIPO_BIOMETRICO = verifyFinger, ID_TIPO_FORMATO = enumTipoFormato.FMTO_DP, ID_TIPO_PERSONA = enumTipoPersona.PERSONA_EMPLEADO });

                if (CompareResult.Identify)
                {
                    ListResultadoCustodio = ListResultadoCustodio ?? new List <ResultadoBusquedaBiometricoCustodio>();

                    if (CompareResult.Result.Count() > 1)
                    {
                        TextoRegistroEdificioCustodio = "NOTA: Se encontró más de una coincidencia, por favor intente de nuevo";
                        ScannerMessage = "";
                        return(TaskEx.FromResult(false));
                    }
                    else
                    {
                        foreach (var item in CompareResult.Result)
                        {
                            var custodio = new cPersonaBiometrico().GetData().Where(w => w.ID_PERSONA == item.ID_PERSONA && (w.ID_TIPO_BIOMETRICO == (DD_DedoHuella.HasValue ? (short)DD_DedoHuella.Value : (short)enumTipoBiometrico.INDICE_DERECHO) && w.ID_FORMATO == (short)enumTipoFormato.FMTO_DP)).OrderBy(o => o.ID_PERSONA).FirstOrDefault();

                            ShowContinue = Visibility.Collapsed;
                            if (custodio == null)
                            {
                                continue;
                            }

                            Application.Current.Dispatcher.Invoke((System.Action)(delegate
                            {
                                var custodio_biometrico = custodio.PERSONA;
                                var FotoBusquedaHuella  = new Imagenes().ConvertByteToBitmap(new Imagenes().getImagenPerson());

                                if (custodio_biometrico != null)
                                {
                                    if (custodio_biometrico.PERSONA_BIOMETRICO.Where(w => w.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_SEGUIMIENTO && w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG).Any())
                                    {
                                        FotoBusquedaHuella = new Imagenes().ConvertByteToBitmap(custodio_biometrico.PERSONA_BIOMETRICO.Where(w => w.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_SEGUIMIENTO && w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG).SingleOrDefault().BIOMETRICO);
                                    }
                                    else
                                    if (custodio_biometrico.PERSONA_BIOMETRICO.Where(w => w.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO && w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG).Any())
                                    {
                                        FotoBusquedaHuella = new Imagenes().ConvertByteToBitmap(custodio_biometrico.PERSONA_BIOMETRICO.Where(w => w.ID_TIPO_BIOMETRICO == (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO && w.ID_FORMATO == (short)enumTipoFormato.FMTO_JPG).SingleOrDefault().BIOMETRICO);
                                    }
                                }

                                ListResultadoCustodio.Add(new ResultadoBusquedaBiometricoCustodio()
                                {
                                    IdPersona  = custodio.PERSONA.ID_PERSONA,
                                    Nombre     = string.IsNullOrEmpty(custodio.PERSONA.NOMBRE) ? string.Empty : custodio.PERSONA.NOMBRE.TrimEnd(),
                                    CPaterno   = string.IsNullOrEmpty(custodio.PERSONA.PATERNO) ? string.Empty : custodio.PERSONA.PATERNO.TrimEnd(),
                                    CMaterno   = string.IsNullOrEmpty(custodio.PERSONA.MATERNO) ? string.Empty : custodio.PERSONA.MATERNO.TrimEnd(),
                                    ENCONTRADO = true,
                                    Persona    = custodio.PERSONA
                                });
                            }));
                            ImagenCustodio = new cPersonaBiometrico().ObtenerTodos(custodio.ID_PERSONA, (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO).Any() ? new cPersonaBiometrico().ObtenerTodos(custodio.ID_PERSONA, (short)enumTipoBiometrico.FOTO_FRENTE_REGISTRO).FirstOrDefault().BIOMETRICO : new Imagenes().getImagenPerson();
                        }
                    }

                    foreach (var llenar in ListResultadoCustodio)
                    {
                        var igual = ListaCustodio.Where(w => w.IdPersona == llenar.IdPersona).Count();

                        if (igual == 0)
                        {
                            ListaCustodio.Add(llenar);
                        }
                        else
                        {
                            llenar.ENCONTRADO = false;
                        }
                        ListResultadoCustodio = new List <ResultadoBusquedaBiometricoCustodio>(ListResultadoCustodio);
                        ShowContinue          = Visibility.Collapsed;

                        if (ListResultadoCustodio.Any())
                        {
                            Application.Current.Dispatcher.Invoke((System.Action)(delegate
                            {
                                if (igual > 0)
                                {
                                    ScannerMessage             = "Registro repetido";
                                    FocusAceptarBusquedaHuella = true;
                                    ColorMensaje = new SolidColorBrush(Colors.Orange);
                                }
                                else if (!CancelKeepSearching)
                                {
                                    ScannerMessage             = "Registro encontrado";
                                    FocusAceptarBusquedaHuella = true;
                                    ColorMensaje = new SolidColorBrush(Colors.Green);
                                }
                            }));
                            if (Finger != null)
                            {
                                Service.Close();
                            }

                            return(TaskEx.FromResult(false));
                        }
                    }
                }
                else
                {
                    Application.Current.Dispatcher.Invoke((System.Action)(delegate
                    {
                        if (!CancelKeepSearching)
                        {
                            ScannerMessage             = "Huella no encontrada";
                            ColorMensaje               = new SolidColorBrush(Colors.Red);
                            FocusAceptarBusquedaHuella = true;
                            ImagenCustodio             = ImagenPlaceHolder.getImagenPerson();
                        }
                    }));
                    IsSucceded = false;
                    if (!CancelKeepSearching)
                    {
                        SelectedRegistroCustodio = null;
                    }
                    PropertyImage = null;
                }
                Service.Close();
                FingerPrintData = null;

                return(TaskEx.FromResult(true));
            }
            catch (System.ServiceModel.EndpointNotFoundException ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "No se pudo conectar al servidor de huellas", ex);
                return(TaskEx.FromResult(false));
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al cargar búsqueda", ex);
                return(TaskEx.FromResult(false));
            }
        }
Exemplo n.º 3
0
        public ObservableCollection <InternosAusentes> ListInternosAusentesReporte(short?ID_CENTRO, DateTime?fechaInicio = null, DateTime?fechaFin = null)
        {
            try
            {
                var Resultado = new cIngresoUbicacion().ObtenerTodos(ID_CENTRO, fechaInicio, fechaFin).ToList();

                var lstAusentes        = new ObservableCollection <InternosAusentes>();
                var lstAusentesEntrada = new ObservableCollection <InternosAusentes>();

                //var query = (from p in Resultado
                //                where p.ID_CONSEC ==
                //               (from pp in Resultado
                //                  where pp.ID_IMPUTADO == p.ID_IMPUTADO
                //                 select pp.ID_CONSEC).Max()
                //                 select p).ToList();

                //    internos_ausentes = new ObservableCollection<INGRESO_UBICACION>(query);

                foreach (var item in Resultado.OrderBy(o => o.ID_IMPUTADO).ThenBy(t => t.MOVIMIENTO_FEC))
                {
                    var consulta_imputado = item.INGRESO.IMPUTADO;
                    var consulta_interno  = item.INGRESO;
                    var edificio          = consulta_interno.CAMA.CELDA.SECTOR.EDIFICIO;
                    var sector            = consulta_interno.CAMA.CELDA.SECTOR;
                    var celda             = consulta_interno.CAMA.CELDA;

                    if (item.ESTATUS == 1)
                    {
                        lstAusentes.Add(new InternosAusentes()
                        {
                            Llave      = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO),
                            Expediente = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd(),
                            Paterno    = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd(),
                            Materno    = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd(),
                            Nombre     = string.IsNullOrEmpty(consulta_imputado.NOMBRE) ? string.Empty : consulta_imputado.NOMBRE.TrimEnd(),
                            Ubicacion  = string.IsNullOrEmpty(ubicacion_transito) ? string.Empty : ubicacion_transito.TrimEnd(),
                            Estancia   = string.Format("{0}-{1}-{2}-{3}", string.IsNullOrEmpty(edificio.DESCR) ? string.Empty : edificio.DESCR.TrimEnd(), string.IsNullOrEmpty(sector.DESCR) ? string.Empty : sector.DESCR.TrimEnd(),
                                                       string.IsNullOrEmpty(celda.ID_CELDA) ? string.Empty : celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA),
                            Actividad = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd(),
                            IdArea    = item.ID_AREA,
                            Area      = string.IsNullOrEmpty(item.ACTIVIDAD) ?
                                        string.Empty
                            : (item.ACTIVIDAD.TrimEnd() == "ESTANCIA" ?
                               string.Format("{0}-{1}-{2}-{3}", string.IsNullOrEmpty(edificio.DESCR) ? string.Empty : edificio.DESCR.TrimEnd(), string.IsNullOrEmpty(sector.DESCR) ? string.Empty : sector.DESCR.TrimEnd(),
                                             string.IsNullOrEmpty(celda.ID_CELDA) ? string.Empty : celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA)
                            : item.AREA.DESCR.TrimEnd()),
                            Fecha       = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC.Value : Fechas.GetFechaDateServer,
                            IdCentro    = consulta_imputado.ID_CENTRO,
                            IdAnio      = consulta_imputado.ID_ANIO,
                            IdIngreso   = consulta_interno.ID_INGRESO,
                            IdImputado  = consulta_imputado.ID_IMPUTADO,
                            Consecutivo = item.ID_CONSEC,
                            NIP         = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty,
                            Estatus     = item.ESTATUS,
                            Ingreso     = consulta_interno
                        });
                    }
                    else if (item.ESTATUS == 2)
                    {
                        lstAusentes.Add(new InternosAusentes()
                        {
                            Llave      = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO),
                            Expediente = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd(),
                            Paterno    = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd(),
                            Materno    = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd(),
                            Nombre     = string.IsNullOrEmpty(consulta_imputado.NOMBRE) ? string.Empty : consulta_imputado.NOMBRE.TrimEnd(),
                            Ubicacion  = item.INGRESO.EXCARCELACION.Any(w => w.ID_ESTATUS == "AC") ? item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").ID_TIPO_EX == (short)enumTipoExcarcelacion.JURIDICA ?
                                         item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().JUZGADO.DESCR
                            : item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().ID_HOSPITAL == id_hospital_otros ?
                                         item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL_OTRO :
                                         item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL.DESCR :
                                         item.AREA.DESCR.TrimEnd(),
                            Estancia  = string.Format("{0}-{1}-{2}-{3}", edificio.DESCR.TrimEnd(), sector.DESCR.TrimEnd(), celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA),
                            Actividad = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd(),
                            IdArea    = item.ID_AREA,
                            Area      = item.INGRESO.EXCARCELACION.Any(w => w.ID_ESTATUS == "AC") ? item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").ID_TIPO_EX == (short)enumTipoExcarcelacion.JURIDICA ?
                                        item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().JUZGADO.DESCR
                            : item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().ID_HOSPITAL == id_hospital_otros ?
                                        item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL_OTRO :
                                        item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL.DESCR :
                                        item.AREA.DESCR.TrimEnd(),
                            Fecha       = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC.Value : Fechas.GetFechaDateServer,
                            IdCentro    = consulta_imputado.ID_CENTRO,
                            IdAnio      = consulta_imputado.ID_ANIO,
                            IdIngreso   = consulta_interno.ID_INGRESO,
                            IdImputado  = consulta_imputado.ID_IMPUTADO,
                            Consecutivo = item.ID_CONSEC,
                            NIP         = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty,
                            Estatus     = item.ESTATUS,
                            Ingreso     = consulta_interno
                        });
                    }
                    else if (item.ESTATUS == 0)
                    {
                        lstAusentes.Add(new InternosAusentes()
                        {
                            Llave       = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO),
                            Expediente  = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd(),
                            Paterno     = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd(),
                            Materno     = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd(),
                            Nombre      = string.IsNullOrEmpty(consulta_imputado.NOMBRE) ? string.Empty : consulta_imputado.NOMBRE.TrimEnd(),
                            Ubicacion   = string.IsNullOrEmpty(item.AREA.DESCR) ? string.Empty : item.AREA.DESCR.TrimEnd(),
                            Estancia    = string.Format("{0}-{1}-{2}-{3}", edificio.DESCR.TrimEnd(), sector.DESCR.TrimEnd(), celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA),
                            Actividad   = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd(),
                            IdArea      = item.ID_AREA,
                            Area        = string.IsNullOrEmpty(item.AREA.DESCR) ? string.Empty : item.AREA.DESCR.TrimEnd(),
                            Fecha       = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC.Value : Fechas.GetFechaDateServer,
                            IdCentro    = consulta_imputado.ID_CENTRO,
                            IdAnio      = consulta_imputado.ID_ANIO,
                            IdIngreso   = consulta_interno.ID_INGRESO,
                            IdImputado  = consulta_imputado.ID_IMPUTADO,
                            Consecutivo = item.ID_CONSEC,
                            NIP         = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty,
                            Estatus     = item.ESTATUS,
                            Ingreso     = consulta_interno,
                            Entrada     = true
                        });
                    }
                }
                //FILTRO QUE TOMA EN CUENTA EL ULTIMO MOVIMIENTO DEL INTERNO
                //var query2 = (from p in lstAusentes
                //             where p.Consecutivo ==
                //             (from pp in lstAusentes
                //              where pp.IdImputado == p.IdImputado
                //              select pp.Consecutivo).Max()
                //             select p).ToList();

                //foreach (var x in query2)
                //{
                //    lstAusentesEntrada.Add(x);
                //}
                lstAusentesEntrada = new ObservableCollection <InternosAusentes>(lstAusentes);
                return(lstAusentesEntrada);
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al obtener internos ausentes", ex);
                return(null);
            }
        }
        private void OnLoad(LeerCustodioEdificio Window)
        {
            #region [Huellas Digitales]
            var myDoubleAnimation = new DoubleAnimation();
            myDoubleAnimation.From           = 0;
            myDoubleAnimation.To             = 185;
            myDoubleAnimation.Duration       = new Duration(TimeSpan.FromSeconds(1.3));
            myDoubleAnimation.AutoReverse    = true;
            myDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTargetName(myDoubleAnimation, "Ln");
            Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(Canvas.TopProperty));
            var myStoryboard = new Storyboard();
            myStoryboard.Children.Add(myDoubleAnimation);
            myStoryboard.Begin(Window.Ln);
            ColorNIPAprobacion   = new SolidColorBrush(Colors.DarkBlue);
            MensajeNipAprobacion = "Capture NIP";
            MarkCheck            = "🔍";
            ImagenPlaceHolder    = new Imagenes();
            ImagenCustodio       = ImagenPlaceHolder.getImagenPerson();
            #endregion

            Window.Closed += (s, e) =>
            {
                try
                {
                    if (OnProgress == null)
                    {
                        return;
                    }

                    if (!IsSucceded)
                    {
                        SelectedRegistroCustodio = null;
                    }

                    OnProgress.Abort();
                    CancelCaptureAndCloseReader(OnCaptured);
                }
                catch (Exception ex)
                {
                    StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al cargar búsqueda", ex);
                }
            };
            if (CurrentReader != null)
            {
                CurrentReader.Dispose();
                CurrentReader = null;
            }
            CurrentReader = Readers[0];

            if (CurrentReader == null)
            {
                return;
            }

            if (!OpenReader())
            {
                Window.Close();
            }

            if (!StartCaptureAsync(OnCaptured))
            {
                Window.Close();
            }

            OnProgress = new Thread(() => InvokeDelegate(Window));
            Application.Current.Dispatcher.Invoke((System.Action)(delegate
            {
                ScannerMessage     = "Capture Huella";
                ColorMensaje       = new SolidColorBrush(Colors.Green);
                ColorNIPAprobacion = new SolidColorBrush(Colors.DarkBlue);
            }));
            GuardandoHuellas = true;
        }
Exemplo n.º 5
0
        public ObservableCollection <InternosAusentes> ListInternosAusentes(short?ID_CENTRO)
        {
            try
            {
                var grupo_ausente      = new cIngresoUbicacion().ObtenerTodos(ID_CENTRO);
                var lstAusentes        = new ObservableCollection <InternosAusentes>();
                var lstAusentesEntrada = new ObservableCollection <InternosAusentes>();

                foreach (var item in grupo_ausente.OrderBy(o => o.ID_IMPUTADO).ThenBy(t => t.MOVIMIENTO_FEC))
                {
                    var consulta_imputado = item.INGRESO.IMPUTADO;
                    var consulta_interno  = item.INGRESO.IMPUTADO.INGRESO.OrderByDescending(o => o.ID_INGRESO).FirstOrDefault();
                    var edificio          = consulta_interno.CAMA.CELDA.SECTOR.EDIFICIO;
                    var sector            = consulta_interno.CAMA.CELDA.SECTOR;
                    var celda             = consulta_interno.CAMA.CELDA;

                    if (item.ESTATUS == 1)
                    {
                        var ia = new InternosAusentes();
                        ia.Llave      = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO);
                        ia.Expediente = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd();
                        ia.Paterno    = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd();
                        ia.Materno    = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd();
                        ia.Nombre     = consulta_imputado.NOMBRE.TrimEnd();
                        ia.Ubicacion  = string.IsNullOrEmpty(ubicacion_transito) ? string.Empty : ubicacion_transito.TrimEnd();
                        ia.Estancia   = string.Format("{0}-{1}-{2}-{3}",
                                                      string.IsNullOrEmpty(edificio.DESCR) ? string.Empty : edificio.DESCR.TrimEnd(),
                                                      string.IsNullOrEmpty(sector.DESCR) ? string.Empty : sector.DESCR.TrimEnd(),
                                                      string.IsNullOrEmpty(celda.ID_CELDA) ? string.Empty : celda.ID_CELDA.TrimEnd(),
                                                      consulta_interno.CAMA.ID_CAMA);
                        ia.Actividad = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd();
                        ia.IdArea    = item.ID_AREA;
                        ia.Area      = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : (item.ACTIVIDAD.TrimEnd() == "ESTANCIA" ?
                                                                                              string.Format("{0}-{1}-{2}-{3}",
                                                                                                            edificio != null ? !string.IsNullOrEmpty(edificio.DESCR) ? edificio.DESCR.TrimEnd() : string.Empty : string.Empty,
                                                                                                            sector != null ? !string.IsNullOrEmpty(sector.DESCR) ? sector.DESCR.TrimEnd() : string.Empty : string.Empty,
                                                                                                            celda != null ? !string.IsNullOrEmpty(celda.ID_CELDA) ?  celda.ID_CELDA.TrimEnd() : string.Empty : string.Empty,
                                                                                                            consulta_interno.CAMA.ID_CAMA)
                                : (item.AREA != null ? item.AREA.DESCR.TrimEnd() : string.Empty));
                        ia.Fecha       = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC : null;//Fechas.GetFechaDateServer;
                        ia.IdCentro    = consulta_imputado.ID_CENTRO;
                        ia.IdAnio      = consulta_imputado.ID_ANIO;
                        ia.IdIngreso   = consulta_interno.ID_INGRESO;
                        ia.IdImputado  = consulta_imputado.ID_IMPUTADO;
                        ia.Consecutivo = item.ID_CONSEC;
                        ia.NIP         = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty;
                        ia.Estatus     = item.ESTATUS;
                        ia.Ingreso     = consulta_interno;
                        lstAusentes.Add(ia);
                        //lstAusentes.Add(new InternosAusentes()
                        //{
                        //Llave = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO),
                        //Expediente = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd(),
                        //Paterno = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd(),
                        //Materno = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd(),
                        //Nombre = consulta_imputado.NOMBRE.TrimEnd(),
                        //Ubicacion = string.IsNullOrEmpty(ubicacion_transito) ? string.Empty : ubicacion_transito.TrimEnd(),
                        //Estancia = string.Format("{0}-{1}-{2}-{3}", string.IsNullOrEmpty(edificio.DESCR) ? string.Empty : edificio.DESCR.TrimEnd(), string.IsNullOrEmpty(sector.DESCR) ? string.Empty : sector.DESCR.TrimEnd(),
                        //    string.IsNullOrEmpty(celda.ID_CELDA) ? string.Empty : celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA),
                        //Actividad = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd(),
                        //IdArea = item.ID_AREA,
                        //Area = string.IsNullOrEmpty(item.ACTIVIDAD) ?
                        //    string.Empty
                        //: (item.ACTIVIDAD.TrimEnd() == "ESTANCIA" ?
                        //    string.Format("{0}-{1}-{2}-{3}", edificio.DESCR.TrimEnd(), sector.DESCR.TrimEnd(), celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA)
                        //: item.AREA.DESCR.TrimEnd()),
                        //Fecha = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC.Value : Fechas.GetFechaDateServer,
                        //IdCentro = consulta_imputado.ID_CENTRO,
                        //IdAnio = consulta_imputado.ID_ANIO,
                        //IdIngreso = consulta_interno.ID_INGRESO,
                        //IdImputado = consulta_imputado.ID_IMPUTADO,
                        //Consecutivo = item.ID_CONSEC,
                        //NIP = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty,
                        //Estatus = item.ESTATUS,
                        //Ingreso = consulta_interno
                        //});
                    }
                    else if (item.ESTATUS == 2)
                    {
                        if (!ParametroEstatusInactivos.Contains(item.INGRESO.ID_ESTATUS_ADMINISTRATIVO))
                        {
                            lstAusentes.Add(new InternosAusentes()
                            {
                                Llave      = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO),
                                Expediente = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd(),
                                Paterno    = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd(),
                                Materno    = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd(),
                                Nombre     = consulta_imputado.NOMBRE.TrimEnd(),
                                Ubicacion  = item.INGRESO.EXCARCELACION.Any(w => w.ID_ESTATUS == "AC") ? item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").ID_TIPO_EX == (short)enumTipoExcarcelacion.JURIDICA ?
                                             item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().JUZGADO.DESCR
                                : item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().ID_HOSPITAL == id_hospital_otros ?
                                             item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL_OTRO :
                                             item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL.DESCR :
                                             item.AREA.DESCR.TrimEnd(),
                                Estancia  = string.Format("{0}-{1}-{2}-{3}", edificio.DESCR.TrimEnd(), sector.DESCR.TrimEnd(), celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA),
                                Actividad = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd(),
                                IdArea    = item.ID_AREA,
                                Area      = item.INGRESO.EXCARCELACION.Any(w => w.ID_ESTATUS == "AC") ? item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").ID_TIPO_EX == (short)enumTipoExcarcelacion.JURIDICA ?
                                            item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().JUZGADO.DESCR
                                : item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().ID_HOSPITAL == id_hospital_otros ?
                                            item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL_OTRO :
                                            item.INGRESO.EXCARCELACION.First(w => w.ID_ESTATUS == "AC").EXCARCELACION_DESTINO.First().INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL.DESCR :
                                            item.AREA.DESCR.TrimEnd(),
                                Fecha       = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC.Value : Fechas.GetFechaDateServer,
                                IdCentro    = consulta_imputado.ID_CENTRO,
                                IdAnio      = consulta_imputado.ID_ANIO,
                                IdIngreso   = consulta_interno.ID_INGRESO,
                                IdImputado  = consulta_imputado.ID_IMPUTADO,
                                Consecutivo = item.ID_CONSEC,
                                NIP         = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty,
                                Estatus     = item.ESTATUS,
                                Ingreso     = consulta_interno
                            });
                        }
                    }
                    else if (item.ESTATUS == 0)
                    {
                        lstAusentes.Add(new InternosAusentes()
                        {
                            Llave       = string.Format("{0}/{1}/{2}/{3}", consulta_imputado.ID_CENTRO, consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO, consulta_interno.ID_INGRESO),
                            Expediente  = string.Format("{0}/{1}", consulta_imputado.ID_ANIO, consulta_imputado.ID_IMPUTADO).TrimEnd(),
                            Paterno     = string.IsNullOrEmpty(consulta_imputado.PATERNO) ? string.Empty : consulta_imputado.PATERNO.TrimEnd(),
                            Materno     = string.IsNullOrEmpty(consulta_imputado.MATERNO) ? string.Empty : consulta_imputado.MATERNO.TrimEnd(),
                            Nombre      = consulta_imputado.NOMBRE.TrimEnd(),
                            Ubicacion   = item.AREA.DESCR.TrimEnd(),
                            Estancia    = string.Format("{0}-{1}-{2}-{3}", edificio.DESCR.TrimEnd(), sector.DESCR.TrimEnd(), celda.ID_CELDA.TrimEnd(), consulta_interno.CAMA.ID_CAMA),
                            Actividad   = string.IsNullOrEmpty(item.ACTIVIDAD) ? string.Empty : item.ACTIVIDAD.TrimEnd(),
                            IdArea      = item.ID_AREA,
                            Area        = item.AREA.DESCR.TrimEnd(),
                            Fecha       = item.MOVIMIENTO_FEC.HasValue ? item.MOVIMIENTO_FEC.Value : Fechas.GetFechaDateServer,
                            IdCentro    = consulta_imputado.ID_CENTRO,
                            IdAnio      = consulta_imputado.ID_ANIO,
                            IdIngreso   = consulta_interno.ID_INGRESO,
                            IdImputado  = consulta_imputado.ID_IMPUTADO,
                            Consecutivo = item.ID_CONSEC,
                            NIP         = !string.IsNullOrEmpty(consulta_imputado.NIP) ? consulta_imputado.NIP.TrimEnd() : string.Empty,
                            Estatus     = item.ESTATUS,
                            Ingreso     = consulta_interno,
                            Entrada     = true
                        });
                    }
                }
                //FILTRO QUE TOMA EN CUENTA EL ULTIMO MOVIMIENTO DEL INTERNO
                var query = (from p in lstAusentes
                             where p.Consecutivo ==
                             (from pp in lstAusentes
                              where pp.IdImputado == p.IdImputado
                              select pp.Consecutivo).Max()
                             select p).ToList();

                foreach (var x in query.Where(w => w.Entrada != true))
                {
                    lstAusentesEntrada.Add(x);
                }
                lstAusentesEntrada = new ObservableCollection <InternosAusentes>(lstAusentesEntrada);
                return(lstAusentesEntrada);
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al obtener internos ausentes", ex);
                return(null);
            }
            #endregion
        }