namespace ordini_ristorante; class Program { static void Main(string[] args) { Console.Clear(); Ristorante ristorante = new(); int scelta = -1; do { Console.WriteLine("Inserire un'opzione:"); Console.WriteLine("1. Crea piatto"); Console.WriteLine("2. Visualizza menù"); Console.WriteLine("3. Crea ordine"); Console.WriteLine("4. Annulla ordine"); Console.WriteLine("5. Paga ordine"); Console.WriteLine("6. Visualizza ordine"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); try { scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: ristorante.AggiungiPiatto(CreaPiatto()); Console.WriteLine("Piatto aggiunto con successo"); Pausa(); break; case 2: StampaMenu(ristorante); Pausa(); break; case 3: AggiungiOrdine(ristorante); Console.WriteLine("Ordine aggiunto con successo"); Pausa(); break; case 4: Pausa(); break; case 5: Pausa(); break; case 6: StampaOrdini(ristorante); Pausa(); break; default: Console.WriteLine("Opzione non valida."); Pausa(); break; } } catch (FormatException) { Console.WriteLine("Opzione non valida."); Pausa(); } } while (scelta != 0); } static void Pausa() { Console.WriteLine("Premere un tasto per continuare. . ."); Console.ReadKey(); } static Piatto CreaPiatto() { string nome; string descrizione; float prezzo = -1; Console.Write("Nome del piatto: "); nome = Console.ReadLine(); Console.Write("Descrizione del piatto: "); descrizione = Console.ReadLine(); do { try { Console.Write("Inserire il prezzo: "); prezzo = (float)Convert.ToDouble(Console.ReadLine()); if (prezzo < 0) { Console.WriteLine("Prezzo non valido."); Pausa(); } } catch (FormatException) { Console.WriteLine("Prezzo non valido."); Pausa(); } } while (prezzo < 0); return new Piatto(nome, descrizione, prezzo); } static void StampaMenu(Ristorante p_ristorante) { int i = 0; foreach (Piatto p in p_ristorante.GetMenu()) { Console.WriteLine($"Piatto {i + 1}:"); p.StampaPiatto(); Console.WriteLine(); i++; } } static void AggiungiOrdine(Ristorante p_ristorante) { int codiceOrdine; //DateTime dataOrdine; string cliente; Piatto[] piatti; int numeroPiatti = -1, scelta = -1; string stato; Console.Write("Nome del cliente: "); cliente = Console.ReadLine(); //Console.Write("Descrizione del piatto: "); //descrizione = Console.ReadLine(); do { try { Console.Write("Quanti piatti ordinare? "); numeroPiatti = Convert.ToInt32(Console.ReadLine()); if (numeroPiatti < 0) { Console.WriteLine("Numero di piatti non valido."); Pausa(); } } catch (FormatException) { Console.WriteLine("Numero di piatti non valido."); Pausa(); } } while (numeroPiatti < 0); piatti = new Piatto[numeroPiatti]; for (int i = 0; i < numeroPiatti; i++) { Console.WriteLine($"Scelta del piatto n. {i + 1}\n"); Console.WriteLine("Quale piatto scegliere?"); StampaMenu(p_ristorante); do { try { Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); if (scelta <= 0 || scelta > p_ristorante.GetMenu().Length) { Console.WriteLine("Scelta non valida."); Pausa(); } } catch (FormatException) { Console.WriteLine("Scelta non valida."); Pausa(); } } while (scelta <= 0 || scelta > p_ristorante.GetMenu().Length); piatti[i] = p_ristorante.GetMenu()[scelta - 1]; } codiceOrdine = Ordine.codiceOrdineProgressivo + 1; Ordine.codiceOrdineProgressivo = codiceOrdine; p_ristorante.AggiungiOrdine(new Ordine(codiceOrdine, DateTime.Now, cliente, piatti, "in preparazione")); } static void StampaOrdini(Ristorante p_ristorante) { int i = 0; foreach (Ordine o in p_ristorante.GetOrdini()) { Console.WriteLine($"Ordine n. {i + 1}:"); o.StampaOrdine(); Console.WriteLine(); i++; } } }