-
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 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.
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.
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.
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.