mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-09 07:28:41 -07:00
34 lines
793 B
Ruby
34 lines
793 B
Ruby
# frozen_string_literal: true
|
||
|
||
class AcademicYear < ActiveRecord::Base
|
||
def self.find_by_date(date)
|
||
year = parse_year_range(date:)
|
||
range = "#{year.start}-#{year.end.to_s[2, 3]}"
|
||
academic_years[range]
|
||
end
|
||
|
||
def formatted_range
|
||
years = range.split('-')
|
||
"#{years.first} – 20#{years.second}"
|
||
end
|
||
|
||
private
|
||
|
||
def self.parse_year_range(date:)
|
||
year = date.year
|
||
if date.month > 6
|
||
AcademicYearRange.new(year, year + 1)
|
||
else
|
||
AcademicYearRange.new(year - 1, year)
|
||
end
|
||
end
|
||
|
||
def self.academic_years
|
||
@@academic_years ||= AcademicYear.all.map { |academic_year| [academic_year.range, academic_year] }.to_h
|
||
end
|
||
|
||
private_class_method :academic_years
|
||
private_class_method :parse_year_range
|
||
end
|
||
|
||
AcademicYearRange = Struct.new(:start, :end)
|