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
51
52
53
54
55
|
# File 'app/services/spree_cm_commissioner/vendor_places/update.rb', line 21
def call(vendor:, vendor_place:, contact_phone: nil, description: nil, location_id: nil)
if vendor_place.blank?
return failure(
nil,
I18n.t('controller.vendor_places.vendor_place_not_found', default: 'Vendor place not found')
)
end
ActiveRecord::Base.transaction do
related_places = SpreeCmCommissioner::VendorPlace.where(
vendor_id: vendor.id,
place_id: vendor_place.place_id,
location_id: vendor_place.location_id
)
update_attrs = {}
update_attrs[:description] = description unless description.nil?
update_attrs[:location_id] = location_id unless location_id.nil?
update_attrs[:contact_phone] = contact_phone unless contact_phone.nil?
related_places.each do |vp|
unless vp.update(update_attrs)
error_message = vp.errors.full_messages.to_sentence
raise ActiveRecord::Rollback, error_message
end
end
end
vendor_place.reload
success(vendor_place)
rescue ActiveRecord::RecordInvalid => e
failure(nil, e.record.errors.full_messages.to_sentence)
rescue ActiveRecord::Rollback => e
failure(nil, e.message)
end
|