obtener_avance_usuarios
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:
- se calcula el avance acumulado HASTA la 'fecha_desde' especificada. Si no se especifica, este cálculo da 0.
- se calcula el avance acumulado HASTA la 'fecha_hasta' especificada. Si no se especifica, se toma el valor del avance actual.
- se obtiene el avance restando: avance hasta 'fecha_hasta' - avance hasta 'fecha_desde'.
- 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.