ORM - Tests Take
Presentación de exámenes para la ORM
Seguridad ¶
Procesos para ingresar en la presentación de la prueba
Obtener datos iniciales del examen ¶
Devuelve los datos iniciales del evento.
setupGET/security/setup{?eventid}
Example URI
- eventid
required number(required)identificador del evento
200Headers
Content-Type: application/jsonBody
{
"logo": "http://....logo.png",
"eventname": "ORM",
"eventyear": "2024"
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}404Headers
Content-Type: application/jsonBody
{
"msg": "Evento no encontrado"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Error inteno"
}Validación Código ¶
Se busca y valida que el código del alumno tenga alguna prueba asignada en el evento El código del alumno se validará de la siguiente forma: El código debe tener 8 dígitos El código serán los 8 caracteres de la derecha, luego de concatenar el CRC del ID considerando 10 digitos del alumno. Por ejemplo: Código enviado: 12345699 ID: 0000123456 CRC=1233768764374699 tomar unir ID y 2 caracteres de la derecha del CRC 000012345699 comparar solo con los 8 de más a la derecha 12345699 Debe validarse que esté activo, asociado en la tabla inscripted a un colegio que tenga el tests y que corresponda con el grado del alumno en la inscripción Debe devolver una lista de 4 colegios aleatorios que pertenezcan al MISMO PAíS. Siendo solo uno el verdadero
checkcodePOST/security/checkcode{?eventid,pupilcode}
Example URI
- eventid
required number(required)identificador del evento
- pupilcode
required string(required)código del alumno
200Headers
Content-Type: application/jsonBody
{
"schools": [
{
"id": 1,
"name": "Colegio UNO",
"dsc": "Estado - Municipio (Si Tiene)"
},
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}404Headers
Content-Type: application/jsonBody
{
"msg": "No tenemos ningún alumno registrado con ese código",
"instructions": "Si necesitas ayuda comunícate con 0800-ORMVE" // Texto fijo
}500Headers
Content-Type: application/jsonBody
{
"msg": "error retornado al programador desde mysql_error()"
}Validación Colegio ¶
Se valida que el alumno pertenezca al colegio y esté inscrito en la prueba y corresponda el grado. Si todo está OK, se debe generar un sessionid para proseguir el examen
checkschoolPOST/security/checkschool{?pupilcode,schoolid}
Example URI
- pupilcode
required string(required)código del alumno
- schoolid
required number(required)identificador del colegio
200Headers
Content-Type: application/jsonBody
{
"sessionid": "876879876876876876976987",
"fullname": "José Manuel Pérez Gutierrez",
"schoolname": "Colegio Santiago de León de Caracas",
"schooladdress": "Miranda - Chacao",
"tests": [
{
"id": 1
"name": "Examen UNO"
},
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Combinación test-pupil-school inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "error retornado al programador desde mysql_error()"
}Actualizar Inscrito ¶
Se actualiza la información del alumno.
updatepupilPOST/security/updatepupil{?sessionid,email,FOTO}
Example URI
- sessionid
required string(required)identificador de la sessión
optional string(required)correo electrónico
- FOTO
optional file(required)fotografía
200Headers
Content-Type: application/jsonBody
{
"id": 1, // identificador de actualización
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "error retornado al programador desde mysql_error()"
}Examen ¶
Procesos para realizar el examen
Preparación del la respuesta del examen ¶
Devuelve los datos iniciales del examen. Se registra la información que relaciona el inscripted con el test en la tabla testtakers
setupGET/tests/setup{?sessionid,testid}
Example URI
- sessionid
required string(required)identificador de la sesión
- testid
required number(required)identificador del examen
200Headers
Content-Type: application/jsonBody
{
"instructions": [
{
"id": 1,
"content": "<html>...</html>",
"usepicture": true,
"backallowed": true,
"image": {
"url": "http:/..../archivo.png",
"type": "image/png"
}
},
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}404Headers
Content-Type: application/jsonBody
{
"msg": "Prueba no encontrada"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Error inteno"
}Próxima Pregunta ¶
Va a la siguiente pregunta de la prueba considerando lo siguiente:
-
Si está vacío el campo startedat de la tabla testtakers se le coloca el NOW
-
Según el campo randomshow de la tabla tests intercambiar aleatoriamente las preguntas
-
Si no hay más preguntas disponibles llenar el campo finishedat de la tabla testtakers
-
Si no hay más preguntas disonibles cambiar el retorno colo car finished = true
NOTA: La aleatoriedad de las preguntas debe respetar la dificultad de las misma
nextPOST/tests/next{?back,sessionid}
Example URI
- back
optional number(required)por defecto vale 0. (1=ir hacia atrás, 0=ir hacia adelante)
- sessionid
required string(required)identificador de la sesión
200Headers
Content-Type: application/jsonBody
{
"finished": false,
"lefttime": [ // tiempo transcurrido desde el inicio de la prueba
"days": 0,
"hours": 4,
"minutes": 23,
"seconds": 12
],
"actualquestion": 1,
"totalquestions": 23,
"question": {
"id": 1, // identificador de la pregunta
"content": "", // richtext
"displaytype": {
"id": 1, // 1=richtext, 2=SCORM
"name": "Richtext"
},
"scorm": {
"mode": 1, // 0=Ventana Nueva, 1=Embebido, 2=Flotante
"utl": : "http://...", // ESTO NO ESTOY MUY SEGURO
},
"type": 1, // 1=seleccion simple, 2=seleccion multiple, 3=texto corto, 4=desarrollo
"options": [ // cuando type es 1 o 2
{
"id": 1, // deben venir ordenadas por ord
"value": "Valor UNO", // string si texto, url si imagen
"contettype": "text/plain", //"text/plain", "image/png", "image/jpg"
},
...
],
"type4": { // cuando es type 4 (desarrollo)
"admittext": true,
"attachcount": 3
}
},
"answer": "{ 'questiontype1id': 1 }" // revisar formato del tests/answer
}200Headers
Content-Type: application/jsonBody
{
"finished": true,
"finishtime": [ // tiempo total de la prueba transcurrido
"days": 0,
"hours": 4,
"minutes": 23,
"seconds": 12
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}404Headers
Content-Type: application/jsonBody
{
"msg": "Prueba no encontrada"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Error inteno"
}Actualizar Respuesta ¶
Incluye/actualiza la respuesta a una pregunta
Formato del Response:
-
Sel Simple { “questiontype1id”: 1 }
-
Sel Multiple { “questiontype2id”: [1,2,3,4] }
-
Completación Simple { “response”: “Azul” }
-
Desarrollo { “text”: “…”, “attachments”: [ { “filename”: “attachuno.pdf”, “mimetype”: “application/pdf” }, … ] }
answerPOST/tests/answer{?sessionid,questionid,response}
Example URI
- sessionid
required string(required)identificador de la sesión
- questionid
required number(required)identificador de la pregunta
- response
required json(required)Ver explicación arriba
200Headers
Content-Type: application/jsonBody
{
"id": 1 // identificador actualizado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}404Headers
Content-Type: application/jsonBody
{
"msg": "Prueba no encontrada"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Error inteno"
}