class Admin::Legacy::Calendar::EventsController < Admin::Controller
  include DateRangeHelper

  def index
    data = events
      .preload(room: :building)
      .by_date_range(date_range(params[:dates]))
      .order(all_day: :desc, date_time: :asc, length: :desc)
    render_success :ok, json: data.map { |e| event_props(e) }
  end

  def show
    render_success :ok, json: event_props(event)
  end

  private
    def events
      current_school.events.by_employee(current_employee.id)
    end

    def event
      @event ||= events.find_by(id: params[:id])
    end

    def event_props(event)
      {}.tap do |props|
        props[:id] = event.id
        props[:name] = event.name
        props[:date] = event.date
        props[:start_time_label] = event.decorate.start_time_label
        props[:end_time_label] = event.decorate.end_time_label
        props[:length] = event.length
        props[:start] = event.decorate.start_time
        props[:end] = event.decorate.end_time unless event.all_day?
        props[:description] = event.description
        props[:notes] = event.notes
        props[:all_day] = event.all_day?
        props[:class_name] = event.classroom.name if event.class_id.positive?
        props[:internal] = event.internal?
        props[:location] = event.location
        props[:room] = if event.room.present?
          {
            name: event.room&.name,
            number: event.room&.number,
            building: event.building&.name
          }
        end
      end
    end
end
