private void PrepararListas()
 {
     try
     {
         Application.Current.Dispatcher.Invoke((System.Action)(delegate
         {
             try
             {
                 if (LstMotivo == null)
                 {
                     LstMotivo = new ObservableCollection <TRASLADO_MOTIVO>(new cTrasladoMotivo().ObtenerTodos());
                     LstMotivo.Insert(0, new TRASLADO_MOTIVO()
                     {
                         ID_MOTIVO = -1, DESCR = "SELECCIONE"
                     });
                 }
                 if (LstCentro == null)
                 {
                     LstCentro = new ObservableCollection <CENTRO>(new cCentro().ObtenerTodos());
                     LstCentro.Insert(0, new CENTRO()
                     {
                         ID_CENTRO = -1, DESCR = "SELECCIONE"
                     });
                 }
                 id_motivo_traslado = Convert.ToInt16(new cParametro().Seleccionar("MOTIVO_TRASLADO", 0).First().VALOR_NUM);
                 if (id_motivo_traslado.HasValue)
                 {
                     MotivoSalida = new cTrasladoMotivoSalida().Obtener(id_motivo_traslado.Value).DESCR;
                 }
                 //id_autoridad_traslado =
                 Autoridad_Traslado = new cParametro().Seleccionar("AUTORIDAD_TRASLADO", 0).First().VALOR;
                 AutoridadesSalida.Add(new cCentro().Obtener(GlobalVar.gCentro).First().DIRECTOR);
                 AutoridadesSalida.Add(new cParametro().Seleccionar("DIR_JURIDICO_CENTRO", GlobalVar.gCentro).First().VALOR);
                 AutoridadesSalida.Add(new cParametro().Seleccionar("SUBDIR_JURIDICO_CENTRO", GlobalVar.gCentro).First().VALOR);
                 AutoridadesSalida.Add("SELECCIONE");
                 FechaServer    = Fechas.GetFechaDateServer;
                 Tipos_Traslado = new List <Tipo_Traslado> {
                     new Tipo_Traslado("LO", "LOCAL"), new Tipo_Traslado("LF", "FORANEO"), new Tipo_Traslado("T", "TODOS")
                 };
             }
             catch (Exception ex)
             {
                 StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al consultar internos.", ex);
             }
         }));
     }
     catch (Exception ex)
     {
         StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al consultar internos.", ex);
     }
 }
 private void Limpiar()
 {
     //Datos Traslado
     DTFecha                              = null;
     DTMotivo                             = DTCentroDestino = -1;
     DTJustificacion                      = DTNoOficio = string.Empty;
     DENoOficio                           = string.Empty;
     AutorizaSalida                       = AutoridadesSalida.First(w => w == "SELECCIONE").ToString();
     LstIngresos                          = new RangeEnabledObservableCollection <cTrasladoIngreso>();
     LstIngresosSeleccionados             = null;
     SeleccionadosIngresos                = null;
     ImagenIngreso                        = null;
     NombreBuscarImputado                 = string.Empty;
     ApellidoPaternoBuscarImputado        = string.Empty;
     ApellidoMaternoBuscarImputado        = string.Empty;
     AnioBuscarImputado                   = null;
     FolioBuscarImputado                  = null;
     StaticSourcesViewModel.SourceChanged = false;
 }
        private async void clickSwitch(Object obj)
        {
            switch (obj.ToString())
            {
            case "buscar_menu":
                await BuscarTraslado(GlobalVar.gCentro, new List <string>() { "PR", "EP" }, null, "LO");

                LimpiarBusquedaTraslados();
                PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.BUSCAR_TRASLADOS);
                SetValidacionesBuscaTraslados();
                break;

            case "salir_menu":
                SalirMenu();
                break;

            case "ampliar_justificacion":
                TituloHeaderExpandirDescripcion = "Justificación";
                TextAmpliarDescripcion          = DTJustificacion;
                MaxLengthAmpliarDescripcion     = 1000;
                Justificacion = true;
                PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.AMPLIAR_DESCRIPCION_GENERICO);
                break;

            case "guardar_ampliar_descripcion":
                if (Justificacion)
                {
                    DTJustificacion = TextAmpliarDescripcion;
                }
                else
                {
                    DTNoOficio = TextAmpliarDescripcion;
                }
                TextAmpliarDescripcion = string.Empty;
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.AMPLIAR_DESCRIPCION_GENERICO);
                break;

            case "cancelar_ampliar_descripcion":
                TextAmpliarDescripcion = string.Empty;
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.AMPLIAR_DESCRIPCION_GENERICO);
                break;

            case "agregar_interno":
                if (SelectedIngreso == null)
                {
                    new Dialogos().ConfirmacionDialogo("Validación!", "Favor de seleccionar a un imputado.");
                    return;
                }
                IQueryable <EXCARCELACION_DESTINO> _excarcelacion_destinos = null;
                await StaticSourcesViewModel.CargarDatosMetodoAsync(() => {
                    _excarcelacion_destinos = new cExcarcelacion_Destino().Seleccionar(selectedIngreso.Ingreso.ID_ANIO, selectedIngreso.Ingreso.ID_CENTRO, selectedIngreso.Ingreso.ID_IMPUTADO,
                                                                                       selectedIngreso.Ingreso.ID_INGRESO, new List <string>()
                    {
                        "PR", "AU", "EP", "AC"
                    });
                });

                if (_excarcelacion_destinos != null && _excarcelacion_destinos.Count() > 0)
                {
                    if (selectedIngreso.Ingreso.EXCARCELACION != null && selectedIngreso.Ingreso.EXCARCELACION.Any(a => a.ID_ESTATUS == "EP" || a.ID_ESTATUS == "AC"))
                    {
                        new Dialogos().ConfirmacionDialogo("Validación!", "El imputado tiene una excarcelación EN PROCESO o ACTIVA");
                        return;
                    }
                    TituloExcarcelaciones = string.Format("EXCARCELACIONES PROGRAMADAS O AUTORIZADAS DEL IMPUTADO {0}/{1} {2}", selectedIngreso.Ingreso.ID_ANIO,
                                                          selectedIngreso.Ingreso.ID_IMPUTADO, ObtieneNombre(selectedIngreso.Ingreso.IMPUTADO));
                    Excarcelacion_Destinos = new ObservableCollection <CT_EXCARCELACION_DESTINO>(_excarcelacion_destinos.Where(w => w.ID_ESTATUS == "PR" || w.ID_ESTATUS == "AU").Select(s => new CT_EXCARCELACION_DESTINO
                    {
                        FECHA_EXCARCELACION = s.EXCARCELACION.PROGRAMADO_FEC.Value,
                        DESTINO             = s.EXCARCELACION.ID_TIPO_EX.Value == (short)enumExcarcelacionTipo.JURIDICA ? s.JUZGADO.DESCR : s.INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.Any()?
                                              s.INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().ID_HOSPITAL.Value == Parametro.ID_HOSPITAL_OTROS?s.INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL_OTRO
                            :s.INTERCONSULTA_SOLICITUD.HOJA_REFERENCIA_MEDICA.First().HOSPITAL.DESCR:""
                                              //DESTINO = s.EXCARCELACION.ID_TIPO_EX.Value == (short)enumExcarcelacionTipo.JURIDICA ? s.JUZGADO.DESCR : s.ID_HOSPITAL.Value == Parametro.ID_HOSPITAL_OTROS?
                                              //s.HOSPITAL_OTRO : s.HOSPITAL.DESCR
                    }));
                    PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.EXCARCELACIONES_CANCELAR);
                }
                else
                {
                    AgregarImputado();
                }
                break;

            case "quitar_interno":
                if (SelectedIngresoSeleccionado != null)
                {
                    if (HabilitaImputados)
                    {
                        QuitarImputado();
                    }
                    else
                    {
                        var res = await new Dialogos().ConfirmarEliminar("Mensaje", "¿Esta seguro de cancelar el traslado del interno " + ObtieneNombre(SelectedIngresoSeleccionado.IMPUTADO) + "?");
                        if (res == 1)
                        {
                            if (LstIngresosSeleccionados.Count > 1)
                            {
                                QuitarImputado();
                            }
                            else
                            {
                                new Dialogos().ConfirmacionDialogo("Validación!", "Un traslado debe de tener por lo menos un traslado individual activo. Si desea cancelar el traslado por favor usar la opción de eliminar");
                            }
                        }
                    }
                }
                else
                {
                    new Dialogos().ConfirmacionDialogo("Validación!", "Favor de seleccionar a un imputado.");
                }
                break;

            case "limpiar_menu":
                if (StaticSourcesViewModel.SourceChanged)
                {
                    if (await new Dialogos().ConfirmarEliminar("ADVERTENCIA!",
                                                               "Existen cambios sin guardar,¿desea limpiar la pantalla?") != 1)
                    {
                        return;
                    }
                }
                ((System.Windows.Controls.ContentControl)PopUpsViewModels.MainWindow.FindName("contentControl")).Content     = new TrasladoMasivoView();
                ((System.Windows.Controls.ContentControl)PopUpsViewModels.MainWindow.FindName("contentControl")).DataContext = new ControlPenales.TrasladoMasivoViewModel();
                break;

            case "guardar_menu":
                if (base.HasErrors)
                {
                    new Dialogos().ConfirmacionDialogo("Validación", string.Format("Faltan datos por capturar: {0}.", base.Error));
                }
                else
                {
                    Guardar();
                    ConfiguraPermisos();
                }
                break;

            case "menu_eliminar":
                if (SelectedTraslado != null)
                {
                    if (await new Dialogos().ConfirmarEliminar("ADVERTENCIA!",
                                                               "¿Esta seguro de cancelar el traslado?") != 1)
                    {
                        return;
                    }
                    Eliminar();
                }
                else
                {
                    new Dialogos().ConfirmacionDialogo("Validación!", "No ha seleccionado ningun traslado");
                }
                break;

            case "buscar_imputado":
                LstIngresos                    = new RangeEnabledObservableCollection <cTrasladoIngreso>();
                _anioBuscarImputado            = anioBuscarImputado;
                _apellidoMaternoBuscarImputado = ApellidoMaternoBuscarImputado;
                _apellidoPaternoBuscarImputado = ApellidoPaternoBuscarImputado;
                _folioBuscarImputado           = FolioBuscarImputado;
                _nombreBuscarImputado          = NombreBuscarImputado;
                await ObtenerTodosActivos();

                break;

            case "cerrar_visualizador_documentos":
                cerrarVisualizadorDocumentos();
                break;

            case "filtro_traslados":
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.BUSCAR_TRASLADOS);
                var _tipo_traslado_id = string.Empty;
                if (SelectedTipo_Traslado != null)
                {
                    _tipo_traslado_id = SelectedTipo_Traslado.ID;
                }
                await BuscarTraslado(GlobalVar.gCentro, new List <string>() { "PR", "EP" }, FechaBuscarTraslado, _tipo_traslado_id, (short?)AnioBuscarTraslado, FolioBuscarTraslado, NombreBuscarTraslado, ApellidoPaternoBuscarTraslado, ApellidoMaternoBuscarTraslado);

                PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.BUSCAR_TRASLADOS);
                break;

            case "cancelar_buscar_traslados":
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.BUSCAR_TRASLADOS);
                SetValidacionesTraslados();
                break;

            case "seleccionar_traslado":
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.BUSCAR_TRASLADOS);
                if (base.HasErrors)
                {
                    await new Dialogos().ConfirmacionDialogoReturn("Validación", string.Format("Faltan datos por capturar: {0}.", base.Error));
                    PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.BUSCAR_TRASLADOS);
                }
                else
                {
                    if (StaticSourcesViewModel.SourceChanged)
                    {
                        if (await new Dialogos().ConfirmarEliminar("ADVERTENCIA!",
                                                                   "Existen cambios sin guardar,¿desea seleccionar un traslado para editar?") != 1)
                        {
                            return;
                        }
                    }
                    DTFecha         = SelectedTraslado.TRASLADO_FEC;
                    DTMotivo        = SelectedTraslado.ID_MOTIVO;
                    DTJustificacion = SelectedTraslado.JUSTIFICACION;
                    DTCentroDestino = SelectedTraslado.CENTRO_DESTINO;
                    DTNoOficio      = SelectedTraslado.OFICIO_AUTORIZACION;
                    //id_autoridad_traslado = SelectedTraslado.AUTORIZA_TRASLADO.Value;
                    Autoridad_Traslado = selectedTraslado.AUTORIZA_TRASLADO;
                    DENoOficio         = SelectedTraslado.OFICIO_SALIDA;
                    AutorizaSalida     = AutoridadesSalida.FirstOrDefault(w => w == SelectedTraslado.AUTORIZA_SALIDA);
                    HabilitaImputados  = false;

                    var id_motivo_traslado = SelectedTraslado.ID_MOTIVO_SALIDA;
                    if (id_motivo_traslado.HasValue)
                    {
                        MotivoSalida = new cTrasladoMotivoSalida().Obtener(id_motivo_traslado.Value).DESCR;
                    }
                    LstIngresosSeleccionados = new ObservableCollection <INGRESO>(SelectedTraslado.TRASLADO_DETALLE.Where(w => w.ID_ESTATUS == "PR" || w.ID_ESTATUS == "EP" || w.ID_ESTATUS == "AC").Select(s => s.INGRESO));
                    SeleccionadosIngresos    = SelectedTraslado.TRASLADO_DETALLE.Where(w => w.ID_ESTATUS == "PR" || w.ID_ESTATUS == "EP" || w.ID_ESTATUS == "AC").Select(s => s.INGRESO).ToList();
                    SetValidacionesTraslados();
                    StaticSourcesViewModel.SourceChanged = false;
                    if (permisos.Any(w => w.EDITAR == 1))
                    {
                        MenuGuardarEnabled  = true;
                        EliminarMenuEnabled = true;
                    }
                    CancelarMenuEnabled = true;
                }
                break;

            case "cancelar_menu":
                if (StaticSourcesViewModel.SourceChanged)
                {
                    if (await new Dialogos().ConfirmarEliminar("ADVERTENCIA!",
                                                               "Existen cambios sin guardar,¿desea cancelar la edición del traslado?") != 1)
                    {
                        return;
                    }
                }
                Limpiar();
                SelectedTraslado    = null;
                HabilitaImputados   = true;
                CancelarMenuEnabled = false;
                await ObtenerTodosActivos();

                SetValidacionesTraslados();
                ConfiguraPermisos();
                break;

            case "reporte_menu":
                if (selectedTraslado == null)
                {
                    new Dialogos().ConfirmacionDialogo("Validación", "Para imprimir el reporte debe de seleccionar un traslado");
                    return;
                }
                GeneraReporte();
                break;

            case "cancelar_estatus_excarcelacion":
                if (await new Dialogos().ConfirmarEliminar("ADVERTENCIA!",
                                                           "¿Desea cancelar las excarcelaciones del imputado?") != 1)
                {
                    return;
                }
                if (await StaticSourcesViewModel.OperacionesAsync <bool>("Cancelando excarcelaciones", () => {
                    new cExcarcelacion().CancelarExcarcelacionesPorImputado(selectedIngreso.Ingreso.ID_ANIO, selectedIngreso.Ingreso.ID_CENTRO, selectedIngreso.Ingreso.ID_IMPUTADO,
                                                                            selectedIngreso.Ingreso.ID_INGRESO, Fechas.GetFechaDateServer, (short)enumMensajeTipo.CANCELACION_EXCARCELACION, (short)Parametro.ID_HOSPITAL_OTROS);
                    return(true);
                }))
                {
                    new Dialogos().ConfirmacionDialogo("EXITO!", "LAS EXCARCELACIONES PROGRAMADAS Y AUTORIZADAS FUERON CANCELADAS CON EXITO!");
                    PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.EXCARCELACIONES_CANCELAR);
                    AgregarImputado();
                }

                break;

            case "salir_cancelar_excarcelacion":
                new Dialogos().ConfirmacionDialogo("Validación!", "No se puede agregar al imputado al traslado si tiene excarcelaciones PROGRAMADAS o AUTORIZADAS!");
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.EXCARCELACIONES_CANCELAR);
                break;
            }
        }