Opzioni 4 e 5

This commit is contained in:
La Programmatrice Verde 2025-05-29 13:12:47 +02:00
parent a275e91584
commit b609104b18
11 changed files with 88 additions and 12 deletions

View File

@ -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";
}
}

View File

@ -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);
}
}

View File

@ -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.");

View File

@ -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")]

View File

@ -1 +1 @@
82f99463d9b826968c42534a6e053a460cb627c649a33dbc0b18ed1aba9e9c0e
b3a63bd86fc6fad1ffe10f51f798240b88be0bc8e79cda50983e1c878f1df28b