Skip to content

Hito 3: API HTTP Pedidos

FcoJoseBernalPerez edited this page Jun 22, 2021 · 10 revisions

API HTTP para un backend de pedidos.

Diagrama de Clases de la API HTTP:


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 contiene las distintas estructuras que siguen los diferentes objetos que usamos 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 @Bean, para indicar que objetos va a necesitar cargar, @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:

Crear Pedido: Crea un pedido nuevo en la cafetería correspondiente, que además se añade a los distintos pedidos del usuario. Ese pedido tendrá como estado inicial abierto.

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.

Finalizar Pedido: Cambia el estado del pedido a finalizado.

Mostrar Caja del Día: Nos permite consultar las ganancias y el número de pedidos de una fecha concreta.

Programar Hora del Pedido: Se añade una hora a un pedido concreto que corresponda a la hora que desea el cliente que se realice su pedido.

Notificar a cocina: A partir de la hora que comentamos en la función anterior, se le mandará un correo a cocina con la hora del pedido.

  • 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 UserController:

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:

Debido a que en este hito hemos necesitado crear un nuevo tipo Usuario, hemos actualizado la persistencia en ficheros añadiendo a esta la posibilidad de guardar los usuarios y cargarlos de la misma forma que se explicó en el hito anterior.