/// <summary>
 /// Record a visit to the airport on the specified date
 /// </summary>
 /// <param name="dt">The date of the visit</param>
 private void VisitAirport(DateTime dt, int idFlight)
 {
     if (EarliestVisitDate.CompareTo(dt) > 0)
     {
         EarliestVisitDate    = dt;
         FlightIDOfFirstVisit = idFlight;
     }
     if (LatestVisitDate.CompareTo(dt) < 0)
     {
         LatestVisitDate = dt;
     }
     NumberOfVisits++;
 }
        public override int GetHashCode()
        {
            unchecked
            {
                var hashCode = 1930749431;
                hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Code);

                hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(FacilityName);

                hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Aliases);

                hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(AllCodes);

                hashCode = hashCode * -1521134295 + EarliestVisitDate.GetHashCode();
                hashCode = hashCode * -1521134295 + LatestVisitDate.GetHashCode();
                hashCode = hashCode * -1521134295 + NumberOfVisits.GetHashCode();
                hashCode = hashCode * -1521134295 + FlightIDOfFirstVisit.GetHashCode();
                return(hashCode);
            }
        }
        /// <summary>
        /// Merge with another visited airport.  E.g., Maui can be OGG (IATA) or PHOG (ICAO).  If you've visited both, then this creates a single record with an alias.        ///
        /// </summary>
        /// <param name="va">The visited airport with which to merge</param>
        private void MergeWith(VisitedAirport va)
        {
            if (va == null)
            {
                throw new ArgumentNullException(nameof(va));
            }
            if (EarliestVisitDate.CompareTo(va.EarliestVisitDate) > 0)
            {
                EarliestVisitDate    = va.EarliestVisitDate;
                FlightIDOfFirstVisit = va.FlightIDOfFirstVisit;
            }
            if (LatestVisitDate.CompareTo(va.LatestVisitDate) < 0)
            {
                LatestVisitDate = va.LatestVisitDate;
            }
            NumberOfVisits += va.NumberOfVisits;

            if (va.Airport != null)
            {
                AddAlias(va.Code);
            }
        }