/// <summary> /// metodo que obtiene el horario del participante seleccionado /// </summary> /// <param name="s">objeto tipo grupo participante</param> /// <param name="horaincio">objeto tipo datetime</param> /// <param name="horatermino">objeto tipo datetime</param> /// <returns>lista de horario del participante</returns> private ObservableCollection <ListHorario> ListaHorario(GRUPO_PARTICIPANTE s, DateTime horaincio, DateTime horatermino) { try { var horarios = new List <ListHorario>(); foreach (var item in new cGrupoParticipante().GetData().Where(w => w.ID_CENTRO == s.ID_CENTRO && w.ING_ID_ANIO == s.ING_ID_ANIO && w.ING_ID_IMPUTADO == s.ING_ID_IMPUTADO && w.ING_ID_INGRESO == s.ING_ID_INGRESO && w.ID_GRUPO != null)) { foreach (var subitem in new cGrupoAsistencia().GetData().Where(w => w.GRUPO_HORARIO.GRUPO.ID_ESTATUS_GRUPO == 1 && w.GRUPO_HORARIO.ESTATUS == 1 && w.ESTATUS == 1 && w.ID_GRUPO == item.ID_GRUPO && w.GRUPO_HORARIO.HORA_INICIO >= horaincio && w.GRUPO_HORARIO.HORA_TERMINO < horatermino).AsEnumerable().Select(se => new ListHorario() { GrupoHorarioEntity = se.GRUPO_HORARIO, NombreActividad = se.GRUPO_HORARIO.GRUPO.ACTIVIDAD.DESCR, NombreGrupo = se.GRUPO_HORARIO.GRUPO.DESCR, AREADESCR = se.GRUPO_HORARIO.AREA.DESCR, GRUPO_HORARIO_ESTATUSDESCR = se.GRUPO_HORARIO.GRUPO_HORARIO_ESTATUS.DESCR, DESCRDIA = se.GRUPO_HORARIO.HORA_INICIO.Value.ToLongDateString(), HORA_INICIO = se.GRUPO_HORARIO.HORA_INICIO.Value, HORA_TERMIINO = se.GRUPO_HORARIO.HORA_TERMINO.Value, strHORA_INICIO = se.GRUPO_HORARIO.HORA_INICIO.Value.ToShortTimeString(), strHORA_TERMIINO = se.GRUPO_HORARIO.HORA_TERMINO.Value.ToShortTimeString(), State = string.Empty, Id_Actividad = se.GRUPO_HORARIO.GRUPO.ACTIVIDAD.ID_ACTIVIDAD, Id_Programa = se.GRUPO_HORARIO.GRUPO.ACTIVIDAD.ID_TIPO_PROGRAMA, })) { horarios.Add(subitem); } } return(new ObservableCollection <ListHorario>(horarios.OrderBy(o => o.HORA_INICIO).ToList())); } catch (Exception ex) { StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error ", ex); } return(new ObservableCollection <ListHorario>()); }
/// <summary> /// metodo que obtiene el porcentaje de asistencia del interno /// </summary> /// <param name="item">objeto de tipo grupo participante</param> /// <param name="collection"> colleccion de grupo participante</param> /// <returns>cadena de texto con el resultado de la operacion %</returns> private string ObtenerPorcentajeAsistencia(GRUPO_PARTICIPANTE item, ICollection <GRUPO_PARTICIPANTE> collection) { try { var TotalHoras = 0.0; var AsistenciaHoras = 0.0; TotalHoras = item.ID_GRUPO.HasValue ? item.GRUPO.GRUPO_HORARIO.Where(w => w.ID_GRUPO == item.ID_GRUPO && w.ESTATUS == 1).Count() : 0; AsistenciaHoras = item.GRUPO_ASISTENCIA.Where(w => w.GRUPO_HORARIO.ESTATUS == 1 && (w.ESTATUS == 1 || w.ESTATUS == 3) && collection.Where(wh => wh.GRUPO != null && wh.GRUPO.GRUPO_HORARIO.Where(whe => whe.ESTATUS == 1).Any()).Contains(w.GRUPO_PARTICIPANTE) && w.ASISTENCIA == 1).Count(); if (double.IsNaN((AsistenciaHoras / TotalHoras))) { return(string.Empty); } return(string.Format("{0:P2}", (AsistenciaHoras / TotalHoras))); } catch (Exception ex) { StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al calcular porcentaje de asistencia", ex); return(string.Empty); } }