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
- Arranca el back (Docker Desktop +
GoxuApplication) y el front (npm run dev). - Sin sesión: abre
http://localhost:5173/ofertas-eventos. Debe aparecer la invitación a iniciar sesión o crear cuenta. - 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 yuseOfferslas separa con dos propiedadescomputed:featuredOfferyseasonalOffers. - Adaptador entre back y front.
useOffersconvierte 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/offerses 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.