Class: SpreeCmCommissioner::TripResult

Inherits:
Object
  • Object
show all
Defined in:
lib/spree_cm_commissioner/trip_result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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(options = {})
  options.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end

Instance Attribute Details

#allow_seat_selectionObject

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

#amenitiesObject

Returns the value of attribute amenities.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def amenities
  @amenities
end

#boardingObject

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_amountObject

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

#currencyObject

Returns the value of attribute currency.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def currency
  @currency
end

#departure_timeObject

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_placeObject

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

#distanceObject

Returns the value of attribute distance.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def distance
  @distance
end

#drop_offObject

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

#durationObject

Returns the value of attribute duration.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def duration
  @duration
end

#idObject

Returns the value of attribute id.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def id
  @id
end

#max_capacityObject

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

#origin_placeObject

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

#priceObject

Returns the value of attribute price.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def price
  @price
end

#product_idObject

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_availableObject

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_typeObject

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

#vehicleObject

Returns the value of attribute vehicle.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def vehicle
  @vehicle
end

#vehicle_idObject

Returns the value of attribute vehicle_id.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def vehicle_id
  @vehicle_id
end

#vendorObject

Returns the value of attribute vendor.



3
4
5
# File 'lib/spree_cm_commissioner/trip_result.rb', line 3

def vendor
  @vendor
end

#vendor_idObject

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

Instance Method Details

#amenity_idsObject



21
22
23
# File 'lib/spree_cm_commissioner/trip_result.rb', line 21

def amenity_ids
  amenities&.map(&:id) || []
end

#arrival_timeObject



34
35
36
37
38
# File 'lib/spree_cm_commissioner/trip_result.rb', line 34

def arrival_time
  return nil if departure_time.nil? || duration.nil?

  departure_time + duration.seconds
end

#cache_key_with_versionObject

Enable serializer-level caching (like ActiveRecord’s cache_key_with_version) Create a version hash based on attributes that matter for caching



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/spree_cm_commissioner/trip_result.rb', line 42

def cache_key_with_version
  version_parts = [
    id,
    price,
    quantity_available,
    max_capacity,
    departure_time&.to_i
  ].compact.join('-')

  version_hash = Digest::MD5.hexdigest(version_parts)
  "trip_results/#{id}-#{version_hash}"
end

#duration_in_hmsObject



25
26
27
28
29
30
31
32
# File 'lib/spree_cm_commissioner/trip_result.rb', line 25

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

#total_soldObject



15
16
17
18
19
# File 'lib/spree_cm_commissioner/trip_result.rb', line 15

def total_sold
  return if max_capacity.nil? || quantity_available.nil?

  max_capacity - quantity_available
end