Class: SpreeCmCommissioner::TripResult
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::TripResult
- Defined in:
- lib/spree_cm_commissioner/trip_result.rb
Instance Attribute Summary collapse
-
#allow_seat_selection ⇒ Object
Returns the value of attribute allow_seat_selection.
-
#amenities ⇒ Object
Returns the value of attribute amenities.
-
#boarding ⇒ Object
Returns the value of attribute boarding.
-
#compare_at_amount ⇒ Object
Returns the value of attribute compare_at_amount.
-
#currency ⇒ Object
Returns the value of attribute currency.
-
#departure_time ⇒ Object
Returns the value of attribute departure_time.
-
#destination_place ⇒ Object
Returns the value of attribute destination_place.
-
#distance ⇒ Object
Returns the value of attribute distance.
-
#drop_off ⇒ Object
Returns the value of attribute drop_off.
-
#duration ⇒ Object
Returns the value of attribute duration.
-
#id ⇒ Object
Returns the value of attribute id.
-
#max_capacity ⇒ Object
Returns the value of attribute max_capacity.
-
#open_dated_product ⇒ Object
Returns the value of attribute open_dated_product.
-
#origin_place ⇒ Object
Returns the value of attribute origin_place.
-
#price ⇒ Object
Returns the value of attribute price.
-
#product_id ⇒ Object
Returns the value of attribute product_id.
-
#quantity_available ⇒ Object
Returns the value of attribute quantity_available.
-
#route_type ⇒ Object
Returns the value of attribute route_type.
-
#vehicle_type ⇒ Object
Returns the value of attribute vehicle_type.
-
#vehicle_type_id ⇒ Object
Returns the value of attribute vehicle_type_id.
-
#vendor ⇒ Object
Returns the value of attribute vendor.
-
#vendor_id ⇒ Object
Returns the value of attribute vendor_id.
Class Method Summary collapse
Instance Method Summary collapse
- #amenity_ids ⇒ Object
- #arrival_time ⇒ Object
-
#cache_key_with_version ⇒ Object
Enable serializer-level caching (like ActiveRecord’s cache_key_with_version) Create a version hash based on attributes that matter for caching.
- #display_price ⇒ Object
- #duration_in_hms ⇒ Object
-
#initialize(options = {}) ⇒ TripResult
constructor
A new instance of TripResult.
- #open_dated_pair_id ⇒ Object
- #total_sold ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ TripResult
Returns a new instance of TripResult.
9 10 11 12 13 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 9 def initialize( = {}) .each do |key, value| instance_variable_set("@#{key}", value) end end |
Instance Attribute Details
#allow_seat_selection ⇒ Object
Returns the value of attribute allow_seat_selection.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def allow_seat_selection @allow_seat_selection end |
#amenities ⇒ Object
Returns the value of attribute amenities.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def amenities @amenities end |
#boarding ⇒ Object
Returns the value of attribute boarding.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def boarding @boarding end |
#compare_at_amount ⇒ Object
Returns the value of attribute compare_at_amount.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def compare_at_amount @compare_at_amount end |
#currency ⇒ Object
Returns the value of attribute currency.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def currency @currency end |
#departure_time ⇒ Object
Returns the value of attribute departure_time.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def departure_time @departure_time end |
#destination_place ⇒ Object
Returns the value of attribute destination_place.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def destination_place @destination_place end |
#distance ⇒ Object
Returns the value of attribute distance.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def distance @distance end |
#drop_off ⇒ Object
Returns the value of attribute drop_off.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def drop_off @drop_off end |
#duration ⇒ Object
Returns the value of attribute duration.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def duration @duration end |
#id ⇒ Object
Returns the value of attribute id.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def id @id end |
#max_capacity ⇒ Object
Returns the value of attribute max_capacity.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def max_capacity @max_capacity end |
#open_dated_product ⇒ Object
Returns the value of attribute open_dated_product.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def open_dated_product @open_dated_product end |
#origin_place ⇒ Object
Returns the value of attribute origin_place.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def origin_place @origin_place end |
#price ⇒ Object
Returns the value of attribute price.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def price @price end |
#product_id ⇒ Object
Returns the value of attribute product_id.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def product_id @product_id end |
#quantity_available ⇒ Object
Returns the value of attribute quantity_available.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def quantity_available @quantity_available end |
#route_type ⇒ Object
Returns the value of attribute route_type.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def route_type @route_type end |
#vehicle_type ⇒ Object
Returns the value of attribute vehicle_type.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def vehicle_type @vehicle_type end |
#vehicle_type_id ⇒ Object
Returns the value of attribute vehicle_type_id.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def vehicle_type_id @vehicle_type_id end |
#vendor ⇒ Object
Returns the value of attribute vendor.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def vendor @vendor end |
#vendor_id ⇒ Object
Returns the value of attribute vendor_id.
3 4 5 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3 def vendor_id @vendor_id end |
Class Method Details
.from_trip(trip) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 15 def self.from_trip(trip) return nil if trip.nil? vehicle_type = trip&.vehicle_type vendor = trip&.vendor new( id: trip&.id, departure_time: trip&.departure_time, duration: trip&.duration, distance: trip&.distance, allow_seat_selection: trip&.allow_seat_selection, route_type: trip&.route_type, origin_place: { id: trip&.origin_place_id, name: trip&.origin_place_name }, destination_place: { id: trip&.destination_place_id, name: trip&.destination_place_name }, vehicle_type_id: trip&.vehicle_type_id, vehicle_type: vehicle_type, vendor_id: trip&.vendor_id, vendor: vendor, product_id: trip&.product_id, price: trip&.amount, currency: trip&.currency, compare_at_amount: trip&.compare_at_amount, boarding: build_boarding_info(trip), drop_off: build_drop_off_info(trip), quantity_available: trip&.quantity_available, max_capacity: trip&.max_capacity, amenities: (trip.vehicle_type&.option_values || []), open_dated_product: trip&.open_dated_product ) end |
Instance Method Details
#amenity_ids ⇒ Object
58 59 60 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 58 def amenity_ids amenities&.map(&:id) || [] end |
#arrival_time ⇒ Object
71 72 73 74 75 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 71 def arrival_time return nil if departure_time.nil? || duration.nil? departure_time + duration.seconds end |
#cache_key_with_version ⇒ Object
Enable serializer-level caching (like ActiveRecord’s cache_key_with_version) Create a version hash based on attributes that matter for caching
85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 85 def cache_key_with_version version_parts = [ id, price, quantity_available, max_capacity, departure_time&.to_i, open_dated_product&.id ].compact.join('-') version_hash = Digest::MD5.hexdigest(version_parts) "trip_results/#{id}-#{version_hash}" end |
#display_price ⇒ Object
77 78 79 80 81 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 77 def display_price return nil if price.nil? || currency.nil? Spree::Money.new(price, currency: currency).to_s end |
#duration_in_hms ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 62 def duration_in_hms return { hours: 0, minutes: 0, seconds: 0 } if duration.nil? hours = duration / 3600 minutes = (duration % 3600) / 60 seconds = duration % 60 { hours: hours, minutes: minutes, seconds: seconds } end |
#open_dated_pair_id ⇒ Object
99 100 101 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 99 def open_dated_pair_id open_dated_product&.id end |
#total_sold ⇒ Object
52 53 54 55 56 |
# File 'lib/spree_cm_commissioner/trip_result.rb', line 52 def total_sold return if max_capacity.nil? || quantity_available.nil? max_capacity - quantity_available end |