class Support::Sites::Schools::YearsController < Support::Sites::Controller
  def index
    render_success :ok, json: years.includes(:school_days).map { |y| year_props(y) }
  end

  def update
    year.assign_attributes(year_params)
    if year.save(validate: false)
      render_success :ok
    else
      render_error :unprocessable_entity, errors: year
    end
  end

  private
    def school
      @school ||= School.find_by(id: params[:school_id])
    end

    def years
      school.school_years
    end

    def year
      @year ||= years.find_by(id: params[:id])
    end

    def year_params
      params.permit(:year_end_closeout)
    end

    def year_props(year)
      {}.tap do |props|
        props[:id] = year.id
        props[:academic_year] = year.academic_year
        props[:name] = year.name
        props[:year_end_closeout] = year.year_end_closeout
        return props unless action_name.to_sym == :index

        props[:count] = year.school_days.count
        props[:current] = year.current?
      end
    end
end
