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; }
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; } }
/// <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; }