private List<Component> GetFlightDetailList(List<Component> flightList)
    {
        SubAirTrip subAirTrip = new SubAirTrip();

        List<Component> flightDetailList = new List<Component>();

        List<Component> selectContactFlightList = new List<Component>();
        List<Component> availableFlightList = new List<Component>();

        //����flightList,�����еĺ�����Ϣ��ӳ�һ��list
        for (int flightIndex = 0; flightIndex < flightList.Count; flightIndex++)
        {
            AirMerchandise flight = (AirMerchandise)flightList[flightIndex];

            //for(int flightItemindex=0; index < flight.Items.Count; index++)
            //{
            //    AirMaterial tempairMaterial = (AirMaterial)flight.Items[flightItemindex];
            //    AirMaterial airMaterial = (AirMaterial)flight.Items[flightItemindex];

            //    for(int subairtripIndex = 0; subairtripIndex<(airMaterial.AirTrip.SubTrips.Count; subairtripIndex++)
            //    {
            //        SubAirTrip subAirTrip = ((AirMaterial)flight.Items[flightItemindex]).AirTrip.SubTrips[subairtripIndex];
            //        tempairMaterial = airMaterial.
            //    }
            //}

            if (flight.Items != null)
            {
                for (int mIndex = 0; mIndex < flight.Items.Count; mIndex++)
                {
                    ((AirMaterial)flight.Items[mIndex]).Profile = flight.Profile;
                    ((AirMaterial)flight.Items[mIndex]).Profile.SetParam(Key_FlightMerchandisIndex, flightIndex);
                }

                flightDetailList.AddRange(flight.Items);

                availableFlightList.AddRange(flight.Items);
            }

            else
            {
                AirMaterial airMaterial = new AirMaterial((AirProfile)flight.Profile);
                CopyMarkup(flight, airMaterial);

                airMaterial.Profile.SetParam(Key_FlightMerchandisIndex, flightIndex);

                flight.Add(airMaterial);
                flightDetailList.AddRange(flight.Items);

                selectContactFlightList.AddRange(flight.Items);
            }
        }

        //����AvailableFlightList
        AvailableFlightList = availableFlightList;

        //����SelectContactFlightList
        SelectContactFlightList = selectContactFlightList;

        return flightDetailList;
    }
    private void CreateFlightDetailList()
    {
        AirMerchandise componentGroup = FlightMerchandise;

        List<Component> flightList = GteReBindContactAgentList(componentGroup.Items);

        SubAirTrip subAirTrip = new SubAirTrip();

        List<Component> flightDetailList = new List<Component>();

        List<Component> selectContactFlightList = new List<Component>();
        List<Component> availableFlightList = new List<Component>();

        //����flightList,�����еĺ�����Ϣ��ӳ�һ��list
        for (int flightIndex = 0; flightIndex < flightList.Count; flightIndex++)
        {
            AirMerchandise flight = (AirMerchandise)flightList[flightIndex];

            //for(int flightItemindex=0; index < flight.Items.Count; index++)
            //{
            //    AirMaterial tempairMaterial = (AirMaterial)flight.Items[flightItemindex];
            //    AirMaterial airMaterial = (AirMaterial)flight.Items[flightItemindex];

            //    for(int subairtripIndex = 0; subairtripIndex<(airMaterial.AirTrip.SubTrips.Count; subairtripIndex++)
            //    {
            //        SubAirTrip subAirTrip = ((AirMaterial)flight.Items[flightItemindex]).AirTrip.SubTrips[subairtripIndex];
            //        tempairMaterial = airMaterial.
            //    }
            //}

            if (flight.Items != null)
            {

                for (int mIndex = 0; mIndex < flight.Items.Count; mIndex++)
                {
                    AirMaterial currentFlight = ((AirMaterial)flight.Items[mIndex]);

                    currentFlight.Profile = flight.Profile;
                    currentFlight.Profile.SetParam(Key_FlightMerchandisIndex, flightIndex);

                    if (IsFlightAvailable(currentFlight))
                    {
                        availableFlightList.Add(currentFlight);
                    }
                    else
                    {
                        selectContactFlightList.Add(currentFlight);
                    }

                    flightDetailList.Add(currentFlight);
                }

                //flightDetailList.AddRange(flight.Items);

                //availableFlightList.AddRange(flight.Items);
            }

            else
            {
                AirMaterial airMaterial = new AirMaterial((AirProfile)flight.Profile);
                CopyMarkup(flight, airMaterial);

                airMaterial.Profile.SetParam(Key_FlightMerchandisIndex, flightIndex);

                //flight.Add(airMaterial);
                flightDetailList.Add(airMaterial);

                selectContactFlightList.Add(airMaterial);
            }
        }

        //����AvailableFlightList
        availableFlightList = new AirLineMatricsManager().GetSortedByPriceFlightList(availableFlightList);
        TotalAvailableFlightList = availableFlightList;
        AvailableFlightList = availableFlightList;

        //����SelectContactFlightList
        TotalSelectContactFlightList = selectContactFlightList;
        SelectContactFlightList = selectContactFlightList;

        TotalFlightList = flightDetailList;
    }
Esempio n. 3
0
    public int GetStopsInsideFlight(SubAirTrip currentSubAirTrip)
    {
        int stops = 0;

        stops = currentSubAirTrip.Flights.Count - 1;

        for (int flightIndex = 0; flightIndex < currentSubAirTrip.Flights.Count; flightIndex++)
        {
            stops += int.Parse(currentSubAirTrip.Flights[flightIndex].NumberOfStops);
        }

        return stops;
    }
    protected bool GetFlights(string pnr)
    {
        string errMsg = string.Empty;
        DpwPNR dpwPNR = new DpwPNR();
        bool isMatchAirline = false;
        bool isMatchDeparture = false;
        bool isMatchBeginDate = false;
        bool isMatchEndDate = false;
        string originalAirline = ((TourOrderItem)Transaction.CurrentTransactionObject.Items[0]).AirLine;
        string originalDeparture = ((TourOrderItem)Transaction.CurrentTransactionObject.Items[0]).DepartureCity;
        //string originalDestination= ((TourOrderItem)Transaction.CurrentTransactionObject.Items[0]).;
        DateTime originalBeginDate = ((TourOrderItem)Transaction.CurrentTransactionObject.Items[0]).BeginDate;
        DateTime originalEndDate = ((TourOrderItem)Transaction.CurrentTransactionObject.Items[0]).EndDate;
        if (pnr.Equals(string.Empty))
        {
            errMsg = "Please Input PNR";

        }
        else if (pnr.Length != 6)
        {
            errMsg = "Please Input Correct PNR";

        }
        else
        {
            dpwPNR = m_airService.GetPnrData(pnr, out errMsg);

        }
        if (errMsg.Equals(string.Empty))
        {
            DpwFlightList flights = dpwPNR.Flights;

            AirMaterial airMaterial = new AirMaterial(new TERMS.Core.Profiles.Profile("air"));
            //int[] divideNumber =

            Hashtable timeSpan = new Hashtable();
            List<AirLeg> airLegList = m_AirLegList;
            bool isOneWay = false;

            if (flights.Count > 0)
            {
                if (!flights[0].DepartureAirport.Equals(flights[flights.Count - 1].ArrivalAirport))
                    isOneWay = true;
            }

            for (int i = 0; i < flights.Count; i++)
            {
                if (flights[i].Airline.Contains(originalAirline))
                    isMatchAirline = true;
                AirLeg air = new AirLeg();
                air.AirLine = new Airline(flights[i].Airline);
                air.ArriveTime = flights[i].ArrivalDateTime;
                air.BookingClass = flights[i].BookingClass;
                Airport deptAirport = new Airport();
                City deptCity = new City();

                Terms.Common.Domain.Airport airport = m_airService.CommAirportDao.FindByAirport(flights[i].DepartureAirport);
                deptCity.Code = airport.City.Code;
                deptCity.Name = airport.City.Name;
                deptAirport.City = deptCity;
                deptAirport.Name = airport.Name;
                deptAirport.Code = airport.Code;
                air.DepartureAirport = deptAirport;
                air.DepartureTime = flights[i].DepartureDateTime;

                if (i == 0)
                {
                    if (deptCity.Code.Contains(originalDeparture))
                        isMatchDeparture = true;
                    if (air.DepartureTime.ToString("MM/dd/yyyy").Equals(originalBeginDate.ToString("MM/dd/yyyy")))
                        isMatchBeginDate = true;
                }

                Airport destAirport = new Airport();
                City destCity = new City();

                Terms.Common.Domain.Airport airtport2 = m_airService.CommAirportDao.FindByAirport(flights[i].ArrivalAirport);
                destCity.Code = airtport2.City.Code;
                destCity.Name = airtport2.City.Name;
                destAirport.City = destCity;
                destAirport.Name = airtport2.Name;
                destAirport.Code = airtport2.Code;
                air.DestinationAirport = destAirport;
                air.FlightNumber = flights[i].FlightNumber;

                if (i > 0)
                {
                    timeSpan.Add(i.ToString() + "-" + (i + 1).ToString(), flights[i].DepartureDateTime.Subtract(flights[i - 1].ArrivalDateTime));

                }

                airLegList.Add(air);
                //SubAirTrip subAirTrip = new SubAirTrip();
                //subAirTrip.
            }

            if (isOneWay)
            {
                SubAirTrip deptSubAirTrip = new SubAirTrip();
                for (int j = 0; j < airLegList.Count; j++)
                {
                    deptSubAirTrip.AddLeg(airLegList[j]);
                }
                airMaterial.AddSubTrip(deptSubAirTrip);
            }
            else
            {
                TimeSpan bigSpan = new TimeSpan();
                string bigSpanKey = string.Empty;
                foreach (string key in timeSpan.Keys)
                {
                    if (bigSpan.CompareTo(timeSpan[key]) < 0)
                    {
                        bigSpan = (TimeSpan)timeSpan[key];
                        bigSpanKey = key;
                    }
                }

                string[] flightNumber = bigSpanKey.Split('-');

                if (flightNumber.Length == 2)
                {
                    SubAirTrip deptSubAirTrip = new SubAirTrip();
                    SubAirTrip retnSubAirTrip = new SubAirTrip();

                    for (int j = 0; j < airLegList.Count; j++)
                    {
                        if (j <= (Convert.ToInt32(flightNumber[0]) - 1))
                            deptSubAirTrip.AddLeg(airLegList[j]);
                        else
                            retnSubAirTrip.AddLeg(airLegList[j]);

                    }

                    airMaterial.AddSubTrip(deptSubAirTrip);
                    airMaterial.AddSubTrip(retnSubAirTrip);
                    if (retnSubAirTrip.Flights[0].DepartureTime.ToString("MM/dd/yyyy").Equals(originalEndDate.ToString("MM/dd/yyyy")))
                        isMatchEndDate = true;
                }
            }

            m_NewAirOrderItem = new AirOrderItem(airMaterial);

            //Fare
            int fareLength = dpwPNR.FareInfo.Fares.Count;
            for (int fareCount = 0; fareCount < fareLength; fareCount++)
            {
                DpwFare fare = dpwPNR.FareInfo.Fares[fareCount];

                switch (fare.PTC)
                {
                    case GTTWSpanClient.PassengerType.Adult:
                        m_NewAirOrderItem.Merchandise.SetAdultBaseFare(fare.BaseFare);
                        m_NewAirOrderItem.Merchandise.SetAdultTax(fare.Tax);
                        break;
                    case GTTWSpanClient.PassengerType.Child:
                        m_NewAirOrderItem.Merchandise.SetChildBaseFare(fare.BaseFare);
                        m_NewAirOrderItem.Merchandise.SetChildTax(fare.Tax);
                        break;
                    case GTTWSpanClient.PassengerType.Infant:
                        break;
                    default:
                        break;
                }
            }
            m_NewAirOrderItem.WSpanRecordLocator = dpwPNR.RecordLoactor;

            Transaction.CurrentTransactionObject.Items.Add(m_NewAirOrderItem);

            int adultNumber = GetPassengers(dpwPNR.Passengers)[0];
            int childNumber = GetPassengers(dpwPNR.Passengers)[1];

            //TourPriceInfoControl1.Tax = m_NewAirOrderItem.Merchandise.AdultTax * adultNumber + m_NewAirOrderItem.Merchandise.ChildTax * childNumber;
            //TourPriceInfoControl1.ShowTotalPrice = GetNetPrice();// +TourPriceInfoControl1.Tax;
            if (Transaction.CurrentTransactionObject.Items[0].AdultNumber != adultNumber || Transaction.CurrentTransactionObject.Items[0].ChildNumber != childNumber)
            {
                lblError.Text = "PNR��s passenger number is not equal order��s traveler number.";
                return false;
            }
            else
            {
                if (!isMatchAirline)
                {
                    lblError.Text = "Warning: Not default airlines price may be different.";

                    lblError.Style.Add("color", "blue");
                }
                else if (!isMatchDeparture)
                {
                    lblError.Text = "Warning: Not default departure city/destination. Be careful.";
                    lblError.Style.Add("color", "blue");
                }
                else if (!isMatchBeginDate || !isMatchEndDate)
                {
                    lblError.Text = "Warning: Not default departure/return date. Be careful.";
                    lblError.Style.Add("color", "blue");
                }
                else
                {
                    lblError.Style.Add("color", "red");
                }
                return true;
            }

        }
        else
        {
            lblError.Text = errMsg;
            return false;
        }
    }
Esempio n. 5
0
    /// <summary>
    /// ȡ��SubTrip��ʱ�����
    /// </summary>
    /// <param name="airMaterial">SubTrip��Ϣ</param>
    /// <returns>��SubTrip��ʱ����</returns>
    public TimeSpan GetFlightTime(SubAirTrip subTrip)
    {
        TimeSpan duration = TimeSpan.Zero;

        for (int airLegIndex = 0; airLegIndex < subTrip.Flights.Count; airLegIndex++)
        {
            duration += GetFlightTime(subTrip.Flights[airLegIndex]);
        }

        return duration;
    }