Diferencia entre revisiones de «Recuento de votos - 17 18 - G2»

De Wiki de EGC
Saltar a: navegación, buscar
(Obtener el recuento de una encuesta)
(Obtener el recuento de una encuesta)
 
(No se muestran 12 ediciones intermedias del mismo usuario)
Línea 68: Línea 68:
 
Para terminar, nuestro módulo deberá poder ofrecer la información completa del recuento al módulo de "Visualización de datos" para que se lleve a cabo. Para ello, ofreceremos una API que procedemos a definir.
 
Para terminar, nuestro módulo deberá poder ofrecer la información completa del recuento al módulo de "Visualización de datos" para que se lleve a cabo. Para ello, ofreceremos una API que procedemos a definir.
  
== Obtener todos los datos una encuesta con sus resultados (si la encuesta ya está cerrada) ==
+
== Obtener el recuento de una encuesta ==
  
 
Se hace una petición GET con los parámetros siguientes y se devolverá un JSON con la siguiente información.
 
Se hace una petición GET con los parámetros siguientes y se devolverá un JSON con la siguiente información.
 +
El id de votacion estará encriptado
  
 
'''URL:'''  
 
'''URL:'''  
Línea 76: Línea 77:
  
 
'''Ejemplo:'''
 
'''Ejemplo:'''
     GET http://egc-recuento1718.es/api/polls/{id}/{auth}
+
     GET http://egc-recuento1718.es/api/vote/{token_bd}/{id_votacion}/{id_pregunta}
  
 
'''Parámetros:'''
 
'''Parámetros:'''
     id: identificador de la encuesta (cifrado)
+
     token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
     auth: identificador del usuario autorizado para obtener esa votación
+
     id_votacion: Identificador de la votación  
 +
    id_pregunta: Identificador de la pregunta
  
 
'''Formato JSON:'''
 
'''Formato JSON:'''
 
   {
 
   {
poll_id:1
+
["1":179,"2":176,"3":156,"4":141,"5":168,"6":179, "total_votes", "998" ]
title:Votacion para el nuevo delegado de clase
 
results:
 
result:
 
begin_date:0000-00-00 00:00:00
 
finish_date:0000-00-00 00:00:00
 
total_voters:0
 
total_votes:0
 
question:\u00bfQuien sera el nuevo delegado de clase para el curso 1718?
 
"status":
 
 
      
 
      
 
   }
 
   }
  
 +
'''Códigos de estado'''
  
 +
<table border="1" style="border-collapse:collapse">
  
== Obtener el recuento de una encuesta ==
+
<tr>
 +
<th> Nombre
 +
</th>
 +
<th> Tipo
 +
</th>
 +
<th> Descripción
 +
</th></tr>
 +
<tr>
 +
<td> result
 +
</td>
 +
<td> JSON
 +
</td>
 +
<td> Objetos votos
 +
</td></tr>
 +
<tr>
 +
<td> msg
 +
</td>
 +
<td> String
 +
</td>
 +
<td> 200 OK
 +
</td></tr>
 +
<tr>
 +
<th> Nombre
 +
</th>
 +
<th> Tipo
 +
</th>
 +
<th> Descripción
 +
</th></tr>
 +
<tr>
 +
<td> result
 +
</td>
 +
<td> Boolean
 +
</td>
 +
<td> Código de error
 +
</td></tr>
 +
<tr>
 +
<td> msg
 +
</td>
 +
<td> String
 +
</td>
 +
<td> 404 NOT FOUND
 +
</td></tr>
 +
<tr>
 +
<th> Nombre
 +
</th>
 +
<th> Tipo
 +
</th>
 +
<th> Descripción
 +
</th></tr>
 +
<tr>
 +
<td> result
 +
</td>
 +
<td> Boolean
 +
</td>
 +
<td> Código de error
 +
</td></tr>
 +
<tr>
 +
<td> msg
 +
</td>
 +
<td> String
 +
</td>
 +
<td> 400 Bad Request.
 +
</td></tr></table>
  
Se hace una petición GET con los parámetros siguientes y se devolverá un JSON con la siguiente información.
+
== Obtener las opciones disponibles a votación para una encuesta ==
  
 
'''URL:'''  
 
'''URL:'''  
Línea 107: Línea 164:
  
 
'''Ejemplo:'''
 
'''Ejemplo:'''
     GET http://egc-recuento1718.es/api/vote/{id}/{auth}
+
     GET http://egc-recuento1718.es/api/optionspoll/{token_bd}/{id_votacion}/{id_pregunta}
 
 
 
'''Parámetros:'''
 
'''Parámetros:'''
     id: identificador de la encuesta (cifrado)
+
     token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos
     auth: identificador del usuario autorizado para obtener esa votación
+
    id_votacion: Identificador de la votación
 +
     id_pregunta: Identificador de la pregunta
  
 
'''Formato JSON:'''
 
'''Formato JSON:'''
 
   {
 
   {
["Juan",179,"Ana",176,"Pepe",156,"Luis",141,"Nulo",168,"Blanco",179]
+
[{"option":"1"},{"option":"2"},{"option":"3"},{"option":"4"},{"option":"5"},{"option":"6"}]
 
      
 
      
 
   }
 
   }
  
 +
'''Códigos de estado'''
  
== Obtener las opciones disponibles a votación para una encuesta ==
+
<table border="1" style="border-collapse:collapse">
 
 
Se hace una petición GET con los parámetros siguientes y se devolverá un JSON con la siguiente información.
 
 
 
'''URL:'''
 
    http://egc-recuento1718.es/api/
 
 
 
'''Ejemplo:'''
 
    GET http://egc-recuento1718.es/api/optionspoll/{id}/{auth}
 
'''Parámetros:'''
 
    id: identificador de la encuesta (cifrado)
 
    auth: identificador del usuario autorizado para obtener esa votación
 
  
'''Formato JSON:'''
+
<tr>
  {
+
<th> Nombre
[{"option":"Juan"},{"option":"Ana"},{"option":"Pepe"},{"option":"Luis"},{"option":"Nulo"},{"option":"Blanco"}]
+
</th>
   
+
<th> Tipo
  }
+
</th>
 +
<th> Descripción
 +
</th></tr>
 +
<tr>
 +
<td> result
 +
</td>
 +
<td> JSON
 +
</td>
 +
<td> Objetos votos
 +
</td></tr>
 +
<tr>
 +
<td> msg
 +
</td>
 +
<td> String
 +
</td>
 +
<td> 200 OK
 +
</td></tr>
 +
<tr>
 +
<th> Nombre
 +
</th>
 +
<th> Tipo
 +
</th>
 +
<th> Descripción
 +
</th></tr>
 +
<tr>
 +
<td> result
 +
</td>
 +
<td> Boolean
 +
</td>
 +
<td> Código de error
 +
</td></tr>
 +
<tr>
 +
<td> msg
 +
</td>
 +
<td> String
 +
</td>
 +
<td> 404 NOT FOUND
 +
</td></tr>
 +
<tr>
 +
<th> Nombre
 +
</th>
 +
<th> Tipo
 +
</th>
 +
<th> Descripción
 +
</th></tr>
 +
<tr>
 +
<td> result
 +
</td>
 +
<td> Boolean
 +
</td>
 +
<td> Código de error
 +
</td></tr>
 +
<tr>
 +
<td> msg
 +
</td>
 +
<td> String
 +
</td>
 +
<td> 400 Bad Request.
 +
</td></tr></table>

Revisión actual del 20:02 13 ene 2018

Objetivo del subsistema

Dada una votación el subsistema deberá realizar un recuento de los votos almacenados.

Consideraciones

Miembros del equipo

Definición del proyecto

La realización de este proyecto consta de la realización del módulo de "Recuento de votos" del sistema Agora Voting.

Código heredado

Hemos acordado no utilizar código heredado de años anteriores, por supuesto se consultará el mismo para posibles dudas pero desarrollaremos el nuestro propio.

Gestión de la comunicación

Para tener una comunicación lo más fluida y correcta posible, y asegurarnos que el flujo sea el adecuado, utilizaremos varias herramientas como son:

  • Reuniones Presenciales: Para llevar a cabo diferentes aspectos del proyecto y tomar decisiones sobre el mismo.
  • Skype: Para reuniones telemáticas, cuando no sea posible realizar una reunión presencial lo haremos a través de este medio.
  • Telegram: Para la realización de comunicaciones cortas y cosas puntuales que tengamos que comentar, así como dudas que se nos planteen.

Gestión de las tareas

Gestión del código

Para la gestión del control de versiones y del código usaremos Git, así como GitHub como repositorio de código para nuestro proyecto.

Enlace al repositorio de código en GitHub:https://github.com/EGC-G2-Trabajo-1718/recuento-de-votos

Tecnologías elegidas

Subsistema: Recuento de votos.
Lenguaje/Herramienta: <php/phpstrom 2017.2.4>
Sistema de gestión de bibliotecas: php -> Composer
Bibliotecas: 
   Eloquent (ORM de laravel para gestión de la base de datos): 5.1.8
Necesita Base de datos: Sí (mysql)

Formato general para detallar incidencias

Las incidencias pueden emplearse no solo para fallos.

Título: <breve título sobre la incidencia>
Descripción: <descripción detallada del error>
   La descripción puede incluir imagenes o la salida emitida por el fallo.
Etiquetas: <etiquetas de GitHub para clasificar las incidencias>
   enhancement: propuesta de mejora
   bug: fallos encontrados en el sistema
   help wanted: incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro
   question: (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión

Las incidencias pueden incluirse en Proyectos de GitHub.

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.

Dependencias

En primer lugar estableceremos cuales van a ser las dependencias de nuestro módulo con otros.

Dependemos totalmente de la API del módulo de Almacenamiento de datos del cual tendremos que obtener los resultados de la votación (encriptados) para realizar el recuento.

Para terminar, nuestro módulo deberá poder ofrecer la información completa del recuento al módulo de "Visualización de datos" para que se lleve a cabo. Para ello, ofreceremos una API que procedemos a definir.

Obtener el recuento de una encuesta

Se hace una petición GET con los parámetros siguientes y se devolverá un JSON con la siguiente información. El id de votacion estará encriptado

URL:

   http://egc-recuento1718.es/api/

Ejemplo:

   GET http://egc-recuento1718.es/api/vote/{token_bd}/{id_votacion}/{id_pregunta}

Parámetros:

    token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
    id_votacion: Identificador de la votación 
    id_pregunta: Identificador de la pregunta

Formato JSON:

 {

["1":179,"2":176,"3":156,"4":141,"5":168,"6":179, "total_votes", "998" ]

 }

Códigos de estado

Nombre Tipo Descripción
result JSON Objetos votos
msg String 200 OK
Nombre Tipo Descripción
result Boolean Código de error
msg String 404 NOT FOUND
Nombre Tipo Descripción
result Boolean Código de error
msg String 400 Bad Request.

Obtener las opciones disponibles a votación para una encuesta

URL:

   http://egc-recuento1718.es/api/

Ejemplo:

   GET http://egc-recuento1718.es/api/optionspoll/{token_bd}/{id_votacion}/{id_pregunta}

Parámetros:

    token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos
    id_votacion: Identificador de la votación 
    id_pregunta: Identificador de la pregunta

Formato JSON:

 {

[{"option":"1"},{"option":"2"},{"option":"3"},{"option":"4"},{"option":"5"},{"option":"6"}]

 }

Códigos de estado

Nombre Tipo Descripción
result JSON Objetos votos
msg String 200 OK
Nombre Tipo Descripción
result Boolean Código de error
msg String 404 NOT FOUND
Nombre Tipo Descripción
result Boolean Código de error
msg String 400 Bad Request.