Class: SpreeCmCommissioner::TripQueryResult
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::TripQueryResult
- Defined in:
- lib/spree_cm_commissioner/trip_query_result.rb
Instance Attribute Summary collapse
-
#connection_id ⇒ Object
readonly
Returns the value of attribute connection_id.
-
#trips ⇒ Object
readonly
Returns the value of attribute trips.
Instance Method Summary collapse
- #arrival_time ⇒ Object
- #departure_time ⇒ Object
- #direct? ⇒ Boolean
- #id ⇒ Object
-
#initialize(trips, connection_id: nil) ⇒ TripQueryResult
constructor
A new instance of TripQueryResult.
- #max_capacity ⇒ Object
- #open_dated_product ⇒ Object
- #quantity_available ⇒ Object
- #total_duration ⇒ Object
- #total_duration_in_hms ⇒ Object
- #total_open_return_price ⇒ Object
- #total_price ⇒ Object
- #trip_ids ⇒ Object
- #vehicle_types ⇒ Object
- #vendors ⇒ Object
Constructor Details
#initialize(trips, connection_id: nil) ⇒ TripQueryResult
Returns a new instance of TripQueryResult.
5 6 7 8 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 5 def initialize(trips, connection_id: nil) @trips = Array(trips) @connection_id = connection_id end |
Instance Attribute Details
#connection_id ⇒ Object (readonly)
Returns the value of attribute connection_id.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 3 def connection_id @connection_id end |
#trips ⇒ Object (readonly)
Returns the value of attribute trips.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 3 def trips @trips end |
Instance Method Details
#arrival_time ⇒ Object
57 58 59 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 57 def arrival_time @trips.last.arrival_time end |
#departure_time ⇒ Object
53 54 55 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 53 def departure_time @trips.first.departure_time end |
#direct? ⇒ Boolean
18 19 20 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 18 def direct? @trips.size == 1 end |
#id ⇒ Object
10 11 12 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 10 def id @trips.map(&:id).join('-') end |
#max_capacity ⇒ Object
26 27 28 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 26 def max_capacity @trips.map(&:max_capacity).compact.min end |
#open_dated_product ⇒ Object
69 70 71 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 69 def open_dated_product @trips.first&.open_dated_product end |
#quantity_available ⇒ Object
22 23 24 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 22 def quantity_available @trips.map(&:quantity_available).compact.min end |
#total_duration ⇒ Object
39 40 41 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 39 def total_duration @trips.map(&:duration).compact.sum end |
#total_duration_in_hms ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 43 def total_duration_in_hms total_seconds = total_duration || 0 return { hours: 0, minutes: 0, seconds: 0 } if total_seconds.nil? || total_seconds <= 0 hours = total_seconds / 3600 minutes = (total_seconds % 3600) / 60 seconds = total_seconds % 60 { hours: hours, minutes: minutes, seconds: seconds } end |
#total_open_return_price ⇒ Object
34 35 36 37 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 34 def total_open_return_price open_return_price = open_dated_product&.variants&.first&.price.to_d total_price + open_return_price end |
#total_price ⇒ Object
30 31 32 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 30 def total_price @trips.map(&:price).compact.sum end |
#trip_ids ⇒ Object
14 15 16 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 14 def trip_ids @trips.map(&:id) end |
#vehicle_types ⇒ Object
65 66 67 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 65 def vehicle_types @trips.map(&:vehicle_type).uniq end |
#vendors ⇒ Object
61 62 63 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 61 def vendors @trips.map(&:vendor).uniq end |