# frozen_string_literal: true

json.id reservation.id
json.user_id reservation.statistic_profile.user_id
json.user_full_name reservation.user&.profile&.full_name
json.message reservation.message
json.slots_reservations_attributes reservation.slots_reservations do |sr|
  json.id sr.id
  json.canceled_at sr.canceled_at&.iso8601
  json.is_valid sr.is_valid
  json.slot_id sr.slot_id
  json.slot_attributes do
    json.id sr.slot_id
    json.start_at sr.slot.start_at.iso8601
    json.end_at sr.slot.end_at.iso8601
    json.availability_id sr.slot.availability_id
  end
end
json.nb_reserve_places reservation.nb_reserve_places
json.tickets_attributes reservation.tickets do |t|
  json.extract! t, :booked, :created_at
  json.event_price_category do
    json.extract! t.event_price_category, :id, :price_category_id
    json.price_category do
      json.extract! t.event_price_category.price_category, :id, :name
    end
  end
end
json.total_booked_seats reservation.total_booked_seats(canceled: true)
json.created_at reservation.created_at.iso8601
json.reservable_id reservation.reservable_id
json.reservable_type reservation.reservable_type
json.reservable do
  json.id reservation.reservable.id
  json.name reservation.reservable.name
end
json.booking_users_attributes reservation.booking_users.order(booked_type: :desc) do |bu|
  json.id bu.id
  json.name bu.name
  json.event_price_category_id bu.event_price_category_id
  json.booked_id bu.booked_id
  json.booked_type bu.booked_type
  json.age ((Time.zone.now - bu.booked.birthday.to_time) / 1.year.seconds).floor if bu.booked_type == 'Child'
end
json.is_valid reservation.slots_reservations[0].is_valid
json.is_paid reservation.slots_reservations[0].is_confirm
