1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-04 15:24:23 +01:00
fab-manager/app/views/api/availabilities/public.json.jbuilder
2023-02-15 10:29:57 +01:00

64 lines
2.4 KiB
Ruby

# 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