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
- #quantity_available ⇒ Object
- #total_duration ⇒ Object
- #total_duration_in_hms ⇒ 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
52 53 54 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 52 def arrival_time @trips.last.arrival_time end |
#departure_time ⇒ Object
48 49 50 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 48 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 |
#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
34 35 36 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 34 def total_duration @trips.map(&:duration).compact.sum end |
#total_duration_in_hms ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 38 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_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
60 61 62 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 60 def vehicle_types @trips.map(&:vehicle).map(&:vehicle_type).uniq end |
#vendors ⇒ Object
56 57 58 |
# File 'lib/spree_cm_commissioner/trip_query_result.rb', line 56 def vendors @trips.map(&:vendor).uniq end |