void CargarCalendario(short?anio = null, short?mes = null)
        {
            try
            {
                var lg = new List <GRUPO_HORARIO>();
                aal = new cAgendaActividadLibertad().Obtener((int)aal.ID_AGENDA_ACTIVIDAD_LIBERTAD);
                var res = aal.AGENDA_ACT_LIB_DETALLE.OrderBy(w => w.FECHA);
                if (res != null)
                {
                    foreach (var r in res)
                    {
                        lg.Add(new GRUPO_HORARIO()
                        {
                            HORA_INICIO = r.HORA_INICIO, HORA_TERMINO = r.HORA_FIN, ESTATUS = (short)r.ASISTENCIA, ID_TIPO_PROGRAMA = (short)r.ASISTENCIA
                        });
                    }
                    if (lg != null)
                    {
                        if (lg.Count == 0)
                        {
                            Calendario.DisposeCalendario();
                            return;
                        }
                        var hoy = Fechas.GetFechaDateServer;
                        Calendario.SelectedMes  = mes.HasValue ? mes.Value : hoy.Month;
                        Calendario.SelectedAnio = anio.HasValue ? anio.Value : hoy.Year;

                        Calendario.CrearCalendarioLiberado(
                            lg.OrderBy(o => o.HORA_INICIO).FirstOrDefault().HORA_INICIO.Value,
                            lg.OrderByDescending(o => o.HORA_TERMINO).FirstOrDefault().HORA_TERMINO.Value,
                            lg);
                        Calendario.DiasAgendados = new ObservableCollection <GRUPO_HORARIO>(lg);
                    }
                }
                else
                {
                    Calendario.DisposeCalendario();
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al Cargar Calendario", ex);
            }
        }
        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);
            }
        }
 public AgendasViewModel(AGENDA_ACTIVIDAD_LIBERTAD AAL)
 {
     aal = AAL;
 }