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

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

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

  private
    def events
      if schedule_config.student_schedules?
        current_school.events.by_student(current_student.id).without_internal
      else
        current_school.events.without_internal.without_classrooms
      end
    end

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

    def schedule_config
      @schedule_config ||= current_school.find_or_build_school_config
    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[: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
