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($"Codice ordine: {this.GetCodiceOrdine()}"); Console.WriteLine($"Data ordine: {this.GetDataOrdine()}"); Console.WriteLine($"Cliente a cui l'ordine รจ intestato: {this.GetCliente()}"); Console.WriteLine($"Piatti ordinati:"); foreach (Piatto piatto in this.piatti) { Console.WriteLine($"Piatto {i + 1}:"); piatto.StampaPiatto(); Console.WriteLine(); i++; } Console.WriteLine($"Stato 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 int? AnnullaOrdine() { return null; } public void Pagamento() { this.stato = "pagato"; } }