La Programmatrice Verde b609104b18 Opzioni 4 e 5
2025-05-29 13:12:47 +02:00

98 lines
2.6 KiB
C#

namespace ordini_ristorante;
class Ordine {
public static int codiceOrdineProgressivo = -1;
int codiceOrdine;
DateTime dataOrdine;
string cliente;
Piatto[] piatti;
string stato;
public Ordine(int p_codiceOrdine, DateTime p_dataOrdine, string p_cliente, Piatto[] p_piatti, string p_stato) {
this.codiceOrdine = p_codiceOrdine;
this.dataOrdine = p_dataOrdine;
this.cliente = p_cliente;
this.piatti = p_piatti;
this.stato = p_stato;
}
public int GetCodiceOrdine() {
return this.codiceOrdine;
}
public DateTime GetDataOrdine() {
return this.dataOrdine;
}
public string GetCliente() {
return this.cliente;
}
public Piatto[] GetPiatti() {
return this.piatti;
}
public string GetStato() {
return this.stato;
}
public void SetCodiceOrdine(int p_codiceOrdine) {
this.codiceOrdine = p_codiceOrdine;
}
public void SetDataOrdine(DateTime p_dataOrdine) {
this.dataOrdine = p_dataOrdine;
}
public void SetCliente(string p_cliente) {
this.cliente = p_cliente;
}
public void SetPiatti(Piatto[] p_piatti) {
this.piatti = p_piatti;
}
public void SetStato(string p_stato) {
this.stato = p_stato != "in preparazione" || p_stato != "pagato" || p_stato != "annullato"
? throw new FormatException("Stato non valido")
: p_stato;
}
public void StampaOrdine() {
int i = 0;
Console.WriteLine($"\tCodice ordine: {this.GetCodiceOrdine()}");
Console.WriteLine($"\tData ordine: {this.GetDataOrdine()}");
Console.WriteLine($"\tCliente a cui l'ordine è intestato: {this.GetCliente()}");
Console.WriteLine($"\tPiatti ordinati:");
foreach (Piatto piatto in this.piatti) {
Console.WriteLine($"\tPiatto {i + 1}:");
piatto.StampaPiatto();
Console.WriteLine();
i++;
}
Console.WriteLine($"\tStato dell'ordine: {this.GetStato()}");
}
public void AggiungiPiatto(Piatto p_nuovoPiatto) {
Piatto[] piattiNuovo = new Piatto[this.piatti.Length + 1];
this.piatti.CopyTo(piattiNuovo, 0);
piattiNuovo[this.piatti.Length + 1] = p_nuovoPiatto;
this.piatti = piattiNuovo;
}
public float TotaleOrdine() {
float ritorno = 0;
foreach (Piatto piatto in piatti) {
ritorno += piatto.GetPrezzo();
}
return ritorno;
}
public void Pagamento() {
this.stato = "pagato";
}
public void AnnullaOrdine() {
this.stato = "annullato";
}
}