diff --git a/app/lib/seeder.rb b/app/lib/seeder.rb index f47d93fa..ea63f9b7 100644 --- a/app/lib/seeder.rb +++ b/app/lib/seeder.rb @@ -121,15 +121,19 @@ class Seeder def seed_enrollment(csv_file) EnrollmentLoader.load_data(filepath: csv_file) + missing_enrollment_for_current_year = Respondent.where(academic_year: AcademicYear.order(:range).last).none? do |respondent| + respondent&.total_students&.zero? + end + + EnrollmentLoader.clone_previous_year_data if missing_enrollment_for_current_year end def seed_staffing(csv_file) StaffingLoader.load_data(filepath: csv_file) missing_staffing_for_current_year = Respondent.where(academic_year: AcademicYear.order(:range).last).none? do |respondent| - respondent.total_teachers.present? + respondent&.total_teachers&.zero? end - # This will also clone previous year enrollment data StaffingLoader.clone_previous_year_data if missing_staffing_for_current_year end diff --git a/app/services/enrollment_loader.rb b/app/services/enrollment_loader.rb index a4fab244..a57dd13e 100644 --- a/app/services/enrollment_loader.rb +++ b/app/services/enrollment_loader.rb @@ -39,6 +39,35 @@ class EnrollmentLoader respondent end + def self.clone_previous_year_data + years = AcademicYear.order(:range).last(2) + previous_year = years.first + current_year = years.last + respondents = [] + School.all.each do |school| + Respondent.where(school:, academic_year: previous_year).each do |respondent| + current_respondent = Respondent.find_or_initialize_by(school:, academic_year: current_year) + current_respondent.pk = respondent.pk + current_respondent.k = respondent.k + current_respondent.one = respondent.one + current_respondent.two = respondent.two + current_respondent.three = respondent.three + current_respondent.four = respondent.four + current_respondent.five = respondent.five + current_respondent.six = respondent.six + current_respondent.seven = respondent.seven + current_respondent.eight = respondent.eight + current_respondent.nine = respondent.nine + current_respondent.ten = respondent.ten + current_respondent.eleven = respondent.eleven + current_respondent.twelve = respondent.twelve + current_respondent.total_students = respondent.total_students + respondents << current_respondent + end + end + Respondent.import respondents, batch_size: 1000, on_duplicate_key_update: [:total_teachers] + end + private_class_method :create_enrollment_entry end diff --git a/app/services/staffing_loader.rb b/app/services/staffing_loader.rb index 816f0ae4..29d692f5 100644 --- a/app/services/staffing_loader.rb +++ b/app/services/staffing_loader.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'csv' +require "csv" class StaffingLoader def self.load_data(filepath:) @@ -51,20 +51,19 @@ class StaffingRowValues def school @school ||= begin - dese_id = row['DESE ID'].strip.to_i + dese_id = row["DESE ID"].strip.to_i School.find_by_dese_id(dese_id) end end def academic_year @academic_year ||= begin - year = row['Academic Year'] + year = row["Academic Year"] AcademicYear.find_by_range(year) end end def fte_count - row['FTE Count'] + row["FTE Count"] end end - diff --git a/db/seeds.rb b/db/seeds.rb index 0ff7fda9..e87fceeb 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -2,13 +2,13 @@ require "#{Rails.root}/app/lib/seeder" seeder = Seeder.new -seeder.seed_academic_years '2016-17', '2017-18', '2018-19', '2019-20', '2020-21', '2021-22', '2022-23' -seeder.seed_districts_and_schools Rails.root.join('data', 'master_list_of_schools_and_districts.csv') -seeder.seed_sqm_framework Rails.root.join('data', 'sqm_framework.csv') -seeder.seed_demographics Rails.root.join('data', 'demographics.csv') -seeder.seed_enrollment Rails.root.join('data', 'enrollment', 'enrollment.csv') -seeder.seed_enrollment Rails.root.join('data', 'enrollment', 'nj_enrollment.csv') -seeder.seed_enrollment Rails.root.join('data', 'enrollment', 'wi_enrollment.csv') -seeder.seed_staffing Rails.root.join('data', 'staffing', 'staffing.csv') -seeder.seed_staffing Rails.root.join('data', 'staffing', 'nj_staffing.csv') -seeder.seed_staffing Rails.root.join('data', 'staffing', 'wi_staffing.csv') +seeder.seed_academic_years "2016-17", "2017-18", "2018-19", "2019-20", "2020-21", "2021-22", "2022-23", "2023-24" +seeder.seed_districts_and_schools Rails.root.join("data", "master_list_of_schools_and_districts.csv") +seeder.seed_sqm_framework Rails.root.join("data", "sqm_framework.csv") +seeder.seed_demographics Rails.root.join("data", "demographics.csv") +seeder.seed_enrollment Rails.root.join("data", "enrollment", "enrollment.csv") +seeder.seed_enrollment Rails.root.join("data", "enrollment", "nj_enrollment.csv") +seeder.seed_enrollment Rails.root.join("data", "enrollment", "wi_enrollment.csv") +seeder.seed_staffing Rails.root.join("data", "staffing", "staffing.csv") +seeder.seed_staffing Rails.root.join("data", "staffing", "nj_staffing.csv") +seeder.seed_staffing Rails.root.join("data", "staffing", "wi_staffing.csv")