public ICollection<Flight> ImportFlightsDataFromFile(string filePath)
        {
            if (!Regex.IsMatch(filePath, FlightsXmlFilePattern))
            {
                throw new ArgumentException(string.Format(InvalidFileNameMessage, "Flights"));
            }

            ICollection<Flight> importedFlights = new HashSet<Flight>();

            using (XmlReader reader = XmlReader.Create(filePath))
            {
                while (reader.Read())
                {
                    try
                    {
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "flight")
                        {
                            int flightId = int.Parse(reader.GetAttribute("id"));
                            string flightCode = reader.GetAttribute("code").ToString();
                            DateTime flightDate = DateTime.Parse(reader.GetAttribute("dateTime"));

                            reader.ReadToDescendant("airline");
                            int airlineId = int.Parse(reader.GetAttribute("airlineId"));

                            reader.ReadToNextSibling("departureAirport");
                            int departureAirportId = int.Parse(reader.GetAttribute("departureAirportId"));

                            reader.ReadToNextSibling("arrivalAirport");
                            int arrivalAirportId = int.Parse(reader.GetAttribute("arrivalAirportId"));

                            reader.ReadToNextSibling("duration");
                            double durationHours = reader.ReadElementContentAsDouble();

                            var flight = new Flight()
                            {
                                FlightId = flightId,
                                FlightCode = flightCode,
                                AirlineId = airlineId,
                                FlightDate = flightDate,
                                DurationHours = durationHours,
                                DepartureAirportId = departureAirportId,
                                ArrivalAirportId = arrivalAirportId
                            };

                            importedFlights.Add(flight);
                        }
                    }
                    catch (FormatException)
                    { }
                }
            }

            return importedFlights;
        }
        public ICollection<Flight> ImportFlightsDataFromFile(string filePath)
        {
            if (!Regex.IsMatch(filePath, FlightsWorksheetFilePattern))
            {
                throw new ArgumentException(string.Format(InvalidFileNameMessage, "Flights"));
            }

            OleDbConnection connection = new OleDbConnection();
            connection.ConnectionString = string.Format(AirportsDbSettings.Default.ExcelReaderConnectionString, filePath);

            connection.Open();

            using (connection)
            {
                var schema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                var sheetName = schema.Rows[0]["TABLE_NAME"].ToString();

                OleDbCommand selectAllRowsCommand = new OleDbCommand("SELECT * FROM [" + sheetName + "]", connection);

                ICollection<Flight> importedFlights = new HashSet<Flight>();

                using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectAllRowsCommand))
                {
                    DataSet dataSet = new DataSet();
                    adapter.Fill(dataSet);

                    using (DataTableReader reader = dataSet.CreateDataReader())
                    {
                        while (reader.Read())
                        {
                            try
                            {
                                string flightCode = reader["FlightCode"].ToString();
                                int airlineId = int.Parse(reader["AirlineId"].ToString());
                                int departureAirportId = int.Parse(reader["DepartureAirportId"].ToString());
                                int arrivalAirportId = int.Parse(reader["ArrivalAirportId"].ToString());
                                double durationHours = double.Parse(reader["Duration"].ToString());
                                DateTime date = DateTime.Parse(reader["DateTime"].ToString(), CultureInfo.InvariantCulture);

                                var flight = new Flight()
                                {
                                    FlightCode = flightCode,
                                    AirlineId = airlineId,
                                    FlightDate = date,
                                    DurationHours = durationHours,
                                    DepartureAirportId = departureAirportId,
                                    ArrivalAirportId = arrivalAirportId
                                };

                                importedFlights.Add(flight);
                            }
                            catch (FormatException)
                            { }
                        }
                    }
                }

                return importedFlights;
            }
        }