Cabina de votaciones - 17 18
Contenido
Resumen del trabajo
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.
Objetivo del subsistema
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.
Tecnologías que se usarán: Subsistema: Cabina de votación Lenguaje/Herramienta: Node.js 9.2 (Javascript v8) Bibliotecas: - restify: 6.3.4 - rest: 2.0.0 - lodash: 4.17.4 - async: 2.6.0 Sistema de gestión de bibliotecas: npm Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).
APIs y datos que se usarán y devolverán
Estructura de un voto:
id: (int) identificador del voto [pk, autoincrementable] encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null] id_election: (int) identificador de la votación [fk, not null] encrypted_answers: (string) es un string con el contenido de la votación cifrado.
Obtención de un voto: Tipo: GET URL: http://egc-cabina.es/api/get/vote.json?id=x&id_election=y Parámetros: id_vote: Identificador del voto (x)
id_election: Identificador de la elección del voto (y)
Formato JSON Ejemplo: Obtención del voto 1
{
"vote": { "id": "1", "encrypted_user": "xgs5fdy2", "id_election": "165", "encrypted_answers": "..." }
}
Consulta de votos: Tipo: GET URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&id_election=y Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)
id_election (opcional) Identificador de la votación (y)
Formato JSON Ejemplo: Buscando la votación 165
{
"votos": { "vote1": { "id": "1", "encrypted_user": "xgs5fdy2", "id_election": "165", "encrypted_anwers": "..." },
"voto2": { "id": "2", "encrypted_user": "whedvsg3", "id_election": "165", "encrypted_anwers": "..." } }
}
Creación de voto: Tipo: POST URL: http://egc-cabina.es/api/create/vote.json Parámetros: id_user: (int) Identificador del usuario (sin encriptar)
id_election: (int) Identificador de la votación answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.
{
"result": true, "vote": { "id": "1", "encrypted_user": "as5d8gr4", "id_election": "34", "id_group": "13", "encrypted_answers": "..." }
}
Plantillas HTML
Se tiene pensado que el formato de la cabina de votación sea el siguiente:
Votación de la pregunta X
<hX></hX>
Pregunta
<% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %>
<select> <option value=""> </select>
<% En el caso de que se trate de una respuesta donde habrá que poner texto %>
<label...></label> <input value="" />
<button <% Botón de siguiente pregunta %>>Siguiente pregunta</button>
Final de la votación de la encuesta
<hX></hX>
Gracias por responder a
<button>Finalizar</button> <% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %>