diff --git a/app/services/enrollment_loader.rb b/app/services/enrollment_loader.rb index 29f11ecd..9f5e0b80 100644 --- a/app/services/enrollment_loader.rb +++ b/app/services/enrollment_loader.rb @@ -4,23 +4,17 @@ require 'csv' class EnrollmentLoader def self.load_data(filepath:) - schools = [] enrollments = [] CSV.parse(File.read(filepath), headers: true) do |row| row = EnrollmentRowValues.new(row:) - next unless row.school.present? && row.academic_year.present? - schools << row.school - enrollments << create_enrollment_entry(row:) end # It's possible that instead of updating all columns on duplicate key, we could just update the student columns and leave total_teachers alone. Right now enrollment data loads before staffing data so it works correctly. Respondent.import enrollments, batch_size: 1000, on_duplicate_key_update: %i[pk k one two three four five six seven eight nine ten eleven twelve total_students] - - Respondent.where.not(school: schools).destroy_all end private @@ -126,6 +120,6 @@ class EnrollmentRowValues end def total_students - row['Total'].gsub(',', '').to_i + row['Total'].delete(',').to_i end end diff --git a/app/services/staffing_loader.rb b/app/services/staffing_loader.rb index 40a267d2..3cd5dc7b 100644 --- a/app/services/staffing_loader.rb +++ b/app/services/staffing_loader.rb @@ -4,19 +4,15 @@ require 'csv' class StaffingLoader def self.load_data(filepath:) - schools = [] respondents = [] CSV.parse(File.read(filepath), headers: true) do |row| row = StaffingRowValues.new(row:) next unless row.school.present? && row.academic_year.present? - schools << row.school - respondents << create_staffing_entry(row:) end Respondent.import respondents, batch_size: 1000, on_duplicate_key_update: [:total_teachers] - Respondent.where.not(school: schools).destroy_all end def self.clone_previous_year_data diff --git a/data/enrollment/nj_enrollment.csv b/data/enrollment/nj_enrollment.csv new file mode 100644 index 00000000..e383a423 --- /dev/null +++ b/data/enrollment/nj_enrollment.csv @@ -0,0 +1,4 @@ +Academic Year,School Name,DESE ID,PK,K,1,2,3,4,5,6,7,8,9,10,11,12,SP,Total +2022-23,John P. Faber School,50,37,94,80,89,103,104,99,,,,,,,,,569 +2022-23,Lincoln Middle School,60,,,,,,,,102,94,93,,,,,,289 +2022-23,Dunellen High School,40,,,,,,,,,,,109,85,82,76,,352 diff --git a/data/staffing/nj_staffing.csv b/data/staffing/nj_staffing.csv new file mode 100644 index 00000000..d7311a28 --- /dev/null +++ b/data/staffing/nj_staffing.csv @@ -0,0 +1,4 @@ +Academic Year,School Name,DESE ID,FTE Count +2022-23,John P. Faber School,50,57 +2022-23,Lincoln Middle School,60,33 +2022-23,Dunellen High School,40,40 diff --git a/db/seeds.rb b/db/seeds.rb index c6f72ac0..ff931a80 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -7,4 +7,6 @@ seeder.seed_districts_and_schools Rails.root.join('data', 'master_list_of_school 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_staffing Rails.root.join('data', 'staffing', 'staffing.csv') +seeder.seed_staffing Rails.root.join('data', 'staffing', 'nj_staffing.csv')