예제 #1
0
        /// <summary>
        /// Method that save received data in tables of database
        /// </summary>
        /// <param name="dep_time">departure time</param>
        /// <param name="arr_time">arrival time</param>
        /// <param name="rDepTime">return departure time</param>
        /// <param name="rArrTime">return arrival time</param>
        /// <param name="cost">price of flight</param>
        /// <param name="airline">airline company that provide the flight</param>
        /// <param name="siteName">the name of website</param>
        /// <param name="leg">index of investigated route</param>
        private void SaveDataInDatabase(string dep_time, string arr_time, string rDepTime, string rArrTime, string cost, List <string> airline, string siteName, int leg)
        {
            Roundtrip    roundtrip = new Roundtrip();
            SearchResult result    = new SearchResult();

            Database.Database database = new Database.Database(_controller.Config.DatabaseRemote, _controller.Config.DatabaseUser, _controller.Config.DatabasePassword, _controller.Config.DatabaseName, (uint)_controller.Config.DatabasePort);

            if (_controller.ArrivalDate != null)
            {
                roundtrip.ArrDate         = DateTime.Parse($"{_controller.ArrivalDate:d}");
                roundtrip.DepTime         = DateTime.Parse(rArrTime);
                roundtrip.ArrTime         = DateTime.Parse(rDepTime);
                roundtrip.DepDate         = roundtrip.ArrTime > roundtrip.DepTime ? roundtrip.ArrDate : roundtrip.ArrDate.AddDays(1);
                roundtrip.Departure       = _controller.FlightLegs[leg].Arrival;
                roundtrip.Arrival         = _controller.FlightLegs[leg].Departure;
                roundtrip.ServiceClass    = 2;
                roundtrip.ValidateCarrier = database.GetAirlineCode(airline[0]);
            }
            result.SearchTime      = DateTime.Now;
            result.DepDate         = DateTime.Parse($"{_controller.DepartureDate:d}");
            result.DepTime         = DateTime.Parse(dep_time);
            result.ArrTime         = DateTime.Parse(arr_time);
            result.ArrDate         = result.ArrTime < result.DepTime ? result.DepDate.AddDays(1) : result.DepDate;
            result.Price           = decimal.Parse(cost);
            result.ValidateCarrier = database.GetAirlineCode(airline[0]);
            result.ServiceClass    = 2;
            result.Type1           = 3;
            result.Url             = siteName;
            result.Departure       = _controller.FlightLegs[leg].Departure;
            result.Arrival         = _controller.FlightLegs[leg].Arrival;
            if (roundtrip.ValidateCarrier == null)
            {
                roundtrip.ValidateCarrier = result.ValidateCarrier;
            }
            if (roundtrip.ArrTime != null)
            {
                int rid = database.RoundtripIsExistsInDatabase(roundtrip);
                if (rid != 0)
                {
                    result.Rtrip       = 1;
                    result.RoundtripId = rid;
                }
                else
                {
                    rid                = database.InsertRoundtripsToDatabase(roundtrip);
                    result.Rtrip       = 1;
                    result.RoundtripId = rid;
                }
            }
            if (database.SearchResultsIsExistsInDatabase(result) == 0)
            {
                var n = database.InsertSearchResultsToDatabase(result);
            }
        }