bool ValidacionesVisitasPorEdificio()
        {
            if (ListVisitasPorEdificio.Where(w => w.ID_CENTRO == List_Edificio.Where(wh => wh.ID_EDIFICIO == SelectEdificio).FirstOrDefault().ID_CENTRO&&
                                             w.ID_EDIFICIO == SelectEdificio.Value && w.ID_SECTOR == SelectSector.Value && w.ID_TIPO_VISITA == SelectTipoVisita &&
                                             w.CELDA_INICIO == SelectCeldaInicio && w.CELDA_FINAL == SelectCeldaFin).Any())
            {
                (new Dialogos()).ConfirmacionDialogo("Advertencia!", "Ya existe un registro con los mismos datos.");
                return(true);
            }
            var lista = CompararCeldas(List_Edificio.Where(wh => wh.ID_EDIFICIO == SelectEdificio).FirstOrDefault().ID_CENTRO, SelectEdificio.Value,
                                       SelectSector.Value, SelectCeldaInicio, SelectCeldaFin);

            foreach (var item in ListVisitasPorEdificio)
            {
                foreach (var itm in CompararCeldas(item.ID_CENTRO, item.ID_EDIFICIO, item.ID_SECTOR, item.CELDA_INICIO, item.CELDA_FINAL))
                {
                    if (lista.Where(w => w.ID_CELDA == itm.ID_CELDA && w.ID_EDIFICIO == itm.ID_EDIFICIO && w.ID_SECTOR == itm.ID_SECTOR && w.ID_CENTRO == itm.ID_CENTRO && item.ID_TIPO_VISITA == SelectTipoVisita).Any())
                    {
                        (new Dialogos()).ConfirmacionDialogo("Advertencia!", "Este rango de celdas se empalma con uno ya registrado.");
                        return(true);
                    }
                }
            }
            return(false);
        }
        public async void clickSwitch(Object obj)
        {
            try
            {
                switch (obj.ToString())
                {
                case "actualizar":
                    await StaticSourcesViewModel.CargarDatosMetodoAsync(() =>
                    {
                        ListVisitasPorEdificio = new ObservableCollection <VISITA_EDIFICIO>(new cVisitaEdificio().ObtenerTodosActivos(GlobalVar.gCentro, SelectFechaFiltro == -1 ? new Nullable <int>() : SelectFechaFiltro));
                        EmptyVisible           = ListVisitasPorEdificio.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
                    });

                    break;

                case "guardar_visita_edificio":
                    if (HasError())
                    {
                        (new Dialogos()).ConfirmacionDialogo("Validación!", string.Format("Validar el campo: {0}.", base.Error));
                        break;
                    }
                    //Valida Horas
                    int inicio = int.Parse(HoraInicio + MinutoInicio);
                    int fin    = int.Parse(HoraFin + MinutoFin);
                    if (inicio > fin)
                    {
                        (new Dialogos()).ConfirmacionDialogo("Validación!", "La hora de inicio debe ser menor o igual a la hora final");
                        break;
                    }
                    //if (ValidacionesVisitasPorEdificio())
                    if (!ValidacionesGuardar())
                    {
                        break;
                    }
                    if (new cVisitaEdificio().Insertar(new VISITA_EDIFICIO
                    {
                        ID_TIPO_VISITA = SelectTipoVisita.Value,
                        ID_CENTRO = List_Edificio.Where(w => w.ID_EDIFICIO == SelectEdificio).FirstOrDefault().ID_CENTRO,
                        ID_EDIFICIO = SelectEdificio.Value,
                        ID_SECTOR = SelectSector.Value,
                        CELDA_INICIO = SelectCeldaInicio,
                        CELDA_FINAL = SelectCeldaFin,
                        ESTATUS = "0",
                        FECHA_ALTA = Fechas.GetFechaDateServer,
                        DIA = (short)SelectDiaVisita,
                        HORA_FIN = HoraInicio + MinutoInicio, //HoraSalida,
                        HORA_INI = HoraFin + MinutoFin,       //HoraEntrada,
                        ID_AREA = SelectArea
                    }))
                    {
                        (new Dialogos()).ConfirmacionDialogo("Éxito!", "Guardado con éxito.");
                        ListVisitasPorEdificio = new ObservableCollection <VISITA_EDIFICIO>(new cVisitaEdificio().ObtenerTodosActivos(GlobalVar.gCentro,
                                                                                                                                      SelectFechaFiltro == -1 ? new Nullable <int>() : SelectFechaFiltro));
                        EmptyVisible = ListVisitasPorEdificio.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
                        LimpiarCampos();
                        PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.AGREGAR_VISITA_EDIFICIO);
                        break;
                    }

                    (new Dialogos()).ConfirmacionDialogo("Advertencia!", "Error al guardar los datos de la visita.");
                    break;

                case "borrar_visita_edificio":
                    if (SelectVisitaEdificio == null)
                    {
                        (new Dialogos()).ConfirmacionDialogo("Advertencia!", "Debes seleccionar una visita.");
                        return;
                    }

                    if (await new Dialogos().ConfirmarEliminar("Advertencia!", "Esta seguro que desea borrar esta visita?") == 1)
                    {
                        if (new cVisitaEdificio().Actualizar(new VISITA_EDIFICIO
                        {
                            CELDA_FINAL = SelectVisitaEdificio.CELDA_FINAL,
                            CELDA_INICIO = SelectVisitaEdificio.CELDA_INICIO,
                            DIA = SelectVisitaEdificio.DIA,
                            ESTATUS = "1",
                            FECHA_ALTA = SelectVisitaEdificio.FECHA_ALTA,
                            ID_CENTRO = SelectVisitaEdificio.ID_CENTRO,
                            ID_CONSEC = SelectVisitaEdificio.ID_CONSEC,
                            ID_EDIFICIO = SelectVisitaEdificio.ID_EDIFICIO,
                            ID_SECTOR = SelectVisitaEdificio.ID_SECTOR,
                            ID_TIPO_VISITA = SelectVisitaEdificio.ID_TIPO_VISITA,
                            HORA_INI = SelectVisitaEdificio.HORA_INI,
                            HORA_FIN = SelectVisitaEdificio.HORA_FIN
                        }))
                        {
                            (new Dialogos()).ConfirmacionDialogo("Éxito!", "Guardado con éxito.");
                            ListVisitasPorEdificio = new ObservableCollection <VISITA_EDIFICIO>(new cVisitaEdificio().ObtenerTodosActivos(/*4*/ GlobalVar.gCentro, SelectFechaFiltro == -1 ? new Nullable <int>() : SelectFechaFiltro));
                            EmptyVisible           = ListVisitasPorEdificio.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
                        }
                        else
                        {
                            (new Dialogos()).ConfirmacionDialogo("Advertencia!", "Error al guardar.");
                        }
                    }
                    break;

                case "cancelar_visita_edificio":
                    base.ClearRules();
                    PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.AGREGAR_VISITA_EDIFICIO);
                    break;

                case "agregar_visita_edificio":
                    LimpiarCampos();
                    SetValidaciones();
                    PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.AGREGAR_VISITA_EDIFICIO);
                    break;

                case "filtrar":
                    ListVisitasPorEdificio = new ObservableCollection <VISITA_EDIFICIO>(new cVisitaEdificio().ObtenerTodosActivos(/*4*/ GlobalVar.gCentro, SelectFechaFiltro == -1 ? new Nullable <int>() : SelectFechaFiltro));
                    EmptyVisible           = ListVisitasPorEdificio.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
                    break;

                case "limpiar_menu":
                    ((System.Windows.Controls.ContentControl)PopUpsViewModels.MainWindow.FindName("contentControl")).Content     = new ProgramacionVisitaEdificioView();
                    ((System.Windows.Controls.ContentControl)PopUpsViewModels.MainWindow.FindName("contentControl")).DataContext = new ControlPenales.ProgramacionVisitaEdificioViewModel();
                    break;

                case "salir_menu":
                    PrincipalViewModel.SalirMenu();
                    break;
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al ejecutar acción.", ex);
            }
        }