527 messaggi dal 18 dicembre 2012
Ciao a tutti
sto realizzando un piccolo portale per la prenotazione di camere di hotel.
Ho dubbi su come gestire alcune situazioni:
dopo aver selezionato le camere, prima di passare al pagamento con paypal, salvo la prenotazione e decremento il numero di camere disponibili per la tipologia di camera scelta. Se durante il pagamento con paypal si verifica un errore del tipo connessione che cade, chiusura della pagina, devo rendere disponibili le camere. Come fare questo?
PayPal ha una funzione che in automatico dopo tot minuti controlla se l'operazione è andata a buon fine e in caso contrario richiama una pagina del mio portale(avete un esempio di codice?)? Una soluzione a cui ho pensato è quella di creare un'applicazione che gira sul server e controlla se ci sono prenotazioni non completare, ma c'è un piccolo problema, non credo di poter accere al server e gestire i servizi. Altra soluzione è lanciare una procedura ogni volta che qualcuno accede al portale o al pannello di controllo, ma non mi piace molto.
Ho pensato di decrementare le camere disponibili dopo la conferma di pagamento, ma se poi le camere non sono più disponibili? Non posso bloccare le camere perchè ad ogni tipologia è associata un tot di camere.
Grazie mille
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Svipla ha scritto:
Ho pensato di decrementare le camere disponibili dopo la conferma di pagamento, ma se poi le camere non sono più disponibili?

Questo è un cosiddetto code smell, ovvero un sintomo di un difetto di progettazione.

Nulla di drammatico. Capita spesso, durante lo sviluppo, di dover apportare delle correzioni perché si è acquisita una conoscenza più profonda del proprio modello di business.

Quello che ti serve, secondo me, è che ciascuna di queste camere abbia una propria identità.

Svipla ha scritto:

il numero di camere disponibili per la tipologia di camera scelta

Anziché conservare il numero di camere disponibili su un unico campo, dovresti crearti un'altra tabella chiamata Camere - magari relazionata alle Tipologie - in cui inserisci tanti record quante sono le camere dell'albergo. Se ha 10 camere, creerai 10 record. Questo permette a ciascuna camera di funzionare indipendentemente dalle altre.
Nel caso in cui venga prenotata, puoi aggiungere un record ad una tabella Prenotazioni, la cui chiave primaria sarà composta dall'ID della camera e dal giorno. Su ogni prenotazione avrai un campo data/ora che ne indica la scadenza. Finché il pagamento non viene perfezionato, questa data/ora terrà temporaneamente bloccata la camera.

ciao,
Moreno
Modificato da BrightSoul il 22 luglio 2014 22.13 -

Enjoy learning and just keep making
527 messaggi dal 18 dicembre 2012
Ciao Moreno
ma in questo modo non avrei un sacco di record?
Esempio: Camera Standard, ho 10 camere di questa tipologia e inserisco tariffe per 30 giorni. Avrei 300 record solo per una tipologia di camera e per tariffe x solo un mese.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Svipla ha scritto:

ma in questo modo non avrei un sacco di record?

No, se continui ad assegnare i prezzi alle tipilogie o, meglio se li definisci come regole che vengono valutate a runtime. Ad esempio, un utente sta visitando il sito e vuol vedere il prezzo di una doppia. Il prezzo viene calcolato eseguendo le regole indicate dal proprietario dell'albergo.
  • Se camera doppia, imposta il prezzo base a 50 euro
  • Se è domenica, aumenta il prezzo base del 10%
  • Se è il giorno della fiera, aumenta il prezzo base del 20%
  • Se sta prenotando con più di 30 giorni di anticipo, sconta il prezzo di 20 euro
  • Se è l'ultima doppia rimasta, aumenta il prezzo di 10 euro

...e così via. In questo modo il prezzo può variare in base ad una serie di situazioni, e il proprietario dell'albergo non dovrà costantemente reinserire i prezzi a mano.

Comunque, mi rendo conto che questo comporterebbe una serie di modifiche. Dunque faccio un passo indietro perché non ti voglio far stravolgere l'applicazione. Alla fine va bene anche come stavi facendo, cioè avere delle tipologie di camere che possiedono una quantità e un prezzo fisso.

Perdona la digressione, torniamo alla domanda vera e propria.

Svipla ha scritto:

salvo la prenotazione e decremento il numero di camere disponibili per la tipologia di camera scelta

Non lo decrementare, invece potresti conteggiare quante prenotazioni sono state fatte in quel giorno. Se sono state fatte tante prenotazioni quanti erano i posti disponibili, allora saprai che non puoi accettare ulteriori prenotazioni.
Nel calcolo, conteggia solo le prenotazioni la cui data di validità è superiore alla data/ora attuale. Questo ti consente di far scadere automaticamente una prenotazione non pagata. Infatti, ogni volta che un utente prenota, puoi impostare una data/ora di validità nel futuro di tot minuti/ore. Questo sarà il tempo concesso all'utente per pagare la sua prenotazione. Se viene pagata, correggi la data/ora di validità impostandola ancor più nel futuro (magari alla data successiva a quella del soggiorno). Se non viene pagata, la data/ora resta com'era prima e presto verrà raggiunta. Quando la data/ora cade nel passato, verrà esclusa dal conteggio.

ciao,
Moreno
Modificato da BrightSoul il 25 luglio 2014 22.25 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.