class Admin::Administration::SchoolYears::SessionsController < Admin::Administration::Controller
  def index
    render_success :ok, json: sessions.ordered.decorate.map { |s| session_props(s) }
  end

  def create
    session = sessions.build(session_params)
    if session.save
      render_success :ok, json: session_props(session.decorate)
    else
      render_error :unprocessable_entity, errors: session
    end
  end

  private
    def school_year
      @school_year ||= current_school.school_years.find_by(id: params[:school_year_id])
    end

    def sessions
      school_year.school_year_sessions
    end

    def school_days_by_sequence
      @school_days_by_sequence ||= school_year.school_days.ordered.group_by(&:quarter)
    end

    def session_params
      params.permit(:name, :description, :start, :end, :sequence)
    end

    def session_props(session)
      {
        id: session.id,
        name: session.name,
        description: session.description,
        start: session.start,
        end: session.end,
        sequence: session.sequence,
        date_range: session.formatted_date_range,
        days: school_days_by_sequence[session.sequence].count
      }
    end
end
