using System.ComponentModel; namespace agenzia_viaggi; class Cliente { string nome; string cognome; string codiceFiscale; string eta; Prenotazione[] prenotazioni; public Cliente(string p_nome, string p_cognome, string p_codiceFiscale, string p_eta, int p_prenotazioni) { this.nome = p_nome; this.cognome = p_cognome; this.eta = p_eta; this.prenotazioni = new Prenotazione[p_prenotazioni]; this.codiceFiscale = p_codiceFiscale; } public string GetNome() { return this.nome; } public string GetCognome() { return this.cognome; } public string GetCodiceFiscale() { return this.codiceFiscale; } public string GetEta() { return this.eta; } public Prenotazione[] GetPrenotazioni() { return this.prenotazioni; } public void SetNome(string p_nome) { this.nome = p_nome; } public void SetCognome(string p_cognome) { this.cognome = p_cognome; } public void SetEta(string p_eta) { this.eta = p_eta; } public void SetCodiceFiscale(string p_codiceFiscale) { this.codiceFiscale = p_codiceFiscale; } public void SetPrenotazioni(Prenotazione[] p_prenotazioni) { this.prenotazioni = p_prenotazioni; } public void InserisciPrenotazione(string p_periodo, string p_giorniPrenotati, string p_numeroPersone) { bool isPrenotazioneEsistente = true; int i; //trova la prima cella disponibile for (i = 0; i < this.prenotazioni.Length && isPrenotazioneEsistente; i++) { if (this.prenotazioni[i] == null) { isPrenotazioneEsistente = false; } } this.prenotazioni[i] = isPrenotazioneEsistente ? throw new Exception("Errore: sono consentite solo 10 prenotazioni per cliente") : new Prenotazione(p_periodo, p_giorniPrenotati, p_numeroPersone, this.GetCodiceFiscale()); } public void CancellaPrenotazione(string p_UUID) { string[] UUIDs = new string[this.prenotazioni.Length]; bool exit = false; int j; for (int i = 0; i < this.prenotazioni.Length; i++) { UUIDs[i] = this.prenotazioni[i].GetUUID(); } //verifico che lo UUID esista for (j = 0; j < this.prenotazioni.Length && !exit; j++) { if (UUIDs[j] == p_UUID) { exit = true; } } this.prenotazioni[j] = exit ? null : throw new Exception("Codice prenotazione non trovato"); } public void StampaDatiCliente() { Console.WriteLine($"Nome: {this.GetNome()}"); Console.WriteLine($"Cognome: {this.GetCognome()}"); Console.WriteLine($"Età: {this.GetEta()}"); Console.WriteLine($"Codice fiscale: {this.GetCodiceFiscale()}"); Console.WriteLine($"Numero prenotazioni: {this.prenotazioni.Length}"); } public void StampaPrenotazioni() { for (int i = 0; i < this.prenotazioni.Length; i++) { if (this.prenotazioni[i] != null) { Console.WriteLine($"Prenotazione n. {i + 1}:"); this.prenotazioni[i].StampaDatiPrenotazione(); Console.WriteLine(); } } } }