Class: SpreeCmCommissioner::Routes::DecrementTripCount

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/routes/decrement_trip_count.rb

Instance Method Summary collapse

Instance Method Details

#call(trip:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/services/spree_cm_commissioner/routes/decrement_trip_count.rb', line 6

def call(trip:)
  return failure(nil, 'Trip not found') unless trip

  vendor = trip.vendor
  return failure(nil, 'Vendor not found') unless vendor

  ActiveRecord::Base.transaction do
    route = trip.route

    route.update!(trip_count: [route.trip_count - 1, 0].max)

    vendor_route = locate_vendor_route(vendor: vendor, route: route)
    vendor_route&.update!(trip_count: [vendor_route.trip_count - 1, 0].max)
  end

  success(trip: trip)
rescue StandardError => e
  failure(nil, e.message)
end