diff --git a/Ordine.cs b/Ordine.cs index 19aa9b3..6e10038 100644 --- a/Ordine.cs +++ b/Ordine.cs @@ -88,11 +88,11 @@ class Ordine { return ritorno; } - public int? AnnullaOrdine() { - return null; - } - public void Pagamento() { this.stato = "pagato"; } + + public void AnnullaOrdine() { + this.stato = "annullato"; + } } \ No newline at end of file diff --git a/Program.cs b/Program.cs index 4b60a55..363987a 100644 --- a/Program.cs +++ b/Program.cs @@ -35,9 +35,13 @@ class Program { Pausa(); break; case 4: + AnnullaOrdine(ristorante); + Console.WriteLine("Ordine annullato con successo."); Pausa(); break; case 5: + PagaOrdine(ristorante); + Console.WriteLine("Ordine pagato con successo"); Pausa(); break; case 6: @@ -154,9 +158,9 @@ class Program { 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")); + 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) { @@ -168,4 +172,72 @@ class Program { i++; } } + + static void AnnullaOrdine(Ristorante p_ristorante) { + int scelta = -1; + bool exit = true; + for (int i = 0; i < p_ristorante.GetOrdini().Length; i++) { + Console.WriteLine(p_ristorante.GetOrdini()[i].GetCodiceOrdine()); + } + + do { + try { + Console.Write("Inserire il codice identificativo dell'ordine: "); + scelta = Convert.ToInt32(Console.ReadLine()); + if (p_ristorante.GetOrdini()[p_ristorante.GetOrdinePerCodice(scelta)].GetStato() != "in preparazione") { + Console.WriteLine("È possibile annullare solo ordini in preparazione."); + Console.WriteLine($"Stato corrente dell'ordine selezionato: {p_ristorante.GetOrdini()[p_ristorante.GetOrdinePerCodice(scelta)].GetStato()}"); + exit = false; + Pausa(); + } + else { + p_ristorante.GetOrdini()[p_ristorante.GetOrdinePerCodice(scelta)].AnnullaOrdine(); + exit = true; + } + } + catch (FormatException) { + Console.WriteLine("Scelta non valida."); + Pausa(); + } + catch (NullReferenceException e) { + Console.WriteLine(e.Message); + Pausa(); + } + } + while (scelta < 0 || scelta > Ordine.codiceOrdineProgressivo || !exit); + } + + static void PagaOrdine(Ristorante p_ristorante) { + int scelta = -1; + bool exit = true; + for (int i = 0; i < p_ristorante.GetOrdini().Length; i++) { + Console.WriteLine(p_ristorante.GetOrdini()[i].GetCodiceOrdine()); + } + + do { + try { + Console.Write("Inserire il codice identificativo dell'ordine: "); + scelta = Convert.ToInt32(Console.ReadLine()); + if (p_ristorante.GetOrdini()[p_ristorante.GetOrdinePerCodice(scelta)].GetStato() != "in preparazione") { + Console.WriteLine("È possibile annullare solo ordini in preparazione."); + Console.WriteLine($"Stato corrente dell'ordine selezionato: {p_ristorante.GetOrdini()[p_ristorante.GetOrdinePerCodice(scelta)].GetStato()}"); + exit = false; + Pausa(); + } + else { + p_ristorante.GetOrdini()[p_ristorante.GetOrdinePerCodice(scelta)].Pagamento(); + exit = true; + } + } + catch (FormatException) { + Console.WriteLine("Scelta non valida."); + Pausa(); + } + catch (NullReferenceException e) { + Console.WriteLine(e.Message); + Pausa(); + } + } + while (scelta < 0 || scelta > Ordine.codiceOrdineProgressivo || !exit); + } } diff --git a/Ristorante.cs b/Ristorante.cs index ba98e20..495b59e 100644 --- a/Ristorante.cs +++ b/Ristorante.cs @@ -33,11 +33,15 @@ class Ristorante { this.ordini = ordiniNuovo; } - public Ordine GetOrdinePerCodice(int p_codice) { - Ordine? ritorno = null; + public int GetOrdinePerCodice(int p_codice) { + int? ritorno = null; + int i = 0; foreach (Ordine o in this.ordini) { if (o.GetCodiceOrdine() == p_codice) { - ritorno = o; + ritorno = i; + } + else { + i++; } } return ritorno ?? throw new NullReferenceException("Ordine non trovato."); diff --git a/bin/Debug/net9.0/ordini_ristorante.dll b/bin/Debug/net9.0/ordini_ristorante.dll index 0185020..48f0a54 100644 Binary files a/bin/Debug/net9.0/ordini_ristorante.dll and b/bin/Debug/net9.0/ordini_ristorante.dll differ diff --git a/bin/Debug/net9.0/ordini_ristorante.pdb b/bin/Debug/net9.0/ordini_ristorante.pdb index 7eee551..ba3ce9f 100644 Binary files a/bin/Debug/net9.0/ordini_ristorante.pdb and b/bin/Debug/net9.0/ordini_ristorante.pdb differ diff --git a/obj/Debug/net9.0/ordini_ristorante.AssemblyInfo.cs b/obj/Debug/net9.0/ordini_ristorante.AssemblyInfo.cs index 50be3a9..09f5be3 100644 --- a/obj/Debug/net9.0/ordini_ristorante.AssemblyInfo.cs +++ b/obj/Debug/net9.0/ordini_ristorante.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("ordini_ristorante")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+25c50a4b8db64c7bfdd25dcd5bd90241e4fd379e")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a275e915843af2c05a1cebecfa40f24f9324cc74")] [assembly: System.Reflection.AssemblyProductAttribute("ordini_ristorante")] [assembly: System.Reflection.AssemblyTitleAttribute("ordini_ristorante")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net9.0/ordini_ristorante.AssemblyInfoInputs.cache b/obj/Debug/net9.0/ordini_ristorante.AssemblyInfoInputs.cache index aa4beba..39a9d8a 100644 --- a/obj/Debug/net9.0/ordini_ristorante.AssemblyInfoInputs.cache +++ b/obj/Debug/net9.0/ordini_ristorante.AssemblyInfoInputs.cache @@ -1 +1 @@ -82f99463d9b826968c42534a6e053a460cb627c649a33dbc0b18ed1aba9e9c0e +b3a63bd86fc6fad1ffe10f51f798240b88be0bc8e79cda50983e1c878f1df28b diff --git a/obj/Debug/net9.0/ordini_ristorante.dll b/obj/Debug/net9.0/ordini_ristorante.dll index 0185020..48f0a54 100644 Binary files a/obj/Debug/net9.0/ordini_ristorante.dll and b/obj/Debug/net9.0/ordini_ristorante.dll differ diff --git a/obj/Debug/net9.0/ordini_ristorante.pdb b/obj/Debug/net9.0/ordini_ristorante.pdb index 7eee551..ba3ce9f 100644 Binary files a/obj/Debug/net9.0/ordini_ristorante.pdb and b/obj/Debug/net9.0/ordini_ristorante.pdb differ diff --git a/obj/Debug/net9.0/ref/ordini_ristorante.dll b/obj/Debug/net9.0/ref/ordini_ristorante.dll index 54d835b..be0e2dc 100644 Binary files a/obj/Debug/net9.0/ref/ordini_ristorante.dll and b/obj/Debug/net9.0/ref/ordini_ristorante.dll differ diff --git a/obj/Debug/net9.0/refint/ordini_ristorante.dll b/obj/Debug/net9.0/refint/ordini_ristorante.dll index 54d835b..be0e2dc 100644 Binary files a/obj/Debug/net9.0/refint/ordini_ristorante.dll and b/obj/Debug/net9.0/refint/ordini_ristorante.dll differ