Prenotazioni

di il
6 risposte

Prenotazioni

Scusate , ma non sapevo in che sezione pubblicare.
Per un progetto universitario sto gestendo il backend di un'applicazione per la prenotazione nei lidi.
Sono arrivato alla parte principale, che sarebbe quella di prenotare.
Il sistema non è molto stupido, in quanto non abbiamo messo i posti per fila e per numero(tipo posto A1 A2 B1 e così via) ma abbiamo solo definito nel nostro database
Lidi(id...numero_posti)
prenotazione (id,idlido,indurente,inizio, fine, n_posti)
Dove inizio e fine sono due date.
Per poter effettuare una prenotazione, dovrei controllare se nel periodo scelto ci siano posti sufficienti(voglio prenotare 3 posti dal 1 al 10 agosto e in tutto questo periodo di tempo devono esserci sempre tre posti disponibili).
Prima di tutto vorrei aggiungere un check al database per controllare che la somma dei posti per ogni giorno non superi il numero massimo di posti, ma non so come fare.
Poi, per effettuare la prenotazione, che avrà idLido , inizio, fine, dovrei estrarre dal database tutte le prenotazioni dove idlido è quello della mia prenotazione e la data di inizio è compresa tra inizio e fine della mia prenotazione e la data di fine è compresa tra inizio e fine della mia prenotazione.
Poi per ogni giorno da inizio a fine devo sommare tutte le prenotazioni interessate, aggiungere il numero di posti che voglio prenotare e solo se non supero il numero massimo posso effettuare la prenotazione.
C'è un modo più semplice per gestire tutto questo? Oppure va bene una cosa del genere?

6 Risposte

  • Re: Prenotazioni

    Secondo me il modo più semplice oltre che più corretto è proprio avere una tabella con i singoli posti (A1 A2 ecc) e una per le prenotazioni del tipo (id, posto, persona, inizio, fine). Dico più corretto perché immagino che si dovrebbe assegnare il turista sempre allo stesso posto per tutta la durata della prenotazione. Più semplice perché a questo punto guardi nelle prenotazioni quali posti sono prenotati in almeno un intervallo di tempo che interseca quello desiderato e li sottrai alla lista di tutti i posti, e scegli il primo dei posti rimanenti.
  • Re: Prenotazioni

    L'idea era quella dall'inizio, ma siccome ci hanno detto che il progetto era troppo grande, abbiamo fatto solamente la parte lato utente e per evitare di caricare tutto via query era più semplice mettere solamente una colonna con il numero di posti, però penso di rifare tutto e gestirla con i posti.
    Quindi a questo punto mi servirebbe estrarre tutti i posti di quel lido, estrarre i posti la cui data di inizio o data di fine si trova all'interno della mia prenotazione e sottrarli. Penso di fare cosi
  • Re: Prenotazioni

    estrarre i posti la cui data di inizio o data di fine si trova all'interno della mia prenotazione
    In questo modo non gestiresti il caso in cui la prenotazione da fare sia completamente inclusa in una prenotazione esistente (es. nel db c'è già una prenotazione dal 10 al 20 marzo e vuoi inserire una prenotazione dall'11 al 15).
  • Re: Prenotazioni

    Prendendo la mia prenotazione che ha un inizio e una fine, controllo se per ogni prenotazione data_inizio è compresa tra inizio e fine oppure data_fine è compresa tra inizio e fine...dovrei gestirle tutte.
    
    reservations = reservations.filter((reservation)=>{
            return (reservation.start_date>=startDate && reservation.start_date<=endDate) || (reservation.end_date>=startDate && 	reservation.end_date<=endDate);
        });
    
    In pratica prendo qualsiasi prenotazione la cui data di inizio o data di fine cade all'interno del periodo in cui voglio prenotare
  • Re: Prenotazioni

    No. Continui a non gestire l'esempio che ho citato prima, perché in quel caso sia l'inizio che la fine della prenotazione già presente nel db sono all'esterno dell'intervallo che vuoi prenotare.

    La tua è esattamente metà della soluzione.
  • Re: Prenotazioni

    Ah sì giusto..dovrei prendere anche le prenotazioni di cui la mia prenotazione è un sottoprodotti.. quindi mi basterebbe aggiungere il pezzo la cui data di inizio è minore della mia prenotazione e la data di fine è maggiore della mia prenotazione.
    Messo questo caso dovrei essere a posto.
    Grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte