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 calculo de avance puede limitarse al avance obtenido entre dos fechas específicas, o el avance obtenido desde el comienzo del curso hasta una fecha específica.
  • 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' ésta se tomará como si fuera una 'fecha_hasta'.
    • Si paso solo 'fecha_hasta' se hace caso omiso del parámetro y se procesa como si no se hubiera especificado fecha alguna.
    • Conclusión: la unica fecha que cumple una función sola es 'fecha_desde', pero con el funcionamiento que uno esperaría para una 'fecha_hasta'.
  • Cálculo:
    • Si solo envío 'fecha_desde' se calcula el avance del usuario HASTA esa fecha.
      • para los usuarios que no hayan realizado interacción con el grupo antes de la 'fecha_desde' se mostrará valor "0" para el tag 'avance' en la respuesta.
    • si envío 'fecha_desde' y 'fecha_hasta' se calcula el avance del usuario logrado entre esas fechas especificadas, de la siguiente manera:
      • se calcula el avance HASTA la 'fecha_desde' especificada.
      • se calcula el avance HASTA la 'fecha_hasta' especificada.
      • se obtiene el avance restando: avance hasta 'fecha_hasta' - avance hasta 'fecha_desde'. Este avance puede resultar ser "0".
        • para los usuarios que no hayan realizado interacción con el grupo antes de la 'fecha_hasta' se mostrará valor "0" para el tag 'avance' en la respuesta.


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.