-
Notifications
You must be signed in to change notification settings - Fork 0
Hito 3: API HTTP Pedidos
Para dar la posibilidad de que los usuarios de la universidad puedan realizar pedidos desde máquinas distintas a la aplicación que se encuentre en otra distinta se ha desarrollado una API HTTP que facilite a los usuarios la posibilidad de hacerlo.
Esta clase está vacía ya que su principal función es conectar la aplicación desarrollada con el backend http creado para la misma y para ello se usan distintas etiquetas de SpringWeb que son @Configuration y @ComponentScan y cuyas funciones son indicar la configuración de la misma e indicar a que paquete concreto se unirá respectivamente.
Como la principal funcionalidad de nuestra api http es proporcionar los servicios al cliente de realizar pedidos, en esta clase facilitamos las distintas funciones necesarias para ello. Estas son las siguientes:
Añadir Producto al Pedido: Teniendo un pedido concreto, añadimos a él un producto de la cafetería indicando la cantidad del mismo. Podrá capturar una excepción en caso de que no haya suficiente stock del producto en la cafetería.
Eliminar Producto del Pedido: Teniendo un pedido concreto, eliminamos una cantidad concreta de un producto del mismo. Podrá capturar una excepción si no hay una cantidad suficiente en el pedido para eliminar o si el producto elegido no existe en el pedido.
Cambiar Estado del Pedido: Teniendo un pedido concreto, el estado de este puede variar dependiendo de la fase en la que se encuentre. Estas son: en cocina, entregado, pagado y finalizado. Los estados son secuenciales y por tanto no es posible cambiar de estado como se desee, de ser así, se capturará una excepción advirtiendo de ello.
Mostrar Caja del Día: Nos permite consultar las ganancias y el número de pedidos de una fecha concreta.
El objetivo de esta clase es ofrecer al usuario las funciones necesarias para poder elegir los distintos productos que desee añadir a sus pedidos. Las funciones son las siguientes:
Consultar Productos por Categoría: Muestra los distintos productos que se encuentran disponibles en una cafetería concreta filtrados por la categoría.
Mostrar Productos: Muestra todos los productos disponibles de una cafetería concreta.
Esta clase ha sido creada para que desde la api http un usuario pueda gestionar su perfil registrado en nuestro sistema desarrollado ofreciéndole distintas funcionalidades para ello. Estas son las siguientes:
Obtener Usuario: Obtenemos los distintos datos de un usuario concreto a partir de un DNI que nos facilite el mismo.
Editar Perfil: Nos permite editar los datos guardados en nuestro sistema de un usuario.
Obtener Pedidos de Usuario: Para un usuario concreto, devolverá todos los pedidos que ha realizado este.
Para facilitar la comunicación entre la cocina y el sistema, en este hito hemos desarrollado mediante SpringMail un servicio que notificará a la cocina, mediante correo electrónico, los distintos pedidos realizados por los usuarios junto con la hora a la que se encuentran programados.
Para este hito ha sido necesario modificar y añadir algunas clases de la aplicación que desarrollamos en los hitos anteriores. A continuación veremos los cambios realizados:
Debido a que se ha ampliado el rango de usuarios que puedan usar la aplicación que se ha desarrollado, nos hemos visto en la necesidad de almacenar los datos de estos. Por tanto, hemos creado una clase de Usuario que contendrá atributos como el DNI, el nombre, el apellido, el correo electrónico, la fecha de nacimiento y el número de la tarjeta universitaria. Además, almacenamos para cada uno de ellos los distintos pedidos que ha ido realizando a lo largo del uso de la aplicación.
La modificación que ha recibido esta clase es la inclusión de un nuevo atributo que corresponde a la hora en la que el usuario ha programado el pedido y un método que de la posibilidad de asignar al atributo una fecha concreta ya que, por defecto, esta se pone a la fecha actual.
Como se ha comentado anteriormente, los pedidos llegan al email de la cocina de la cafetería entonces ha sido necesario añadir un nuevo atributo a la misma que contenga la dirección de correo electrónico de la misma.