Sto cercando di costruire un sistema di biglietteria per film. Ma non sono in grado di capire come risolvere il seguente caso d'uso:
-
Diciamo che ci sono 10 posti cioè S1, S2, S3, S4 ... S10.
-
Ora diciamo che Utente1 ha effettuato l'accesso al sistema e ha selezionato i posti S1 e S2.
-
Entrambi questi posti devono essere automaticamente bloccati per un intervallo di tempo di 15 minuti; in modo che l'Utente1 possa effettuare il pagamento entro questo tempo e confermare i posti.
-
Nel frattempo se un altro utente2 accede al sistema, i posti S1 e S2 devono essere visualizzati come bloccati.
-
I posti saranno sbloccati solo se si verifica il timeout di 15 minuti (o) L'Utente1 interrompe volontariamente il processo di prenotazione.
Qualche idea su come raggiungere questo obiettivo? Possiamo bloccare e sbloccare in modo asincrono evitando il ricaricamento della pagina?
Ho già cercato soluzioni e ho trovato questa domanda correlata: Come gestisco il potenziale problema di concorrenza di effettuare un pagamento a Paypal per un numero limitato di articoli?
Ma non mi ha aiutato. Sono sicuro di dover prendere l'oggetto dallo scaffale per qualche tempo. Ma tecnicamente come realizzarlo? devo aggiornare il database per rendere quel posto come bloccato? se l'ho fatto, come sbloccarlo in caso di fallimento o se l'utente abbandona il sistema? Come aggiornare l'interfaccia utente in modo asincrono?