using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Pr3_CompagniaAerea { class Volo { #region Proprietà private string codiceVolo; public string CodiceVolo { get { return codiceVolo; } set { codiceVolo = value.ToUpper(); } } public string AreoportoPartenza { get; private set; } public string AreoportoArrivo { get; private set; } public DateTime Partenza { get; private set; } private DateTime arrivo; public DateTime Arrivo { get { return arrivo; } set { if (value > Partenza) arrivo = value; else arrivo = DateTime.MaxValue; } } private int posti; public int Posti { get { return posti; } set { if (value < 300) posti = value; else posti = 300; } } private int postiPrenotati; public int PostiPrenotati { get { return postiPrenotati; } set { if (value < Posti) postiPrenotati = value; else postiPrenotati = Posti; } } private double prezzo; public double Prezzo { get { return prezzo; } private set { if (value > 0) prezzo = value; else prezzo = 1; } } #endregion #region Costruttori public Volo(string codice, string areoportoPartenza, string areoportoArrivo, string partenza, string arrivo, int posti, int postiPrenotati, double prezzo) { CodiceVolo = codice; AreoportoPartenza = areoportoPartenza; AreoportoArrivo = areoportoArrivo; DateTime oraPartenza; if (DateTime.TryParse(partenza, out oraPartenza)) Partenza = oraPartenza; else Partenza = DateTime.Now; DateTime oraArrivo; if (DateTime.TryParse(arrivo, out oraArrivo)) Arrivo = oraArrivo; else Arrivo = DateTime.Now; Posti = posti; PostiPrenotati = postiPrenotati; Prezzo = prezzo; } public Volo(string codice, string areoportoPartenza, string areoportoArrivo, DateTime partenza, DateTime arrivo, int posti, int postiPrenotati, double prezzo) { CodiceVolo = codice; AreoportoPartenza = areoportoPartenza; AreoportoArrivo = areoportoArrivo; Partenza = partenza; Arrivo = arrivo; Posti = posti; PostiPrenotati = postiPrenotati; Prezzo = prezzo; } #endregion #region Metodi public int PostiLiberi() { return Posti - PostiPrenotati; } public double PrezzoDaPagare() { double prezzo = Prezzo; int giorniRimanenti = (Partenza - DateTime.Now).Days; if (giorniRimanenti > 60) { prezzo -= (prezzo / 100) * 70; return prezzo; } if (giorniRimanenti > 30) { prezzo -= (prezzo / 100) * 40; return prezzo; } if (giorniRimanenti > 15) { prezzo -= (prezzo / 100) * 20; return prezzo; } return prezzo; } public string Info() { return String.Format("Volo Nr: {0}\nNumero posti: {1}\nNumero posti liberi: {2}\nPartenza: {3} {4}\nArrivo: {5} {6}\nPrezzo pieno: {7} Euro.\nPrezzo odierno: {8} Euro.", CodiceVolo, Posti, PostiLiberi(), AreoportoPartenza, Partenza, AreoportoArrivo, Arrivo, Prezzo, PrezzoDaPagare()); } #endregion } }