/// <summary>
        /// Método que obtiene las excarcelaciones de acuerdo al estatus seleccionado.
        /// </summary>
        public void ObtenerExcarcelaciones() ///===CHECK===
        {
            try
            {
                System.DateTime _fechaH = Fechas.GetFechaDateServer;

                //Se obtienen los ingresos que tengan alguna excarcelación
                var ingresos = new cIngreso().ObtenerIngresosActivos(GlobalVar.gCentro).Where(w => w.EXCARCELACION.Any()).ToList();
                //Se obtiene el estatus seleccionado
                var estatus_seleccionado = DecisionEstatusExcarcelaciones();
                //Se obtienen las excarcelaciones de acuerdo al estatus seleccionado en cuestión a los ingresos que tienen una excarcelación
                var lista_ingresos = ingresos != null?ingresos.Any() ? ingresos.Where(w => (w.EXCARCELACION.Where(wEXC =>
                                                                                                                  wEXC.ID_ESTATUS == estatus_seleccionado &&
                                                                                                                  (wEXC.PROGRAMADO_FEC.Value.Year == FechaServer.Year && //LA VARIABLE DEL CAMPO DE FECHA SE LLAMA FECHASERVER
                                                                                                                   wEXC.PROGRAMADO_FEC.Value.Month == FechaServer.Month &&
                                                                                                                   wEXC.PROGRAMADO_FEC.Value.Day == FechaServer.Day))
                                                                                            .ToList().Count > 0)).ToList() : new List <INGRESO>() : new List <INGRESO>();

                var lista_ingresos_excarcelaciones = new List <InternoIngresoExcarcelacion>();
                var ingreso_ubicacion = new cIngresoUbicacion();
                var excarcelacion     = new cExcarcelacion();
                foreach (var ingreso in lista_ingresos)
                {
                    var ultima_ubicacion     = ingreso_ubicacion.ObtenerUltimaUbicacion(ingreso.ID_ANIO, ingreso.ID_CENTRO, ingreso.ID_IMPUTADO, ingreso.ID_INGRESO);
                    var excarcelacion_activa = excarcelacion.ObtenerImputadoExcarcelaciones(ingreso.ID_CENTRO, ingreso.ID_ANIO, ingreso.ID_IMPUTADO, ingreso.ID_INGRESO).Where(w =>
                                                                                                                                                                               w.ID_ESTATUS == EXCARCELACION_ACTIVA &&
                                                                                                                                                                               w.PROGRAMADO_FEC.Value.Year == FechaServer.Year &&
                                                                                                                                                                               w.PROGRAMADO_FEC.Value.Month == FechaServer.Month &&
                                                                                                                                                                               w.PROGRAMADO_FEC.Value.Day == FechaServer.Day).Any();
                    lista_ingresos_excarcelaciones.Add(new InternoIngresoExcarcelacion()
                    {
                        Id_Centro        = ingreso.ID_CENTRO,
                        Id_Anio          = ingreso.ID_ANIO,
                        Id_Imputado      = ingreso.ID_IMPUTADO,
                        Id_Ingreso       = ingreso.ID_INGRESO,
                        Nombre           = ingreso.IMPUTADO != null ? !string.IsNullOrEmpty(ingreso.IMPUTADO.NOMBRE) ? ingreso.IMPUTADO.NOMBRE.Trim() : string.Empty : string.Empty,
                        Paterno          = ingreso.IMPUTADO != null ? !string.IsNullOrEmpty(ingreso.IMPUTADO.PATERNO) ? ingreso.IMPUTADO.PATERNO.Trim() : string.Empty : string.Empty,
                        Materno          = ingreso.IMPUTADO != null ? !string.IsNullOrEmpty(ingreso.IMPUTADO.MATERNO) ? ingreso.IMPUTADO.MATERNO.Trim() : string.Empty : string.Empty,
                        EnSalidaDeCentro = (ultima_ubicacion != null && ultima_ubicacion.ID_AREA == SALIDA_DE_CENTRO && ultima_ubicacion.ESTATUS == (short)enumUbicacion.ACTIVIDAD && !excarcelacion_activa)
                    });
                }
                ListaIngresos = lista_ingresos_excarcelaciones;
            }
            //Si ocurrió un error, entonces...
            catch (Exception ex)
            {
                //Se le notifica al usuario que ocurrió un error
                StaticSourcesViewModel.ShowMessageError("Algo Paso...", "Ocurrió un error al obtener las excarcelaciones", ex);
            }
        }
Пример #2
0
        public bool ValidaDisponibleImputadoArea(INGRESO _Ingreso, short?_IdArea, DateTime?_fechaInicio, DateTime?_FechaFin)
        {
            try
            {
                var _ExcarcelacionesImputado = new cExcarcelacion().ObtenerImputadoExcarcelaciones(_Ingreso.ID_CENTRO, _Ingreso.ID_ANIO, _Ingreso.ID_IMPUTADO, _Ingreso.ID_INGRESO);
                var _CitasMedicas            = new cAtencionCita().ObtenerTodoPorImputado(_Ingreso.ID_UB_CENTRO.Value, _Ingreso.ID_CENTRO, _Ingreso.ID_ANIO, _Ingreso.ID_IMPUTADO, _Ingreso.ID_INGRESO, _fechaInicio.Value);

                if (_ExcarcelacionesImputado.Any())
                {
                    foreach (var item in _ExcarcelacionesImputado)
                    {
                        if (item.ID_ESTATUS == "AC")//EXCARCELACION VIVA, NO SE CONOCE SU REGRESO
                        {
                            if (item.PROGRAMADO_FEC.HasValue)
                            {
                                if (_fechaInicio.HasValue)
                                {
                                    if (_FechaFin.HasValue)
                                    {
                                        if (_fechaInicio >= item.PROGRAMADO_FEC)
                                        {
                                            return(false);
                                        }
                                        else
                                        if (_FechaFin >= item.PROGRAMADO_FEC)
                                        {
                                            return(false);
                                        }

                                        else
                                        if (item.ID_ESTATUS != "CO" && item.ID_ESTATUS != "CA")
                                        {
                                            if (item.PROGRAMADO_FEC.HasValue)
                                            {
                                                if (_fechaInicio.HasValue)
                                                {
                                                    if (_FechaFin.HasValue)        //SI ES FALSO, TIENE UNA EXCARCELACION PENDIENTE O EN CURSO
                                                    {
                                                        if (_fechaInicio <= item.PROGRAMADO_FEC)
                                                        {
                                                            return(false);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (_CitasMedicas.Any())
                {
                    foreach (var item in _CitasMedicas)
                    {
                        if (item.ESTATUS != "S" && item.ESTATUS != "C")
                        {
                            if (item.CITA_FECHA_HORA.HasValue)
                            {
                                if (_fechaInicio.HasValue)
                                {
                                    if (_FechaFin.HasValue)//SI ES FALSO, TIENE UNA CITA MEDICA PROGRAMADA
                                    {
                                        if (item.CITA_FECHA_HORA.Value.Year == _fechaInicio.Value.Year && item.CITA_FECHA_HORA.Value.Month == _fechaInicio.Value.Month && item.CITA_FECHA_HORA.Value.Day == _fechaInicio.Value.Day && item.CITA_FECHA_HORA.Value.Hour == _fechaInicio.Value.Hour)
                                        {
                                            return(false);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Пример #3
0
        public bool Insertar_Comprobacion_CertificadoMedico(List <TRASLADO_DETALLE> ListaTrasDetalle, List <EXCARCELACION> ListaExcarcel, string NameProceso, string TipoCertificadoMedico, short?IdAreaTRaslado, DateTime FechaServer)
        {
            using (TransactionScope transaccion = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions()
            {
                IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted
            }))
            {
                try
                {
                    cExcarcelacion    ExcarcelacionActualizar     = new cExcarcelacion();
                    cTrasladoDetalle  TrasladoDetalleControlador  = new cTrasladoDetalle();
                    cAtencionServicio AtencionServControlador     = new cAtencionServicio();
                    cIngresoUbicacion IngresoUbicacionControlador = new cIngresoUbicacion();
                    var    Enums         = AtencionServControlador.ObtenerTodo().Where(w => w.ID_TIPO_SERVICIO == 3 && w.ID_TIPO_ATENCION == 1).FirstOrDefault();
                    bool   OCURRIO_ERROR = false;
                    string ACTIVIDAD     = string.Empty;
                    switch (NameProceso)
                    {
                    case "Traslados-Salidas":
                        ACTIVIDAD = "TRASLADO";
                        foreach (var itemTrasDetalle in ListaTrasDetalle)
                        {
                            var ObjAtencionMed = new ATENCION_MEDICA();
                            ObjAtencionMed.ID_ANIO          = itemTrasDetalle.ID_ANIO;
                            ObjAtencionMed.ID_CENTRO        = itemTrasDetalle.ID_CENTRO;
                            ObjAtencionMed.ID_IMPUTADO      = itemTrasDetalle.ID_IMPUTADO;
                            ObjAtencionMed.ID_INGRESO       = itemTrasDetalle.ID_INGRESO;
                            ObjAtencionMed.ID_TIPO_ATENCION = Enums.ID_TIPO_ATENCION;
                            ObjAtencionMed.ID_TIPO_SERVICIO = Enums.ID_TIPO_SERVICIO;

                            if (this.Insertar(ObjAtencionMed))
                            {
                                //Se actualiza campo de ID_ATENCION_MEDICA(comprobacion certificado medico)
                                itemTrasDetalle.ID_ATENCION_MEDICA = ObjAtencionMed.ID_ATENCION_MEDICA;
                                if (TrasladoDetalleControlador.Actualizar(new TRASLADO_DETALLE()
                                {
                                    ID_CENTRO = itemTrasDetalle.ID_CENTRO,
                                    ID_ANIO = itemTrasDetalle.ID_ANIO,
                                    ID_IMPUTADO = itemTrasDetalle.ID_IMPUTADO,
                                    ID_INGRESO = itemTrasDetalle.ID_INGRESO,
                                    ID_ESTATUS = itemTrasDetalle.ID_ESTATUS,
                                    AMP_ID_AMPARO_INDIRECTO = itemTrasDetalle.AMP_ID_AMPARO_INDIRECTO,
                                    AMP_ID_ANIO = itemTrasDetalle.AMP_ID_ANIO,
                                    AMP_ID_CENTRO = itemTrasDetalle.AMP_ID_CENTRO,
                                    AMP_ID_IMPUTADO = itemTrasDetalle.AMP_ID_IMPUTADO,
                                    AMP_ID_INGRESO = itemTrasDetalle.AMP_ID_INGRESO,
                                    CANCELADO_OBSERVA = itemTrasDetalle.CANCELADO_OBSERVA,
                                    EGRESO_FEC = itemTrasDetalle.EGRESO_FEC,
                                    ID_ATENCION_MEDICA = itemTrasDetalle.ID_ATENCION_MEDICA,
                                    ID_CENTRO_TRASLADO = itemTrasDetalle.ID_CENTRO_TRASLADO,
                                    ID_ESTATUS_ADMINISTRATIVO = itemTrasDetalle.ID_ESTATUS_ADMINISTRATIVO,
                                    ID_MOTIVO = itemTrasDetalle.ID_MOTIVO,
                                    ID_TRASLADO = itemTrasDetalle.ID_TRASLADO
                                }))
                                {
                                    int IdCpnsecutivo         = 0;
                                    int?Id_custodio           = null;
                                    var IngresoUbicacionDatos = IngresoUbicacionControlador.ObtenerTodos().Where(w => w.ID_ANIO == itemTrasDetalle.ID_ANIO && w.ID_CENTRO == itemTrasDetalle.ID_CENTRO && w.ID_IMPUTADO == itemTrasDetalle.ID_IMPUTADO && w.ID_INGRESO == itemTrasDetalle.ID_INGRESO);
                                    if (IngresoUbicacionDatos.Count() > 0) //si el ingreso ya tiene registros anteriores Actualizara el ultimo Movimiento
                                    {                                      //SE ACTUALIZA
                                        var ObjetoUbicacionTras = IngresoUbicacionDatos.Where(w => w.ID_CONSEC == IngresoUbicacionDatos.Max(IdMAX => IdMAX.ID_CONSEC)).ToList().FirstOrDefault();

                                        //ACTUALIZACION DATOS DE UBICACION_DETALLE
                                        Id_custodio = ObjetoUbicacionTras.ID_CUSTODIO; //Revisar que regreso si es null declararlo de inicio como null sio es cero declararlo de inicio como cero

                                        ObjetoUbicacionTras.ESTATUS = 2;               //:::::ACTUALIZA ESTATUS
                                        if (!IngresoUbicacionControlador.Actualizar(new INGRESO_UBICACION()
                                        {
                                            ID_ANIO = ObjetoUbicacionTras.ID_ANIO,
                                            MOVIMIENTO_FEC = ObjetoUbicacionTras.MOVIMIENTO_FEC,
                                            ACTIVIDAD = ObjetoUbicacionTras.ACTIVIDAD,
                                            ID_CENTRO = ObjetoUbicacionTras.ID_CENTRO,
                                            ID_CONSEC = ObjetoUbicacionTras.ID_CONSEC,
                                            ID_CUSTODIO = ObjetoUbicacionTras.ID_CUSTODIO,
                                            ID_IMPUTADO = ObjetoUbicacionTras.ID_IMPUTADO,
                                            ID_INGRESO = ObjetoUbicacionTras.ID_INGRESO,
                                            INTERNO_UBICACION = ObjetoUbicacionTras.INTERNO_UBICACION,
                                            ID_AREA = 46,    //Valor que se leasigna por el momento
                                            ESTATUS = ObjetoUbicacionTras.ESTATUS
                                        }))
                                        {
                                            OCURRIO_ERROR = true;
                                        }
                                    }

                                    //SE AGREGA UNO NUEVO
                                    if (!IngresoUbicacionControlador.Insertar(new INGRESO_UBICACION()
                                    {
                                        ID_ANIO = itemTrasDetalle.ID_ANIO,
                                        ID_CENTRO = itemTrasDetalle.ID_CENTRO,
                                        ID_IMPUTADO = itemTrasDetalle.ID_IMPUTADO,
                                        ID_INGRESO = itemTrasDetalle.ID_INGRESO,
                                        ID_CONSEC = IngresoUbicacionControlador.ObtenerConsecutivo <int>(itemTrasDetalle.ID_CENTRO, itemTrasDetalle.ID_ANIO, itemTrasDetalle.ID_IMPUTADO, itemTrasDetalle.ID_INGRESO),
                                        MOVIMIENTO_FEC = FechaServer,
                                        ACTIVIDAD = ACTIVIDAD,
                                        ID_AREA = IdAreaTRaslado,
                                        ESTATUS = 1,
                                        ID_CUSTODIO = Id_custodio,
                                    }))
                                    {
                                        OCURRIO_ERROR = true;
                                    }
                                }
                            }
                            else
                            {
                                OCURRIO_ERROR = true;
                            }
                        }

                        break;

                    case "EXCARCELACIÓN":
                        foreach (var itemExcarcelDetalle in ListaExcarcel)
                        {
                            var ObjAtencionMed = new ATENCION_MEDICA();
                            ObjAtencionMed.ID_ANIO          = itemExcarcelDetalle.ID_ANIO;
                            ObjAtencionMed.ID_CENTRO        = itemExcarcelDetalle.ID_CENTRO;
                            ObjAtencionMed.ID_IMPUTADO      = itemExcarcelDetalle.ID_IMPUTADO;
                            ObjAtencionMed.ID_INGRESO       = itemExcarcelDetalle.ID_INGRESO;
                            ObjAtencionMed.ID_TIPO_ATENCION = Enums.ID_TIPO_ATENCION;
                            ObjAtencionMed.ID_TIPO_SERVICIO = Enums.ID_TIPO_SERVICIO;

                            if (this.Insertar(ObjAtencionMed))
                            {
                                //Se agrega campo de CERTIFICADO_MEDICO_SALIDA  y se actualiza Tabla excarcelacion
                                switch (TipoCertificadoMedico)
                                {
                                case "SALIDA":
                                    itemExcarcelDetalle.CERT_MEDICO_SALIDA = ObjAtencionMed.ID_ATENCION_MEDICA;
                                    ACTIVIDAD = "EXCARCELACIÓN";
                                    break;

                                case "RETORNO":
                                    itemExcarcelDetalle.CERT_MEDICO_RETORNO = ObjAtencionMed.ID_ATENCION_MEDICA;
                                    ACTIVIDAD = "ESTANCIA";
                                    break;
                                }

                                if (ExcarcelacionActualizar.Actualizar(new EXCARCELACION()
                                {
                                    ID_ANIO = itemExcarcelDetalle.ID_ANIO,
                                    ID_CENTRO = itemExcarcelDetalle.ID_CENTRO,
                                    ID_IMPUTADO = itemExcarcelDetalle.ID_IMPUTADO,
                                    ID_INGRESO = itemExcarcelDetalle.ID_INGRESO,
                                    ID_CONSEC = itemExcarcelDetalle.ID_CONSEC,
                                    ID_TIPO_EX = itemExcarcelDetalle.ID_TIPO_EX,
                                    ID_ESTATUS = itemExcarcelDetalle.ID_ESTATUS,
                                    ID_USUARIO = itemExcarcelDetalle.ID_USUARIO,
                                    OBSERVACION = itemExcarcelDetalle.OBSERVACION,
                                    PROGRAMADO_FEC = itemExcarcelDetalle.PROGRAMADO_FEC,
                                    REGISTRO_FEC = itemExcarcelDetalle.REGISTRO_FEC,
                                    RETORNO_FEC = itemExcarcelDetalle.RETORNO_FEC,
                                    SALIDA_FEC = itemExcarcelDetalle.SALIDA_FEC,
                                    CANCELADO_TIPO = itemExcarcelDetalle.CANCELADO_TIPO,
                                    CERT_MEDICO_RETORNO = itemExcarcelDetalle.CERT_MEDICO_RETORNO,
                                    CERT_MEDICO_SALIDA = itemExcarcelDetalle.CERT_MEDICO_SALIDA,
                                    CERTIFICADO_MEDICO = itemExcarcelDetalle.CERTIFICADO_MEDICO,
                                }))
                                {
                                    int IdCpnsecutivo         = 0;
                                    int?Id_custodio           = null;
                                    var IngresoUbicacionDatos = IngresoUbicacionControlador.ObtenerTodos().Where(w => w.ID_ANIO == itemExcarcelDetalle.ID_ANIO && w.ID_CENTRO == itemExcarcelDetalle.ID_CENTRO && w.ID_IMPUTADO == itemExcarcelDetalle.ID_IMPUTADO && w.ID_INGRESO == itemExcarcelDetalle.ID_INGRESO);
                                    if (IngresoUbicacionDatos.Count() > 0)
                                    {    //SE ACTUALIZA
                                        var ObjetoUnicacionTras = IngresoUbicacionDatos.Where(w => w.ID_CONSEC == IngresoUbicacionDatos.Max(IdMAX => IdMAX.ID_CONSEC)).ToList().FirstOrDefault();

                                        Id_custodio = ObjetoUnicacionTras.ID_CUSTODIO; //Revisar que regreso si es null declararlo de inicio como null sio es cero declararlo de inicio como cero
                                        ObjetoUnicacionTras.ESTATUS = 2;               //:::::ACTUALIZA ESTATUS
                                        if (!IngresoUbicacionControlador.Actualizar(new INGRESO_UBICACION()
                                        {
                                            ID_ANIO = ObjetoUnicacionTras.ID_ANIO,
                                            MOVIMIENTO_FEC = ObjetoUnicacionTras.MOVIMIENTO_FEC,
                                            ACTIVIDAD = ObjetoUnicacionTras.ACTIVIDAD,
                                            ID_CENTRO = ObjetoUnicacionTras.ID_CENTRO,
                                            ID_CONSEC = ObjetoUnicacionTras.ID_CONSEC,
                                            ID_CUSTODIO = ObjetoUnicacionTras.ID_CUSTODIO,
                                            ID_IMPUTADO = ObjetoUnicacionTras.ID_IMPUTADO,
                                            ID_INGRESO = ObjetoUnicacionTras.ID_INGRESO,
                                            INTERNO_UBICACION = ObjetoUnicacionTras.INTERNO_UBICACION,
                                            ID_AREA = 46,    //Valor que se leasigna por el momento
                                            ESTATUS = ObjetoUnicacionTras.ESTATUS
                                        }))
                                        {
                                            OCURRIO_ERROR = true;
                                        }
                                    }

                                    //SE AGREGA UNO NUEVO
                                    if (!IngresoUbicacionControlador.Insertar(new INGRESO_UBICACION()
                                    {
                                        ID_ANIO = itemExcarcelDetalle.ID_ANIO,
                                        ID_CENTRO = itemExcarcelDetalle.ID_CENTRO,
                                        ID_IMPUTADO = itemExcarcelDetalle.ID_IMPUTADO,
                                        ID_INGRESO = itemExcarcelDetalle.ID_INGRESO,
                                        ID_CONSEC = IngresoUbicacionControlador.ObtenerConsecutivo <int>(itemExcarcelDetalle.ID_CENTRO, itemExcarcelDetalle.ID_ANIO, itemExcarcelDetalle.ID_IMPUTADO, itemExcarcelDetalle.ID_INGRESO),
                                        MOVIMIENTO_FEC = FechaServer,
                                        ACTIVIDAD = ACTIVIDAD,
                                        ID_AREA = IdAreaTRaslado,
                                        ESTATUS = 1,
                                        ID_CUSTODIO = Id_custodio,
                                    }))
                                    {
                                        OCURRIO_ERROR = true;
                                    }
                                }
                                else
                                {
                                    OCURRIO_ERROR = true;
                                }
                            }
                            else
                            {
                                OCURRIO_ERROR = true;
                            }
                        }


                        break;

                    default:
                        break;
                    }
                    if (OCURRIO_ERROR == false)
                    {
                        transaccion.Complete();
                        return(true);
                    }
                }
                catch (Exception)
                {
                    transaccion.Dispose();
                }
            }
            return(true);
        }