class Maintenance::Service::OpportunitiesJob
  include Sidekiq::Worker

  def perform(school_id)
    @school_id = school_id
    return unless ungrouped_opportunities

    ungrouped = school.service_groups.find_or_create_by(name: 'Ungrouped')
    ungrouped_opportunities.each { |o| o.update(group: ungrouped) }
  end

  private
    def school
      @school ||= School.find(@school_id)
    end

    def ungrouped_opportunities
      @ungrouped_opportunities ||= Service::Opportunity
        .left_joins(:group)
        .where(school_id: school.id)
        .where(ServiceOpGroups: { SOGID: nil })
    end
end
