# frozen_string_literal: true json.array!(@availabilities) do |availability| json.id availability.id json.start availability.start_at.iso8601 json.end availability.end_at.iso8601 json.textColor 'black' json.backgroundColor 'white' # availability object (for weeks/months views) if availability.instance_of? Availability json.title availability.title(@title_filter) json.event_id availability.event.id if availability.available_type == 'event' json.training_id availability.trainings.first.id if availability.available_type == 'training' json.space_id availability.spaces.first.id if availability.available_type == 'space' json.machines_ids availability.machines.map(&:id) if availability.available_type == 'machines' json.available_type availability.available_type json.tag_ids availability.tag_ids json.tags availability.tags do |t| json.id t.id json.name t.name end json.is_completed availability.full? json.is_reserved availability.reserved? json.borderColor availability_border_color(availability) if availability.reserved? && !@user.nil? && availability.reserved_by?(@user.id) json.title "#{availability.title}' - #{t('trainings.i_ve_reserved')}" elsif availability.full? json.title "#{availability.title} - #{t('trainings.completed')}" json.borderColor AvailabilityHelper::IS_FULL end # slot object ( here => availability = slot ), for daily view elsif availability.instance_of? Slot slot = availability json.title Slots::TitleService.new(@user&.role, @user).call(slot) json.tag_ids slot.availability.tag_ids json.tags slot.availability.tags do |t| json.id t.id json.name t.name end json.is_reserved slot.reserved? json.is_completed slot.full? case slot.availability.available_type when 'machines' json.machine_ids slot.availability.machines.map(&:id) json.borderColor machines_slot_border_color(slot) when 'space' json.space_id slot.availability.spaces.first.id json.borderColor space_slot_border_color(slot) when 'training' json.training_id slot.availability.trainings.first.id json.borderColor trainings_events_border_color(slot.availability) when 'event' json.event_id slot.availability.event.id json.borderColor trainings_events_border_color(slot.availability) else json.title 'Unknown slot' end else json.title 'Unknown object' end end