class Admission::FamilyAdditionalField < ApplicationRecord
  belongs_to :school
  belongs_to :family_additional_field, class_name: '::FamilyAdditionalField'

  scope :with_display, -> { where(display: true) }
  scope :by_required, -> { where(required: true) }

  scope :eager_load_family_fields, -> do
    includes(:family_additional_field)
      .where('FamilyStatistics.Admissions = 1')
      .references(:family_additional_field)
  end

  def self.build_all(school)
    family_additional_fields = school.family_additional_fields
      .by_admission
      .order_by_group
      .order_by_sequence
      .pluck(:id)

    admission_fields = all.pluck(:family_additional_field_id)

    fields = family_additional_fields - admission_fields
    delete_fields = admission_fields - family_additional_fields

    school.admission_family_additional_fields
      .where(family_additional_field_id: delete_fields)
      .find_each(&:destroy)

    fields.each do |field|
      school.admission_family_additional_fields.build(family_additional_field_id: field)
    end
    school.admission_family_additional_fields.sort_by do |field|
      family_additional_fields.index(field.family_additional_field_id)
    end
  end
end
