Class: SabreDevStudio::Flight::Shop::StreamlinedItineraries
- Inherits:
-
Object
- Object
- SabreDevStudio::Flight::Shop::StreamlinedItineraries
- Defined in:
- lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb
Instance Attribute Summary collapse
-
#airline_codes ⇒ Object
readonly
Returns the value of attribute airline_codes.
-
#flights ⇒ Object
readonly
Returns the value of attribute flights.
-
#max_outbound_duration ⇒ Object
readonly
Returns the value of attribute max_outbound_duration.
-
#max_price ⇒ Object
readonly
Returns the value of attribute max_price.
-
#min_outbound_duration ⇒ Object
readonly
Returns the value of attribute min_outbound_duration.
-
#min_price ⇒ Object
readonly
Returns the value of attribute min_price.
-
#outbounds ⇒ Object
readonly
Returns the value of attribute outbounds.
Instance Method Summary collapse
-
#initialize(itineraries) ⇒ StreamlinedItineraries
constructor
A new instance of StreamlinedItineraries.
- #set_duration(duration) ⇒ Object
- #set_price(fare) ⇒ Object
Constructor Details
#initialize(itineraries) ⇒ StreamlinedItineraries
Returns a new instance of StreamlinedItineraries.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 30 def initialize(itineraries) @flights = [] @outbounds = [] @min_price = @max_price = nil @min_outbound_duration = @max_outbound_duration = nil outbound_flights = Hash.new outbound_flight = nil itineraries.each do |itin| segments = itin['AirItinerary']['OriginDestinationOptions']['OriginDestinationOption'] amount = itin['AirItineraryPricingInfo']['ItinTotalFare']['TotalFare']['Amount'].to_f segments.each_with_index.each do |segment, idx| direction = idx % 2 == 0 ? 'outbound' : 'inbound' flight = Flight.new(segment['FlightSegment'], direction, segment['ElapsedTime']) @flights << flight.to_hash set_price(amount) if flight.direction == 'outbound' set_duration(flight.duration) outbound_flight = flight outbound_flights[outbound_flight.sha] ||= OutboundFlight.new(flight, amount) else outbound_flights[outbound_flight.sha].add_inbound_flight(flight, amount) end if segment['FlightSegment'].is_a?(Array) segment['FlightSegment'].each_with_index do |flight_segment, idx| # next if idx > 0 connection = Flight.new(flight_segment, 'connecting', segment['ElapsedTime']) next if connection.sha == flight.sha @flights << connection.to_hash flight.add_connecting_flight(connection) end end end end @airline_codes = @flights.map { |f| f[:airlines] }.flatten.uniq.sort @flights.uniq! @outbounds = outbound_flights.values.map(&:to_hash) end |
Instance Attribute Details
#airline_codes ⇒ Object (readonly)
Returns the value of attribute airline_codes.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def airline_codes @airline_codes end |
#flights ⇒ Object (readonly)
Returns the value of attribute flights.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def flights @flights end |
#max_outbound_duration ⇒ Object (readonly)
Returns the value of attribute max_outbound_duration.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def max_outbound_duration @max_outbound_duration end |
#max_price ⇒ Object (readonly)
Returns the value of attribute max_price.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def max_price @max_price end |
#min_outbound_duration ⇒ Object (readonly)
Returns the value of attribute min_outbound_duration.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def min_outbound_duration @min_outbound_duration end |
#min_price ⇒ Object (readonly)
Returns the value of attribute min_price.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def min_price @min_price end |
#outbounds ⇒ Object (readonly)
Returns the value of attribute outbounds.
27 28 29 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 27 def outbounds @outbounds end |
Instance Method Details
#set_duration(duration) ⇒ Object
76 77 78 79 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 76 def set_duration(duration) @min_outbound_duration = duration if @min_outbound_duration.nil? || duration < @min_outbound_duration @max_outbound_duration = duration if @max_outbound_duration.nil? || duration > @max_outbound_duration end |
#set_price(fare) ⇒ Object
72 73 74 75 |
# File 'lib/sabre_dev_studio-flight/shop/streamlined_itineraries.rb', line 72 def set_price(fare) @min_price = fare if @min_price.nil? || fare < @min_price @max_price = fare if @max_price.nil? || fare > @max_price end |