Obtener Avance Usuarios

obtener_avance_usuarios ( id_grupo as Integer , (opcional) perfil as String , (opcional) id_usuario as String, (opcional) fecha_desde as Date, (opcional) fecha_hasta as Date )

El método nos permite consultar el avance general de los usuarios sobre un ÚNICO grupo, así como también nos brinda la posibilidad de limitar la respuesta según los filtros aplicados, ejemplo: avance para un usuario particular, o para usuarios de un perfil particular.

Devuelve: 1{administrador_grupo + estado + id_grupo + perfil + fecha_alta + responsable_grupo + (avance) + id_usuario}n


Funcionamiento

  • El único campo obligatorio es id_grupo.
  • Al consultar por id_grupo nos trae el avance de todos los usuarios en el grupo, independientemente de su permiso en programa.
  • El avance del usuario es un valor numérico entre 0 y 100. El avance igual a 100 determina que el usuario ya finalizo el curso.
    • Para el caso de que el aula no registre avance se retorna 100 .
    • En las aulas sin unidades retorna un avance de 0.
  • El cálculo de avance puede limitarse al avance obtenido entre dos fechas específicas, al avance obtenido desde el comienzo del curso hasta una fecha específica , o al avance obtenido desde una fecha dada hasta la fecha actual.
    • Cuando se aplique un límite de estas características '''se omite el caché y cada avance particular se debe recalcular''', consumiendo más tiempo en cada operación!
  • La información devuelta por el WS estará estructurada en bloques con información de cada usuario relacionada con el grupo especificado.
  • Sobre esta información se aplican filtros de dos tipos: uno que limita los registros a devolver, y otro que devuelve todos los registros pero completa solamente ciertos avances.
    • FILTRO 1: el filtro se realiza sobre el total de los datos, trayendo solo los que cumplan con el valor requerido
    • FILTRO 2: se aplica sobre un conjunto de datos que pueden o no tener un filtro de tipo FILTRO 1 aplicado previamente. No realiza un filtrado en el sentido literal de la palabra, sino que lo hace es solamente colocar el valor correspondiente al avance en los usuario-grupo que corresponda según este FILTRO 2 aplicado, en los demás coloca valor 0.


Funcionamiento de Fechas

  • Parámetros:
    • Si paso solo 'fecha_desde', se obtiene el avance realizado desde esa fecha en adelante.
    • Si paso solo 'fecha_hasta', se obtiene el avance realizado hasta esa fecha.


  • Se calcula el avance del usuario logrado entre las fechas, de la siguiente manera:
    1. se calcula el avance acumulado HASTA la 'fecha_desde' especificada. Si no se especifica, este cálculo da 0.
    2. se calcula el avance acumulado HASTA la 'fecha_hasta' especificada. Si no se especifica, se toma el valor del avance actual.
    3. se obtiene el avance restando: avance hasta 'fecha_hasta' - avance hasta 'fecha_desde'.
    4. Nota: para los usuarios que no hayan realizado interacción con el grupo entre las fechas especificadas, se mostrará valor "0" para el tag 'avance' en la respuesta.


    • el parámetro 'fecha_desde' considera desde las 00:00 hs de la fecha en cuestión.
    • el parámetro 'fecha_hasta' considera hasta las 23:59 hs de la fecha en cuestión.


Funcionamiento de Filtros

  • id_grupo, FILTRO 1 información limitada para el grupo, todos los usuarios pertenecientes al grupo incluyendo _anonimo.
  • id_usuario, FILTRO 1 nos trae la información para ese usuario especificado en el grupo correspondiente.
  • perfil, FILTRO 1 información limitada para el perfil, es decir usuarios que tienen el perfil indicado en el grupo.
  • fecha_desde, FILTRO 2
  • fecha_hasta, FILTRO 2
  • Particularidades en las combinaciones de filtros:
    • 1 id_grupo es obligatorio, por lo tanto siempre participará de las combinaciones.
    • 2 Si especifico perfil, filtra id_grupo + perfil, y si específico id_usuario, independientemente si especifico perfil o no, filtra por id_grupo + id_usuario.
    • 3 Sobre el resultado obtenido en 2, aplica los filtros por fecha, siguiendo el funcionamiento definido anteriormente.


Ejemplo de Respuesta

Ejemplo de respuesta de la llamada obtener_avance_usuarios que indica consultar el avance para un usuario específico en un grupo específico.

  • Llamada:

     <aula:obtener_avance_usuarios>
        <aula:id_grupo>64</aula:id_grupo>
        <aula:perfil></aula:perfil>
        <aula:id_usuario>lovecraft</aula:id_usuario>
        <aula:fecha_desde></aula:fecha_desde>
        <aula:fecha_hasta></aula:fecha_hasta>
     </aula:obtener_avance_usuarios>

En esta llamada, podemos observar que: se solicita consultar el avance para un usuario con 'id_usuario'= "lovecraft" en el grupo con 'id_grupo'= "64".


  • Respuesta:

 <obtener_avance_usuarios_response xmlns="urn:Educativa/Aula/">
        <usuarios>
           <administrador_grupo>false</administrador_grupo>
           <estado>true</estado>
           <id_grupo>64</id_grupo>
           <perfil>A</perfil>
           <fecha_alta>2015-06-17</fecha_alta>
           <responsable_grupo>false</responsable_grupo>
           <avance>20</avance>
           <id_usuario>lovecraft</id_usuario>
        </usuarios>
     </obtener_avance_usuarios_response>


Errores de validación


Educativa::Aula::Error::IdUsuarioInvalido - cuando el 'id_usuario' ingresado contiene caracteres inválidos.


Educativa::Aula::Error::UsuarioInexistente - ocurre cuando el usuario no existe en la plataforma.


Educativa::Aula::Error::IdGrupoInvalido - El 'id_grupo' ingresado no es integer.


Educativa::Aula::Error::GrupoInexistente - ocurre cuando el grupo ingresado no existe en la base de datos.


Educativa::Aula::Error::PerfilUsuarioInvalido - ocurre cuando el perfil ingresado no corresponde a uno de los perfiles existentes en la plataforma.


Educativa::Aula::Error::FechaFormatoInvalido - la fecha ingresada tiene un formato inválido debido a que no se están usando 'separadores válidos' (uno o más de estos: '-', ' ') entre los distintos valores que componen la fecha (año, mes, día)


Educativa::Aula::Error::FechaInvalida

Al ingresar una fecha inválida o inexistente, debido a que:

  • el año ingresado no es un número entero positivo de 4 dígitos, entre 1000 y 9999.
  • el mes ingresado no esta entre 1 y 12. Se debe permitir el 0 a la izquierda en los números de 1 dígito.
  • el día ingresado no esta entre 1 y 31. Se debe permitir el 0 a la izquierda en los números de 1 dígito.
  • el día ingresado no pertenece al mes indicado. Ej: 2014-11-31, noviembre no tiene día 31.


Educativa::Aula::Error::RangoFechaInvalido - cuando la fecha de finalización es anterior a la fecha de inicio.