Browse Source

Increment duplicate_set_id

pull/2141/head
Kat 2 years ago
parent
commit
198bbe45ea
  1. 11
      app/controllers/form_controller.rb
  2. 11
      lib/tasks/set_duplicate_references.rake

11
app/controllers/form_controller.rb

@ -175,7 +175,7 @@ private
if dynamic_duplicates.count.positive?
saved_duplicates = @log.duplicates
unless saved_duplicates == dynamic_duplicates
@log.update!(duplicate_set_id: new_duplicate_set_id) if @log.duplicate_set_id.blank?
@log.update!(duplicate_set_id: new_duplicate_set_id(@log)) if @log.duplicate_set_id.blank?
dynamic_duplicates.each do |duplicate|
duplicate.update!(duplicate_set_id: @log.duplicate_set_id) if duplicate.duplicate_set_id != @log.duplicate_set_id
end
@ -293,10 +293,11 @@ private
SalesLog.find_by(duplicate_set_id:)&.update!(duplicate_set_id: nil) if log.sales? && SalesLog.where(duplicate_set_id:).count == 1
end
def new_duplicate_set_id
loop do
duplicate_set_id = SecureRandom.random_number(1_000_000)
return duplicate_set_id unless LettingsLog.exists?(duplicate_set_id:)
def new_duplicate_set_id(log)
if log.lettings?
LettingsLog.maximum(:duplicate_set_id).to_i + 1
else
SalesLog.maximum(:duplicate_set_id).to_i + 1
end
end
end

11
lib/tasks/set_duplicate_references.rake

@ -1,7 +1,7 @@
desc "Set duplicate references for sales and lettings logs"
task set_duplicate_references: :environment do
SalesLog.filter_by_year(2023).duplicate_sets.each do |duplicate_set|
duplicate_set_id = generate_new_duplicate_set_id
duplicate_set_id = SalesLog.maximum(:duplicate_set_id).to_i + 1
next if duplicate_set.any? { |_log_id| SalesLog.exists?(duplicate_set_id:) }
duplicate_set.each do |log_id|
@ -12,7 +12,7 @@ task set_duplicate_references: :environment do
end
LettingsLog.filter_by_year(2023).duplicate_sets.each do |duplicate_set|
duplicate_set_id = generate_new_duplicate_set_id
duplicate_set_id = LettingsLog.maximum(:duplicate_set_id).to_i + 1
next if duplicate_set.any? { |_log_id| LettingsLog.exists?(duplicate_set_id:) }
duplicate_set.each do |log_id|
@ -22,10 +22,3 @@ task set_duplicate_references: :environment do
end
end
end
def generate_new_duplicate_set_id
loop do
duplicate_set_id = SecureRandom.random_number(1_000_000)
return duplicate_set_id unless LettingsLog.exists?(duplicate_set_id:)
end
end

Loading…
Cancel
Save