# frozen_string_literal: true
module DataCleanup
module Rules
# Fix duplicate number on Section
module Section
class FixDuplicateNumber < Rules::Base
def description
"Fix duplicate number on Section"
end
def call
data = ::Section.group(:number, :phase_id)
.count
.select { |k,v| v > 1 }
data.each do |values, count|
number, phase_id = *values
ids = ::Section.where(phase_id: phase_id)
.order("number ASC, created_at ASC")
.pluck(:id)
phase = ::Phase.find(phase_id)
::Section.update_numbers!(*ids, parent: phase)
end
end
end
end
end
end