static public bool RichiestaStanza(Prenotazione i, StanzaAlbergo s) { if (i.TipologiaRichiesta == s.Tipologia) { return(true); } else { return(false); } }
static void Main(string[] args) { // istanziazione delle due camere presenti nell'albergo StanzaAlbergo stanza1 = new StanzaAlbergo(1); StanzaAlbergo stanza2 = new StanzaAlbergo(2); //StanzaAlbergo stanza3 = new StanzaAlbergo(3); //StanzaAlbergo stanza4 = new StanzaAlbergo(4); List <StanzaAlbergo> stanze = new List <StanzaAlbergo>(); stanze.Add(stanza1); stanze.Add(stanza2); //stanze.Add(stanza3); //stanze.Add(stanza4); // istanziazione della prenotazione while (true) { string Cliente; DateTime CheckIn, CheckOut; Console.WriteLine("Inserire nome e cognome del cliente: "); Cliente = Console.ReadLine(); Console.WriteLine("Inserire la data di check-in (formato YYYY-MM-DD): "); string userInput = Console.ReadLine(); CheckIn = Convert.ToDateTime(userInput); Console.WriteLine("Inserire la data di check-out (formato YYYY-MM-DD): "); userInput = Console.ReadLine(); CheckOut = Convert.ToDateTime(userInput); Prenotazione richiesta = new Prenotazione(CheckIn, CheckOut, Cliente); bool albergoPieno = true; foreach (StanzaAlbergo stanza in stanze) { bool libera = false; if (stanza.Prenotazioni.Count == 0) { libera = true; albergoPieno = false; stanza.Prenota(richiesta); Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + "."); break; } foreach (Prenotazione prenotazione in stanza.Prenotazioni) { if (!Prenotazione.OverLap(prenotazione, richiesta)) { libera = true; albergoPieno = false; stanza.Prenota(richiesta); Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + "."); break; } } if (libera) { break; } } if (albergoPieno) { Console.WriteLine("L'albergo è pieno!"); } foreach (StanzaAlbergo stanza in stanze) { Console.WriteLine("La stanza #" + stanza.Numero + " ha " + stanza.Prenotazioni.Count + " prenotazioni."); } } }
static void Main(string[] args) { double prezzoLetto = 20; // istanziazione delle due camere presenti nell'albergo StanzaAlbergo stanza1 = new StanzaAlbergo(1, 50, 's'); StanzaAlbergo stanza2 = new StanzaAlbergo(2, 80, 'm'); StanzaAlbergo stanza3 = new StanzaAlbergo(3, 50, 's'); StanzaAlbergo stanza4 = new StanzaAlbergo(4, 80, 'm'); List <StanzaAlbergo> stanze = new List <StanzaAlbergo>(); stanze.Add(stanza1); stanze.Add(stanza2); stanze.Add(stanza3); stanze.Add(stanza4); // istanziazione della prenotazione while (true) { string Cliente; DateTime CheckIn, CheckOut; char TipologiaRichiesta; int LettiAggiuntivi = 0; Console.WriteLine("Inserire nome e cognome del cliente: "); Cliente = Console.ReadLine(); Console.WriteLine("Inserire la data di check-in (formato YYYY-MM-DD): "); string userInput = Console.ReadLine(); CheckIn = Convert.ToDateTime(userInput); Console.WriteLine("Inserire la data di check-out (formato YYYY-MM-DD): "); userInput = Console.ReadLine(); CheckOut = Convert.ToDateTime(userInput); Console.WriteLine("Inserire il tipo di stanza che si vuole prenotare ['s' per singola o 'm' per matrimoniale]"); userInput = Console.ReadLine(); TipologiaRichiesta = Convert.ToChar(userInput); if (TipologiaRichiesta != 's' && TipologiaRichiesta != 'm') { Console.WriteLine("Carattere non valido."); continue; } Prenotazione richiesta = new Prenotazione(CheckIn, CheckOut, Cliente, TipologiaRichiesta, LettiAggiuntivi); bool albergoPieno = true; foreach (StanzaAlbergo stanza in stanze) { if (!Prenotazione.RichiestaStanza(richiesta, stanza)) { continue; } bool prenotata = false; bool libera = true; if (stanza.Prenotazioni.Count == 0) { prenotata = true; albergoPieno = false; stanza.Prenota(richiesta); Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ".\n"); System.TimeSpan diff = richiesta.CheckOut - richiesta.CheckIn; int n_days = Convert.ToInt32(diff.Days); richiesta.AggiungiLetti(richiesta); double spesa = stanza.Prezzo + richiesta.LettiAggiuntivi * prezzoLetto; spesa = n_days * spesa; Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ", con " + richiesta.LettiAggiuntivi + " letti aggiuntivi. \nLa spesa totale è di " + spesa + " euro. \n"); break; } foreach (Prenotazione prenotazione in stanza.Prenotazioni) { libera = libera && !Prenotazione.OverLap(prenotazione, richiesta); if (!libera) { break; } } if (libera) { prenotata = true; albergoPieno = false; stanza.Prenota(richiesta); Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ".\n"); System.TimeSpan diff = richiesta.CheckOut - richiesta.CheckIn; int n_days = Convert.ToInt32(diff.Days); richiesta.AggiungiLetti(richiesta); double spesa = stanza.Prezzo + richiesta.LettiAggiuntivi * prezzoLetto; spesa = n_days * spesa; Console.WriteLine("La stanza #" + stanza.Numero + " è stata prenotata dal " + richiesta.CheckIn + " al " + richiesta.CheckOut + " a nome di " + richiesta.Cliente + ", con " + richiesta.LettiAggiuntivi + " letti aggiuntivi. \nLa spesa totale è di " + spesa + " euro.\n"); break; } if (prenotata) { break; } } if (albergoPieno) { Console.WriteLine("Non ci sono stanze disponibili nel periodo richiesto."); } foreach (StanzaAlbergo stanza in stanze) { Console.WriteLine("La stanza #" + stanza.Numero + " ha " + stanza.Prenotazioni.Count + " prenotazioni."); foreach (Prenotazione prenotazione in stanza.Prenotazioni) { Console.WriteLine("La stanza " + stanza.Numero + " è stata prenotata da " + prenotazione.Cliente + " dal " + prenotazione.CheckIn + " al " + prenotazione.CheckOut + "."); } } } }