Module: Api::Vendor::V1::GoogleReserve::Concerns::ErrorResponses
- Extended by:
- ActiveSupport::Concern
- Includes:
- Concerns::ReservationUtils
- Included in:
- BookingsController
- Defined in:
- app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb
Overview
typed: ignore frozen_string_literal: true
Instance Method Summary collapse
- #render_booking_not_cancellable(error_message) ⇒ Object
- #render_cause_unspecified(error_message, merchant_id = nil, booking_id = nil, room_id = nil) ⇒ Object
- #render_error_response(restaurant_id, error_code, status_code, error_message, additional_data = {}) ⇒ Object
- #render_slot_unavailable(error_detail, error_backtrace = nil) ⇒ Object
- #report_error(restaurant_id, error_code, error_message, additional_data) ⇒ Object
- #send_notify_email(message, error_message, additional_data) ⇒ Object
Instance Method Details
#render_booking_not_cancellable(error_message) ⇒ Object
20 21 22 |
# File 'app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb', line 20 def render_booking_not_cancellable() render_error_response(@restaurant.id, ApiVendorV1::Constants::RWG_BOOKING_NOT_CANCELLABLE, :ok, ) end |
#render_cause_unspecified(error_message, merchant_id = nil, booking_id = nil, room_id = nil) ⇒ Object
8 9 10 11 12 |
# File 'app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb', line 8 def render_cause_unspecified(, merchant_id = nil, booking_id = nil, room_id = nil) restaurant_id = merchant_id || @restaurant&.id render_error_response(restaurant_id, ApiVendorV1::Constants::RWG_CAUSE_UNSPECIFIED, :bad_request, , reservation_id: booking_id, restaurant_package_id: room_id) end |
#render_error_response(restaurant_id, error_code, status_code, error_message, additional_data = {}) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb', line 24 def render_error_response(restaurant_id, error_code, status_code, , additional_data = {}) report_error(restaurant_id, error_code, , additional_data) response_payload = { booking_failure: { cause: error_code, description: } } VendorLogger.log_event(:response, params[:route], payload: response_payload.merge(status_code: status_code)) render json: response_payload, status: status_code end |
#render_slot_unavailable(error_detail, error_backtrace = nil) ⇒ Object
14 15 16 17 18 |
# File 'app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb', line 14 def render_slot_unavailable(error_detail, error_backtrace = nil) render_error_response(@restaurant.id, ApiVendorV1::Constants::RWG_SLOT_UNAVAILABLE, :ok, ApiVendorV1::Constants::RWG_SLOT_UNAVAILABLE_MSG, error_detail: error_detail, error_backtrace: error_backtrace) end |
#report_error(restaurant_id, error_code, error_message, additional_data) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb', line 33 def report_error(restaurant_id, error_code, , additional_data) = "GoogleReserve restaurant_id #{restaurant_id}: #{error_code}" log_type = error_code == ApiVendorV1::Constants::RWG_SLOT_UNAVAILABLE ? :info : :error additional_data.merge!(params: params.permit!) BUSINESS_LOGGER.set_business_context({ restaurant_id: params.dig(:slot, :merchant_id).to_s.split('-')[1].to_i }) BUSINESS_LOGGER.send(log_type, , error_message: , data: additional_data) APMErrorHandler.report(, error_message: , data: additional_data) if log_type == :error send_notify_email(, , additional_data) end |
#send_notify_email(message, error_message, additional_data) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'app/controllers/api/vendor/v1/google_reserve/concerns/error_responses.rb', line 45 def send_notify_email(, , additional_data) return if hh_reservation_inventory_errors.include?() additional_data.delete(:error_backtrace) receivers = [::SUPPORT_EMAIL, ::SUPPORT_EMAIL_SLACK, ::VENDOR_TEAM_EMAIL] subject = body = <<~BODY Message: #{}, Additional_info: #{additional_data} BODY StaffMailer.notify(subject, body, receivers).deliver_later! end |