Ofertas - FactoriaF5-Asturias/project-p5-digital-academy-team2-restaurant-frontend GitHub Wiki

Ofertas — Privilegios exclusivos para clientes registrados

Vista

La vista Ofertas (/ofertas-eventos) muestra las ventajas exclusivas del restaurante, en la sección "Privilegios Exclusivos". Solo se ven con la sesión iniciada:

  • Sin sesión: aparece una invitación con dos botones, "Iniciar sesión" y "Crear cuenta".
  • Con sesión: se muestran la oferta principal, destacada arriba, y la "Selección de Temporada" con el resto de ofertas.

Responsables y tareas

Responsable: Gema Miguel

Tarea Jira Descripción Estado
GC-172 [HU-19] Ver privilegios exclusivos como cliente registrado Historia
GC-173 Crear la vista de Ofertas con el hero de la experiencia destacada Listo
GC-174 Crear la grid de tarjetas de temporada con sus badges Listo
GC-270 Conectar la vista de ofertas al back Listo
GC-276 Mostrar las ofertas exclusivas solo con sesión iniciada Listo

Capturas

Entidades involucradas

Archivo Tipo Función
src/Views/SpecialOffers/SpecialOffersView.vue Vista Comprueba la sesión y muestra la invitación o las ofertas
src/composables/useOffers.js Composable Pide las ofertas al back, les da formato y separa la principal del resto
src/composables/useAuth.js Composable Comprueba si hay sesión iniciada (del equipo)
public/offers-img/ Imágenes Fotos de las ofertas

Endpoints que consume

Método Ruta Para qué
GET /api/auth/me Comprobar si hay sesión (a través de useAuth)
GET /api/offers Todas las ofertas (solo se pide si hay sesión)

La URL base se toma de la variable VITE_API_URL del archivo .env (ver .env.example).

Cómo probarlo

  1. Arranca el back (Docker Desktop + GoxuApplication) y el front (npm run dev).
  2. Sin sesión: abre http://localhost:5173/ofertas-eventos. Debe aparecer la invitación a iniciar sesión o crear cuenta.
  3. Con sesión: inicia sesión con un usuario cliente y vuelve a la página. Deben aparecer la oferta principal y la "Selección de Temporada".

Decisiones

  • Ofertas solo para clientes registrados. Es una forma de animar a crear una cuenta. Mientras se comprueba la sesión se muestra "Comprobando tu sesión…", para que quien ya la tiene no vea un instante el aviso de "inicia sesión".
  • Las ofertas solo se piden si hay sesión. Sin sesión no se llama a /api/offers.
  • La oferta principal se elige con featured. El back devuelve todas las ofertas y useOffers las separa con dos propiedades computed: featuredOffer y seasonalOffers.
  • Adaptador entre back y front. useOffers convierte el precio en texto ("85,00 € / persona") y añade el texto del botón, sin tener que cambiar la vista.
  • Un token caducado se trata como "sin sesión". Si falla la comprobación, se muestra la invitación en lugar de un error.

Limitaciones

  • La restricción está solo en el front. En el back, GET /api/offers es público, así que quien llame directamente a la API puede ver las ofertas sin iniciar sesión.
  • El botón "RESERVA AHORA" lleva a /reservation, una vista que ya no aparece en el menú principal.