diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 965464f35..125671d02 100644 --- a/app/controllers/form_controller.rb +++ b/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 diff --git a/lib/tasks/set_duplicate_references.rake b/lib/tasks/set_duplicate_references.rake index d1fc9b18c..82f75f031 100644 --- a/lib/tasks/set_duplicate_references.rake +++ b/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