示例#1
0
 public void TestMethodGetStatus()
 {
     ItineraryModel model = new ItineraryModel
     {
         AirlineCode       = "9w",
         FlightNo          = "312",
         DepartureDateTime = DateTime.Now,
         FromCity          = "DEL",
         ToCity            = "BOM"
     };
     FlightStatsDataSource stats = new FlightStatsDataSource();
     var a = stats.GetStatus(model);
 }
        public void objTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                _objTimer.Enabled = false;
                FlightDataSource dataSource = new FlightDataSource();
                dataSource.GetItineraryData(_itineraryModels);
                RemoveStaleItinerary(_itineraryModels);

                var itineraryModelsGroupedByFlight = _itineraryModels.Where(i => i.IsProcessed == false)
                                                     .GroupBy(i => i.AirlineCode + i.FlightNo + i.DepartureDateTime.ToString("t") + i.FromCity + i.ToCity);
                foreach (var itineraries in itineraryModelsGroupedByFlight)
                {
                    ItineraryModel model = itineraries.FirstOrDefault();
                    if (model == null)
                    {
                        continue;
                    }
                    try
                    {
                        var itineraryFlightStatus = FlightStatusData.GetItineraryFlightStatus(model);
                        if (itineraryFlightStatus != null && (new[] { "S", "C" }).Any(i => i == itineraryFlightStatus.FlightStatus.ToUpper()))
                        {
                            DateTime triggerDateTime
                                = itineraryFlightStatus.DepartureGateDelayMin < AllowedDelayMin
                                    ? itineraryFlightStatus.DepartureDate.AddMinutes(-MinMinute)
                                    : DateTime.Now;

                            foreach (ItineraryModel itineraryModel in itineraries)
                            {
                                string key = itineraryModel.BookingID + "-" + itineraryModel.AirlineCode +
                                             itineraryModel.FlightNo + "-" + itineraryModel.PNR + "-" +
                                             itineraryModel.DepartureDateTime.ToString("t");

                                ItineraryQueue queue = Mapper.Map <ItineraryQueue>(itineraryModel);
                                queue.IsTriggered      = false;
                                queue.PickTime         = triggerDateTime;
                                queue.Status           = itineraryFlightStatus.FlightStatus;
                                queue.ExpectedDateTime = itineraryFlightStatus.EstimatedGateDeparture == DateTime.MinValue
                                                        ? itineraryFlightStatus.ScheduledGateDeparture : itineraryFlightStatus.EstimatedGateDeparture;
                                _itineraryQueues.TryAdd(key, queue);
                                itineraryModel.IsProcessed = true;
                            }
                        }
                        else
                        {
                            SendGeneralTicket(itineraries, itineraryFlightStatus);
                        }
                    }
                    catch (Exception exception)
                    {
                        SendGeneralTicket(itineraries, exception);
                    }
                }
                StartThreadsForQueue(_itineraryQueues);
            }
            catch (Exception exception)
            {
                ErrorLog.WriteErrorLog(exception, "", WindowsServiceName);
            }
            finally
            {
                _objTimer.Enabled = true;
                HeartBeatLoggerClass logger = new HeartBeatLoggerClass();
                logger.Log(WindowsServiceName);
            }
        }