Class: Api::Vendor::V1::Klook::AvailabilitySerializer
- Inherits:
-
BaseSerializer
- Object
- BaseSerializer
- Api::Vendor::V1::Klook::AvailabilitySerializer
- Includes:
- Concerns::SerializerUtils
- Defined in:
- app/serializers/api/vendor/v1/klook/availability_serializer.rb
Instance Method Summary collapse
- #as_json ⇒ Object
-
#initialize(data) ⇒ AvailabilitySerializer
constructor
A new instance of AvailabilitySerializer.
Methods inherited from BaseSerializer
Constructor Details
#initialize(data) ⇒ AvailabilitySerializer
Returns a new instance of AvailabilitySerializer.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'app/serializers/api/vendor/v1/klook/availability_serializer.rb', line 5 def initialize(data) super() @availability_data = data.availability_data @restaurant_package = data.restaurant_package @units = data.units @method_name = data.method_name @max_units = data.respond_to?(:max_units) ? data.max_units : nil @utc_cutoff_minutes = (data.respond_to?(:utc_cutoff_minutes) ? data.utc_cutoff_minutes : nil).to_i.minutes @pkg_type = @restaurant_package&.package&.dynamic_price_pricing_model&.to_sym == :per_pack ? 'pack' : 'adult' @unit_pricing_key = @method_name == :calendar ? :unitPricingFrom : :unitPricing @total_pricing_key = @method_name == :calendar ? :pricingFrom : :pricing @unit_pricings = get_unit_pricings @total_pricings = get_total_pricings end |
Instance Method Details
#as_json ⇒ Object
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 |
# File 'app/serializers/api/vendor/v1/klook/availability_serializer.rb', line 20 def as_json(*) @availability_data.map do |d| date = [d[:local_date], d[:local_date_time_start]].compact.first day_name = Date.parse(date).strftime('%A') if date open_time, close_time = get_restaurant_package_open_close_times(@restaurant_package, day_name) opening_hours = format_availability_opening_hours(open_time, close_time) data = { id: d[:local_date_time_start] || nil, localDate: d[:local_date] || nil, localDateTimeStart: d[:local_date_time_start] || nil, localDateTimeEnd: d[:local_date_time_end] || nil, allDay: false, available: d[:available], status: availability_status(d[:available]), vacancies: d[:vacancies], capacity: d[:capacity], utcCutoffAt: d[:local_date_time_start]&.then { |t| (Time.iso8601(t).utc - @utc_cutoff_minutes).iso8601 }, openingHours: opening_hours, @unit_pricing_key => @unit_pricings, @total_pricing_key => @total_pricings, }.compact # since we have to pass maxUnits only for the check method, and it can be NULL too for per_pack packages data[:maxUnits] = @max_units if @method_name == :check data end end |