Class: Api::Vendor::V1::Getyourguide::AvailabilitiesController
- Inherits:
-
BaseController
- Object
- ActionController::Base
- ApplicationController
- BaseController
- Api::Vendor::V1::Getyourguide::AvailabilitiesController
- Includes:
- Concerns::ChargeCalculatorHelper, Concerns::Helpers
- Defined in:
- app/controllers/api/vendor/v1/getyourguide/availabilities_controller.rb
Instance Attribute Summary
Attributes inherited from BaseController
Instance Method Summary collapse
Methods inherited from BaseController
Methods included from ResponseCacheConcern
Methods inherited from ApplicationController
#after_sign_in_path_for, #after_sign_out_path_for, #default_url_options, #identity_cache_memoization, #render_not_found, #routing_error, search_params_key=
Methods included from LogrageCustomLogger
Methods included from ControllerHelpers
#check_boolean_param, #get_banners, #inventory_params, #reservation_params
Instance Method Details
#index ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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/controllers/api/vendor/v1/getyourguide/availabilities_controller.rb', line 6 def index %i[productId fromDateTime toDateTime].each { |key| params.require(key) } @permitted_params = params.permit(:productId, :fromDateTime, :toDateTime) BUSINESS_LOGGER.set_business_context({ vendor_name: ApiVendorV1::Constants::GET_YOUR_GUIDE_VENDOR_NAME }) @gyg_product_id = permitted_params[:productId].to_s @is_gyg_product_hh_package = gyg_product_id.start_with?(GYG_PRODUCT_PREFIX) if is_gyg_product_hh_package restaurant_package_id = gyg_product_id.delete_prefix(GYG_PRODUCT_PREFIX) @restaurant_package = HhPackage::RestaurantPackage.valid_to_have_agendas_and_not_preview.find_by(id: restaurant_package_id) return render_invalid_product if @restaurant_package.blank? @restaurant = @restaurant_package.restaurant return render_invalid_product if restaurant.blank? || !restaurant.active_and_not_expired? else @restaurant = Restaurant.active.not_expired.find_by(id: gyg_product_id) return render_invalid_product if restaurant.blank? end inv_checker_service = restaurant.create_inv_checkers.first inv_checker_service.for_delivery = false inv_checker_service.for_dine_in = true inv_checker_service.restaurant_package_ids = [restaurant_package&.id] kid = 0 adult = if is_gyg_product_hh_package min_seat = restaurant_package.package&.decide_min_seat is_per_pack = restaurant_package.package&.dynamic_price_pricing_model&.to_sym == :per_pack per_pack_qty = is_per_pack ? restaurant_package&.package&.dynamic_pricings&.first&.per_pack.to_i : 1 [min_seat, per_pack_qty].max else restaurant.restaurant_packages.valid_to_have_agendas.map do |rp| rp.package&.decide_min_seat end.compact.max end start_date = permitted_params[:fromDateTime].to_date end_date = permitted_params[:toDateTime].to_date min_booking_time_in_seconds = calculate_min_booking_time_seconds availability_start_times = fetch_availability_start_times(inv_checker_service, adult, kid, start_date..end_date) availability_data = prepare_availability_data(start_date..end_date, availability_start_times, min_booking_time_in_seconds, adult) response = { data: { availabilities: availability_data } } render json: response end |