Class: ReservationConfirmationService
- Inherits:
-
BaseOperationService
- Object
- BaseOperationService
- ReservationConfirmationService
- Includes:
- DefaultErrorContainer
- Defined in:
- app/services/reservation_confirmation_service.rb
Instance Attribute Summary
Attributes inherited from BaseOperationService
Instance Method Summary collapse
- #accept ⇒ Object
-
#initialize(reservation_id, options = {}) ⇒ ReservationConfirmationService
constructor
A new instance of ReservationConfirmationService.
- #reject ⇒ Object
Methods included from DefaultErrorContainer
#error, #error_message_simple, #merge_errors
Methods inherited from BaseOperationService
Constructor Details
#initialize(reservation_id, options = {}) ⇒ ReservationConfirmationService
Returns a new instance of ReservationConfirmationService.
12 13 14 15 |
# File 'app/services/reservation_confirmation_service.rb', line 12 def initialize(reservation_id, = {}) self.reservation = Reservation.find(reservation_id) self.confirmed_by = .delete(:confirmed_by) end |
Instance Method Details
#accept ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/services/reservation_confirmation_service.rb', line 17 def accept # if reservation.is_past? # errors.add(:base, "Reservation time has been passed") # return false # end unless reservation.update(ack: true, confirmed_by: confirmed_by) errors.add(:base, reservation.errors..to_sentence) return false end reservation.trigger_immediate_sync NotificationWorkers::Reservation.perform_async(reservation.id, :confirm) track_event true end |
#reject ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'app/services/reservation_confirmation_service.rb', line 35 def reject # if reservation.is_past? # errors.add(:base, "Reservation time has been passed") # return false # end # Cancel seven rooms reservation if restaurant using seven rooms inventory cancel_sr_reservation_result = cancel_seven_rooms_reservation unless cancel_sr_reservation_result.success? errors.add(:base, SevenRooms::ErrorMessages.(confirmed_by, cancel_sr_reservation_result.)) return false end # Cancel TableCheck reservation if restaurant using TableCheck inventory cancel_tc_reservation_result = cancel_tablecheck_reservation unless cancel_tc_reservation_result.success? errors.add(:base, Tablecheck::ErrorMessages.(confirmed_by, cancel_tc_reservation_result.)) return false end # Cancel Weeloy reservation if restaurant using Weeloy inventory cancel_weeloy_reservation_result = cancel_weeloy_reservation unless cancel_weeloy_reservation_result.success? errors.add(:base, Weeloy::ErrorMessages.(confirmed_by, cancel_weeloy_reservation_result.)) return false end # Cancel BistroChat reservation if restaurant using BistroChat inventory cancel_bc_reservation_result = cancel_bistrochat_reservation unless cancel_bc_reservation_result.success? errors.add(:base, Bistrochat::ErrorMessages.(confirmed_by, cancel_bc_reservation_result.)) return false end # Cancel MyMenu reservation if restaurant using MyMenu inventory cancel_mm_reservation_result = unless cancel_mm_reservation_result.success? errors.add(:base, MyMenu::ErrorMessages.(confirmed_by, cancel_mm_reservation_result.)) return false end unless reservation.update(ack: false, confirmed_by: confirmed_by) errors.add(:base, reservation.errors..to_sentence) return false end # Trigger immediate sync for rejection (critical status change) reservation.trigger_immediate_sync if reservation.by_marketplace? vendor_name = reservation.vendor_reservation.oauth_application.name case vendor_name when ApiVendorV1::Constants::OPEN_RICE_VENDOR_NAME Vendors::OpenRice::WebhookWorker.perform_async(reservation.id.to_s, reservation.vendor_reservation.id.to_s, ApiVendorV1::Constants::CANCEL) when ApiVendorV1::Constants::TAG_THAI_VENDOR_NAME Vendors::TagThai::WebhookWorker.perform_async(reservation.id, ApiVendorV1::Constants::CANCEL) when ApiVendorV1::Constants::GOOGLE_RESERVE_VENDOR_NAME Vendors::GoogleReserve::WebhookWorker.perform_async(reservation.id, ApiVendorV1::Constants::RWG_DECLINED_BY_MERCHANT) else APMErrorHandler.report("Invalid vendor name: #{vendor_name}") end end NotificationWorkers::Reservation.perform_async(reservation.id, :reject) track_event true end |