Administración de votaciones - 17 18 - G2
Contenido
Miembros y contacto
- Pablo Tinoco Castillo, ptinococastillo@gmail.com Coordinador
- Francisco Fernández Angulo
- Jesús Martos Alé
- Miguel Medrano Gil
- Gonzalo Trabado García
Objetivo del subsistema
- Gestionar la creación de una votación
- Gestionar la edición de una votación
- Gestionar el borrado de una votación
Consideraciones
- Repositorio del proyecto: https://github.com/martos93/EGC1718
- Página Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/98
- Dependencias con otros módulos: Recibimos datos de "Autenticación" y "Censo", enviamos datos a "Cabina de votaciones"
Tecnología usada
Subsistema: Administración de votaciones Lenguaje/Herramienta: PHP -> PHPStorm Sistema de gestión de bibliotecas: ¿? Bibliotecas: Larabel framework: versión 5.5 Necesita Base de datos: Sí (Ninguna empleada actualmente, a la espera de directrices)
Estructura de datos
Haremos uso de la tablas votación, pregunta y respuesta:
Votación: - id: (int) identificador de la votación [pk, autoincrementable] - id_censo: (int) identificador del censo [fk, not null] - id_grupo: (int) identificador del grupo que puede votar en la votación [fk, not null] - titulo: (string/varchar) titulo de la votación a crear [blank, not null] - descripcion: (string/varchar) descripción de los objetivos de la votación [blank, not null] - fecha_ini: (datetime) fecha de inicio de la votación [not null, default=fecha_actual] - fecha_fin: (datetime) fecha de fin de la votación[not null] Pregunta: - id: (int) identificador de la pregunta [pk, autoincrementable] - id_votacion: (int) identificador de la votación a la que pertenece [fk, not null] - texto_pregunta: (string/varchar) texto de la pregunta que se realiza [blank, not null] - tipo_pregunta: (string/varchar ?) parametro para establecer el tipo de pregunta (Abierta, cerrada) [blank, not null] - id_dependencia: (int) identificador para definir dependencias entre preguntas [fk] Respuesta: - id: (int) identificador de la respuesta [pk, autoincrementable] - id_pregunta: (int) identificador de la pregunta [fk, not null] - id_pregunta: (int) identificador de la pregunta [fk, not null] - texto_pregunta: (string/varchar) texto de la respuesta [blank, not null] - seleccionada: (boolean) parámetro para establecer la selección de la respuesta
Esta sería la estructura de las tablas sobre las que trabajaríamos, una votación tendrá varias preguntas que podrán ser abiertas o cerradas, y estas a su vez podrán depender de otras preguntas. Las preguntas podrán tener una o más respuestas.
API
Las funcionalidades aquí descritas y especificadas no son finales. Debido a la diversidad de funcionalidades y necesidades de los otros grupos, éstas pueden variar a lo largo del desarrollo (sea debido al despliege, conflictos, etc).
Obtención de una votación
Se hace una petición GET con los parámetros siguientes y se devolverá un JSON con la siguiente información.
URL:
http://egc-votacion1718.es/api/get/votacion.json
Parámetros:
* id: Identificador de la votación.
Ejemplo:
GET http://egc-votacion1718.es/api/get/votacion.json?id=1
Formato JSON:
{ "votacion": { "id": "1", "id_censo": "288", "id_grupo": "31", "titulo": "Votación sobre consolas", "descripción": "En esta votación comprobaremos si hay mas gamers de PC o consolas", "fecha_ini": "31/07/2017 07:07", "fecha_fin": "31/08/2017 07:07" } }
Edición de una votación
Se hace una petición POST (a través del formulario descrito en su correspondiente vista) con los parámetros siguientes y se devolverá un JSON con la siguiente información.
URL:
http://egc-votacion1718.es/api/get/votacion.json
Parámetros:
* id: identificador de la votación * id_censo: identificador del censo * id_grupo: identificador del grupo que puede votar en la votación * titulo: titulo de la votación a crear * descripcion: descripción de los objetivos de la votación * fecha_ini: fecha de inicio de la votación * fecha_fin: fecha de fin de la votación
Aquellos parámetros que no se introduzcan no se modificarán.
Ejemplo:
POST http://egc-votacion1718.es/api/get/votacion.json?id=1&titulo=Titulo_modificado
Formato JSON:
{ "exito": true, "mensaje": "Editado con éxito", "votacion": { "id": "1", "id_censo": "288", "id_grupo": "31", "titulo": "Votación sobre consolas", "descripción": "En esta votación comprobaremos si hay mas gamers de PC o consolas", "fecha_ini": "31/07/2017 07:07", "fecha_fin": "31/08/2017 07:07" } }
Eliminación de una votación
Se hace una petición GET (a través del formulario descrito en su correspondiente vista) con los parámetros siguientes y se devolverá un JSON con la siguiente información.
URL:
http://egc-votacion1718.es/api/get/votacion.json
Parámetros:
* id: Identificador de la votación a eliminar.
Ejemplo:
GET http://egc-votacion1718.es/api/delete/result.json?id=1
Formato JSON:
{ "exito": true, "mensaje": "Eliminado con éxito" }