Skip to content

Hito 3: API HTTP Pedidos

FcoJoseBernalPerez edited this page Jun 4, 2021 · 10 revisions

API HTTP para un backend de pedidos.

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.

  • Clase ApiHttpAplication:

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.

  • Clase OrderController:

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.

  • Clase ProductController:

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.

  • Clase ProductController:

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.


Notificación por Email:

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.


Actualización del Core API:

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:

  • Creación de la Clase Usuario:

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.

  • Modificación de la Clase de Implementación de Pedido:

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.

  • Modificación de la Clase Cafetería:

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.


Actualización de la Persistencia en Ficheros:

Clone this wiki locally