/// <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>());
 }
예제 #2
0
        /// <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);
            }
        }