private async void GuardarAsistencia()
        {
            try
            {
                if (AgendaDetalle != null)
                {
                    var Lista = new List <AGENDA_ACT_LIB_DETALLE>();
                    #region Valida Anteriores Programadas
                    aal = new cAgendaActividadLibertad().Obtener((int)aal.ID_AGENDA_ACTIVIDAD_LIBERTAD);
                    var lista = aal.AGENDA_ACT_LIB_DETALLE.Where(w => w.ID_DETALLE < AgendaDetalle.ID_DETALLE && w.ASISTENCIA == 0);
                    if (lista != null)
                    {
                        if (lista.Count() > 0)
                        {
                            if (await ConfirmarEliminar("Validación", "Tienes fechas anteriores sin asistencia, ¿Deseas ponerles falta?") == 1)
                            {
                                foreach (var l in lista)
                                {
                                    Lista.Add(new AGENDA_ACT_LIB_DETALLE()
                                    {
                                        ID_AGENDA_ACTIVIDAD_LIBERTAD = l.ID_AGENDA_ACTIVIDAD_LIBERTAD,
                                        ID_DETALLE  = l.ID_DETALLE,
                                        FECHA       = l.FECHA,
                                        HORA_INICIO = l.HORA_INICIO,
                                        HORA_FIN    = l.HORA_FIN,
                                        ASISTENCIA  = 2,
                                        OBSERVACION = l.OBSERVACION
                                    });
                                }
                            }
                        }
                    }
                    #endregion

                    var det = new AGENDA_ACT_LIB_DETALLE();
                    det.ID_AGENDA_ACTIVIDAD_LIBERTAD = AgendaDetalle.ID_AGENDA_ACTIVIDAD_LIBERTAD;
                    det.ID_DETALLE  = AgendaDetalle.ID_DETALLE;
                    det.FECHA       = AgendaDetalle.FECHA;
                    det.HORA_INICIO = AgendaDetalle.HORA_INICIO;
                    det.HORA_FIN    = AgendaDetalle.HORA_FIN;

                    if (ChkAsistencia)
                    {
                        det.ASISTENCIA = 1;//Asistencia
                    }
                    else
                    if (!ChkAsistencia && string.IsNullOrEmpty(Observacion))
                    {
                        det.ASISTENCIA = 2;    //Falta
                    }
                    else
                    {
                        det.ASISTENCIA = 3;    //Falta Justificada
                    }
                    det.OBSERVACION = Observacion;
                    if (new cAgendaActividadLibertadDetalle().Actualizar(det, Lista))
                    {
                        ChkAsistencia = false;
                        Observacion   = string.Empty;
                        AgregarHora   = false;
                        CargarCalendario();
                    }
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error", ex);
            }
        }
        private async void AbrirAgenda(object obj)
        {
            try
            {
                var gh = (GRUPO_HORARIO)obj;
                if (gh != null)
                {
                    AgregarHora = true;
                    if (gh.HORA_INICIO != null)
                    {
                        FechaTitulo = string.Format("{0:dd/MM/yyyy}", gh.HORA_INICIO.Value);
                    }
                    else
                    {
                        FechaTitulo = string.Empty;
                    }

                    AgendaDetalle = aal.AGENDA_ACT_LIB_DETALLE.FirstOrDefault(w => w.FECHA.Value.Date == gh.HORA_INICIO.Value.Date);
                }
                //ListArea = ListArea ?? await StaticSourcesViewModel.CargarDatosAsync<ObservableCollection<AREA>>(() => new ObservableCollection<AREA>(new cArea().GetData().Where(w => w.ID_TIPO_AREA != 5)));
                //ListEstatusGrupo = ListEstatusGrupo ?? await StaticSourcesViewModel.CargarDatosAsync<ObservableCollection<GRUPO_HORARIO_ESTATUS>>(() => new ObservableCollection<GRUPO_HORARIO_ESTATUS>(new cGrupoHorarioEstatus().GetData()));

                //SelectedArea = null;
                //SelectedEstatusGrupo = 1;
                //EditFechaInicio = null;
                //EditFechaFin = null;
                //SelectedFecha = null;
                //await TaskEx.Delay(1);
                //EntityUpdate = null;
                //AgregarFecha = Visibility.Collapsed;

                //PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.EDITAR_FECHA);

                //if (obj == null)
                //    return;

                //// se valida de que tipo es el objeto
                //if (obj is GRUPO_HORARIO)
                //{
                //    EntityUpdate = (GRUPO_HORARIO)obj;

                //    SelectedArea = EntityUpdate.ID_AREA;
                //    SelectedEstatusGrupo = EntityUpdate.ESTATUS;
                //    EditFechaInicio = EntityUpdate.HORA_INICIO;
                //    EditFechaFin = EntityUpdate.HORA_TERMINO;

                //    SelectedFecha = EntityUpdate.HORA_INICIO.Value.Date;
                //}
                //else
                //    SelectedFecha = (DateTime)obj;

                //await TaskEx.Delay(1);
                //if (ListInternosDia == null)
                //    await TaskEx.Delay(1);

                //DatagridHorario.ItemsSource = ListInternosDia.Where(w => w.ListHorario.Any());
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al abrir agenda", ex);
            }
        }