Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mutación — Aceptar Regalo #31

Open
fforres opened this issue Aug 5, 2023 · 1 comment
Open

Mutación — Aceptar Regalo #31

fforres opened this issue Aug 5, 2023 · 1 comment
Labels
Backend mutation Mutation Request

Comments

@fforres
Copy link
Member

fforres commented Aug 5, 2023

Un usuario puede regalar un userTicket a otro usuario.
Para asignarlo a un usuario nuevo tiene que ser aceptado por el usuario nuevo.

Cuando un userTicket se regala a otro usuario, el userTicket queda en estado "pendiente de aceptación".

Cuando el userTicket se acepta, se cambia el usuario asignado al userTicket por el usuario que aceptó el regalo.

PS: userTicket no puede ser redimido hasta que la invitación sea aceptada, rechazada, o retirada.

Permisos:

Solo el receptor del regalo puede aceptarlo

@fforres fforres added the mutation Mutation Request label Aug 5, 2023
@Pillin Pillin added the Backend label Aug 5, 2023
@fforres
Copy link
Member Author

fforres commented Oct 3, 2023

Idem acá #30 (comment)

TextC0de added a commit that referenced this issue Oct 15, 2024
Este PR implementa la funcionalidad de regalo de tickets (relacionado a
#30, #31) y además incorpora optimizaciones de rendimiento propuestas en
el PR #273.

Se incluyen los siguientes cambios principales:

1. Nuevas tablas y relaciones:
- `user_ticket_gifts`: Almacena información sobre los regalos de
tickets.
   - Actualización de `user_tickets` con nuevos estados y relaciones.

2. Endpoints GraphQL:
- Mutación `giftMyTicketToUser`: Permite a un usuario regalar su ticket.
- Mutación `acceptGiftedTicket`: Permite al receptor aceptar un ticket
regalado.
- Query `myTicketGifts`: Obtiene los regalos de tickets enviados o
recibidos por el usuario actual.

3. Lógica de negocio:
- Implementación de validaciones para evitar auto-regalos y exceder
límites de tickets.
- Manejo de estados de regalo (pendiente, aceptado, rechazado,
cancelado, expirado).
   - Cálculo de fechas de expiración para regalos.

4. Servicio de correo electrónico (solo para 9punto5, luego hay que
extenderlo):
- Nuevas plantillas de correo para notificaciones de regalo de tickets.
- Implementación de métodos para enviar correos de confirmación de
regalo y aceptación.

5. Actualizaciones en flujos existentes:
- Modificación de `claimUserTicket` para manejar regalos de tickets
durante la compra.

6. Pruebas:
   - Nuevos tests para cubrir los escenarios de regalo de tickets.

## Optimizaciones de rendimiento (del PR #273):

Dado que estamos añadiendo más complejidad a la mutación `claim`, se han
incorporado las optimizaciones propuestas en el PR #273. Estas incluyen:

- Eliminación de verificaciones redundantes.
- Paralelización de operaciones usando `Promise.all`.
- Optimización de consultas a la base de datos, reemplazando múltiples
consultas individuales por consultas en lote más eficientes.

Estas optimizaciones, aunque no cruciales, son relevantes para mantener
el rendimiento de la mutación `claim` a medida que se añade nueva
funcionalidad.

Cualquier feedback o sugerencia para mejorar la implementación es
bienvenido.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Backend mutation Mutation Request
Projects
Status: No status
Development

No branches or pull requests

2 participants