class Family::Admissions::Applicants::ClassroomsController < Family::Admissions::Controller
  include Family::Admissions::ApplicantScoped

  def batch_update
    if save_student_class_enrollments
      render_success :ok, json: student_class_enrollments.pluck(:class_id)
    else
      render_error :unprocessable_entity
    end
  end

  private
    def student_class_enrollments
      applicant.student.class_student_enrollments.where(school_year: current_admission_year)
    end

    def save_student_class_enrollments
      current_class_ids = student_class_enrollments.pluck(:class_id)
      remove_ids = current_class_ids - params[:class_ids]
      new_ids = params[:class_ids] - current_class_ids

      applicant.transaction do
        student_class_enrollments.by_class_ids(remove_ids).destroy_all if remove_ids.present?
        new_ids.each { |class_id| student_class_enrollments.create!(class_id: class_id) }
      end
    end
end
