Beispiel #1
0
        public override ItineraryRequest PrepareRequest()
        {
            ItineraryBuilder builder = new ItineraryBuilder();

            builder.AddRoutingService("TriathlonResults", "RecordResult");
            builder.AddRequestResponseService();
            ItineraryRequest request = new ItineraryRequest();

            request.Header = builder.GetItinerary();
            request.Body   = this.GetRequestBody();
            return(request);
        }
Beispiel #2
0
        public async Task PlanItinerary(FutureConsumeContext <OrderBurger> context, ItineraryBuilder builder)
        {
            var orderBurger = context.Message;

            builder.AddVariable(nameof(OrderBurger.OrderId), orderBurger.OrderId);
            builder.AddVariable(nameof(OrderBurger.OrderLineId), orderBurger.OrderLineId);

            var burger = orderBurger.Burger;

            builder.AddActivity(nameof(GrillBurgerActivity), _grillAddress, new
            {
                burger.Weight,
                burger.Cheese,
            });

            Guid?onionRingId = default;

            if (burger.OnionRing)
            {
                onionRingId = NewId.NextGuid();

                // TODO create a future with address/id
                await context.Publish <OrderOnionRings>(new
                {
                    orderBurger.OrderId,
                    OrderLineId = onionRingId,
                    Quantity    = 1
                });
            }

            builder.AddActivity(nameof(DressBurgerActivity), _dressAddress, new
            {
                burger.Lettuce,
                burger.Pickle,
                burger.Onion,
                burger.Ketchup,
                burger.Mustard,
                burger.BarbecueSauce,
                burger.OnionRing,
                onionRingId
            });
        }
        public ActionResult GetFlightData(long id, int flightID, string ailreline, string flightNumber, string fromDate, ItineraryBuilder.Models.ClassTypes flightClass, string opportunityId, string flightRequestID, int passengers, bool? isDelete, string rowID)
        {
            string message = string.Empty;
            bool isInsert = false;
            DateTime? dd = null;
            ViewData["RowID"] = rowID;
            if (!string.IsNullOrEmpty(fromDate))
            {
                try
                {
                    dd = Convert.ToDateTime(fromDate);
                }
                catch
                {
                    message = "Incorrect From Date";
                }
            }
            if (string.IsNullOrEmpty(message))
            {
                List<ItinerarySearch> list = new List<ItinerarySearch>();
                if (!string.IsNullOrEmpty(fromDate))
                    dd = Convert.ToDateTime(fromDate);
                list.Add(new ItinerarySearch { Id = id, FlightID = flightID, AirlineCode = ailreline, FlightNumber = flightNumber, From = dd, FromDate = fromDate, Class = flightClass });

                if (string.IsNullOrEmpty(opportunityId))
                    opportunityId = "006d0000005nU0DAAU";
                if (string.IsNullOrEmpty(flightRequestID))
                    flightRequestID = "a00d0000003pSE2AAM";

                ViewData["opportunityId"] = opportunityId;
                ViewData["flightRequestID"] = flightRequestID;
                SchedulesConnectionsService.Login lgn = new SchedulesConnectionsService.Login();
                lgn.UserId = System.Configuration.ConfigurationManager.AppSettings["username"];
                lgn.Password = System.Configuration.ConfigurationManager.AppSettings["password"];
                lgn.AccountId = System.Configuration.ConfigurationManager.AppSettings["accountid"];
                if (isDelete.GetValueOrDefault())
                {
                    _dbRepository.DeleteItinerarySearch(id);
                }
                else
                {
                    if (list != null)
                    {
                        foreach (var item in list)
                        {
                            var model = _dbRepository.GetFlightStat(opportunityId, flightRequestID, item.AirlineCode, item.FlightNumber, item.From.GetValueOrDefault());

                            if (model == null || model.Count == 0)
                            {
                                if (!string.IsNullOrEmpty(item.AirlineCode) && !string.IsNullOrEmpty(item.FlightNumber) && item.From != null)
                                {
                                    #region Get Data from History if available
                                    List<FlightStatHistory> listFSH = _dbRepository.GetFlightStatHistory(item.AirlineCode, item.FlightNumber, item.From.GetValueOrDefault());
                                    if (listFSH != null && listFSH.Count > 0)
                                    {
                                        #region Insert Serach Parameters to have available next time
                                        ItinerarySearch its = new ItinerarySearch();
                                        if (item.Id == 0)
                                            isInsert = true;
                                        its.Id = item.Id;
                                        its.FlightID = item.FlightID;
                                        its.OpportunityId = opportunityId;
                                        its.FlightRequestID = flightRequestID;
                                        its.AirlineCode = item.AirlineCode;
                                        its.FlightNumber = item.FlightNumber;
                                        its.From = item.From;
                                        its.FromDate = item.FromDate;
                                        its.Class = item.Class;
                                        _dbRepository.SaveItinerarySearch(its);
                                        ViewData["Id"] = its.Id;
                                        #endregion
                                        int j = 1;
                                        foreach (FlightStatHistory fsh in listFSH)
                                        {
                                            #region Insert FlightStat to have available next time
                                            if (!isInsert)
                                            {
                                                _dbRepository.DeleteFlightStatByItinerarySearchID(its.Id);
                                                isInsert = true;
                                            }
                                            FlightStat fs = new FlightStat();
                                            fs.ItinerarySearchID = its.Id;
                                            fs.ArrivalDateAdjustment = fsh.ArrivalDateAdjustment;

                                            fs.DepartureDateFrom = fsh.DepartureDateFrom;
                                            fs.DepartureDateTo = fsh.DepartureDateTo;

                                            fs.DepartureTime = fsh.DepartureTime;
                                            fs.ArrivalTime = fsh.ArrivalTime;

                                            fs.FlightDurationMinutes = fsh.FlightDurationMinutes;
                                            fs.DistanceMiles = fsh.DistanceMiles;

                                            fs.FlightNumber = fsh.FlightNumber;
                                            fs.CarrierName = fsh.CarrierName;
                                            fs.CarrierAirlineCode = fsh.CarrierAirlineCode;

                                            fs.DepartureAirportName = fsh.DepartureAirportName;
                                            fs.DepartureAirportCode = fsh.DepartureAirportCode;
                                            fs.DepartureAirportFAACode = fsh.DepartureAirportFAACode;
                                            fs.DepartureAirportCity = fsh.DepartureAirportCity;
                                            fs.DepartureAirportStateCode = fsh.DepartureAirportStateCode;
                                            fs.DepartureAirportCountryCode = fsh.DepartureAirportCountryCode;

                                            fs.ArrivalAirportName = fsh.ArrivalAirportName;
                                            fs.ArrivalAirportCode = fsh.ArrivalAirportCode;
                                            fs.ArrivalAirportFAACode = fsh.ArrivalAirportFAACode;
                                            fs.ArrivalAirportCity = fsh.ArrivalAirportCity;
                                            fs.ArrivalAirportStateCode = fsh.ArrivalAirportStateCode;
                                            fs.ArrivalAirportCountryCode = fsh.ArrivalAirportCountryCode;

                                            fs.AircraftTypeName = fsh.AircraftTypeName;
                                            fs.AircraftTypeCode = fsh.AircraftTypeCode;

                                            fs.WideBody = fsh.WideBody;
                                            fs.Jet = fsh.Jet;
                                            fs.DepartureDaysOfWeek = fsh.DepartureDaysOfWeek;

                                            fs.Seat = fsh.Seat;

                                            _dbRepository.SaveFlightStat(fs);
                                            j += 1;
                                            #endregion
                                        }
                                    }
                                    #endregion
                                    #region Get XML Response from Flight Stat
                                    else
                                    {
                                        string url = @"http://www.pathfinder-xml.com/development/xml?Service=SchedulesConnectionsService"
                                                      + "&login.accountID=" + lgn.AccountId + "&login.userID=" + lgn.UserId + "&login.password="******"&carriers[0].airlineCode=" + item.AirlineCode + "&flightNumber=" + item.FlightNumber
                                                      + "&from=" + item.From.GetValueOrDefault().ToString("yyyy-MM-ddT00:00") + "&serviceType=PASSENGER_ONLY&flightType=NON_STOP";
                                        string result = string.Empty;
                                        WebRequest req = null;
                                        WebResponse rsp = null;
                                        try
                                        {
                                            req = WebRequest.Create(url);
                                            req.Method = "POST";
                                            req.ContentType = "text/xml";
                                            req.Timeout = 100000000;

                                            StreamWriter writer = new StreamWriter(req.GetRequestStream());
                                            writer.WriteLine(url);
                                            writer.Close();
                                            // Send the data to the webserver
                                            rsp = req.GetResponse();

                                            Stream st = rsp.GetResponseStream();
                                            StreamReader str = new StreamReader(st);

                                            result = str.ReadToEnd();
                                            XmlDocument xdoc = new XmlDocument();
                                            xdoc.LoadXml(result);
                                            xdoc.Save(Server.MapPath("/XMls" + "myfilename.xml"));

                                            XmlSerializer xs = new XmlSerializer(typeof(SchedulesConnectionsResponse));

                                            TextReader textReader = new StreamReader(Server.MapPath("/XMls" + "myfilename.xml"));

                                            SchedulesConnectionsResponse obj = (SchedulesConnectionsResponse)xs.Deserialize(textReader);
                                            textReader.Close();
                                            System.IO.File.Delete(Server.MapPath("/XMls" + "myfilename.xml"));

                                            if (obj.Items != null)
                                            {
                                                #region Insert Serach Parameters to have available next time
                                                ItinerarySearch its = new ItinerarySearch();
                                                if (item.Id == 0)
                                                    isInsert = true;
                                                its.Id = item.Id;
                                                its.FlightID = item.FlightID;
                                                its.OpportunityId = opportunityId;
                                                its.FlightRequestID = flightRequestID;
                                                its.AirlineCode = item.AirlineCode;
                                                its.FlightNumber = item.FlightNumber;
                                                its.From = item.From;
                                                its.FromDate = item.FromDate;
                                                its.Class = item.Class;
                                                _dbRepository.SaveItinerarySearch(its);
                                                ViewData["Id"] = its.Id;
                                                #endregion
                                                int j = 1;
                                                int day = 0;
                                                foreach (SchedulesConnectionsResponseFlight item1 in obj.Items)
                                                {
                                                    foreach (var fl in item1.FlightLeg)
                                                    {
                                                        foreach (var fi in fl.FlightId)
                                                        {
                                                            #region Insert FlightStat to have available next time
                                                            if (!isInsert)
                                                            {
                                                                _dbRepository.DeleteFlightStatByItinerarySearchID(its.Id);
                                                                isInsert = true;
                                                            }
                                                            FlightStat fs = new FlightStat();
                                                            fs.ItinerarySearchID = its.Id;

                                                            fs.ArrivalDateAdjustment = (Convert.ToInt32(item1.ArrivalDateAdjustment) + day).ToString();
                                                            day = Convert.ToInt32(item1.ArrivalDateAdjustment);

                                                            if (!string.IsNullOrEmpty(item1.DepartureDateFrom))
                                                            {
                                                                fs.DepartureDateFrom = Convert.ToDateTime(item1.DepartureDateFrom);
                                                            }
                                                            if (!string.IsNullOrEmpty(item1.DepartureDateTo))
                                                            {
                                                                fs.DepartureDateTo = Convert.ToDateTime(item1.DepartureDateTo);
                                                            }

                                                            fs.DepartureTime = item1.DepartureTime;
                                                            fs.ArrivalTime = item1.ArrivalTime;

                                                            fs.FlightDurationMinutes = item1.FlightDurationMinutes;
                                                            fs.DistanceMiles = item1.DistanceMiles;

                                                            fs.FlightNumber = fi.FlightNumber;
                                                            fs.CarrierName = fi.Carrier[0].Name;
                                                            fs.CarrierAirlineCode = fi.Carrier[0].AirlineCode;

                                                            fs.DepartureAirportName = fl.DepartureAirport[0].Name;
                                                            fs.DepartureAirportCode = fl.DepartureAirport[0].AirportCode;
                                                            fs.DepartureAirportFAACode = fl.DepartureAirport[0].FAACode;
                                                            fs.DepartureAirportCity = fl.DepartureAirport[0].City;
                                                            fs.DepartureAirportStateCode = fl.DepartureAirport[0].StateCode;
                                                            fs.DepartureAirportCountryCode = fl.DepartureAirport[0].CountryCode;

                                                            fs.ArrivalAirportName = fl.ArrivalAirport[0].Name;
                                                            fs.ArrivalAirportCode = fl.ArrivalAirport[0].AirportCode;
                                                            fs.ArrivalAirportFAACode = fl.ArrivalAirport[0].FAACode;
                                                            fs.ArrivalAirportCity = fl.ArrivalAirport[0].City;
                                                            fs.ArrivalAirportStateCode = fl.ArrivalAirport[0].StateCode;
                                                            fs.ArrivalAirportCountryCode = fl.ArrivalAirport[0].CountryCode;

                                                            fs.AircraftTypeName = fl.Equipment[0].AircraftTypeName;
                                                            fs.AircraftTypeCode = fl.Equipment[0].AircraftTypeCode;

                                                            fs.WideBody = fl.Equipment[0].WideBody;
                                                            fs.Jet = fl.Equipment[0].Jet;
                                                            fs.DepartureDaysOfWeek = item1.DepartureDaysOfWeek;

                                                            fs.Seat = RandomNumber(passengers, passengers + 2);

                                                            _dbRepository.SaveFlightStat(fs);
                                                            #endregion

                                                            #region Save Flight Stat result in History table to get it next time
                                                            FlightStatHistory fsh = new FlightStatHistory();

                                                            if (!string.IsNullOrEmpty(item1.DepartureDateFrom))
                                                            {
                                                                fsh.DepartureDateFrom = Convert.ToDateTime(item1.DepartureDateFrom);
                                                            }
                                                            if (!string.IsNullOrEmpty(item1.DepartureDateTo))
                                                            {
                                                                fsh.DepartureDateTo = Convert.ToDateTime(item1.DepartureDateTo);
                                                            }

                                                            fsh.ArrivalDateAdjustment = fs.ArrivalDateAdjustment;

                                                            fsh.DepartureTime = item1.DepartureTime;
                                                            fsh.ArrivalTime = item1.ArrivalTime;

                                                            fsh.FlightDurationMinutes = item1.FlightDurationMinutes;
                                                            fsh.DistanceMiles = item1.DistanceMiles;

                                                            fsh.FlightNumber = fi.FlightNumber;
                                                            fsh.CarrierName = fi.Carrier[0].Name;
                                                            fsh.CarrierAirlineCode = fi.Carrier[0].AirlineCode;

                                                            fsh.DepartureAirportName = fl.DepartureAirport[0].Name;
                                                            fsh.DepartureAirportCode = fl.DepartureAirport[0].AirportCode;
                                                            fsh.DepartureAirportFAACode = fl.DepartureAirport[0].FAACode;
                                                            fsh.DepartureAirportCity = fl.DepartureAirport[0].City;
                                                            fsh.DepartureAirportStateCode = fl.DepartureAirport[0].StateCode;
                                                            fsh.DepartureAirportCountryCode = fl.DepartureAirport[0].CountryCode;

                                                            fsh.ArrivalAirportName = fl.ArrivalAirport[0].Name;
                                                            fsh.ArrivalAirportCode = fl.ArrivalAirport[0].AirportCode;
                                                            fsh.ArrivalAirportFAACode = fl.ArrivalAirport[0].FAACode;
                                                            fsh.ArrivalAirportCity = fl.ArrivalAirport[0].City;
                                                            fsh.ArrivalAirportStateCode = fl.ArrivalAirport[0].StateCode;
                                                            fsh.ArrivalAirportCountryCode = fl.ArrivalAirport[0].CountryCode;

                                                            fsh.AircraftTypeName = fl.Equipment[0].AircraftTypeName;
                                                            fsh.AircraftTypeCode = fl.Equipment[0].AircraftTypeCode;

                                                            fsh.From = item.From;

                                                            fsh.WideBody = fl.Equipment[0].WideBody;
                                                            fsh.Jet = fl.Equipment[0].Jet;
                                                            fsh.DepartureDaysOfWeek = item1.DepartureDaysOfWeek;

                                                            fsh.Seat = fs.Seat;

                                                            _dbRepository.SaveFlightStatHiostory(fsh);
                                                            j += 1;
                                                            #endregion
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                message = "No data found!";
                                            }
                                        }
                                        catch (WebException webEx)
                                        {
                                            result = "Error: " + webEx.Message + " Stack Trace: " + webEx.StackTrace;
                                        }
                                        catch (Exception ex)
                                        {
                                            result = "Error: " + ex.Message + " Stack Trace: " + ex.StackTrace;
                                        }
                                    }
                                    #endregion
                                }
                            }
                            else
                            {
                                ItinerarySearch its = new ItinerarySearch();
                                its.Id = item.Id;

                                its.FlightID = item.FlightID;
                                its.OpportunityId = opportunityId;
                                its.FlightRequestID = flightRequestID;
                                its.AirlineCode = item.AirlineCode;
                                its.FlightNumber = item.FlightNumber;
                                its.From = item.From;
                                its.FromDate = item.FromDate;
                                its.Class = item.Class;
                                if (item.Id == 0)
                                {
                                    message = "Duplicate Record!";
                                }
                                else
                                {
                                    _dbRepository.SaveItinerarySearch(its);
                                }
                            }
                        }
                    }
                }
            }
            ViewData["isInsert"] = isInsert;
            ViewData["Message"] = message;
            return View("UcItineraryBuilder", _dbRepository.GetFlightData(opportunityId, flightRequestID));
        }