Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions app/services/execute_ranked_choice_signup_round_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def initialize(signup_round:, whodunit:, skip_locking: false, suppress_notificat
@decisions = []
end

def inner_call
def inner_call # rubocop:disable Metrics/MethodLength
prev_round =
signup_round
.convention
Expand All @@ -31,14 +31,16 @@ def inner_call
return success(decisions: []) if signup_round.maximum_event_signups_as_number <= prev_max_signups

with_relevant_locks do
pass_number = 0
loop do
executed_choices_this_pass = execute_pass(pass_number)
break if executed_choices_this_pass.blank?
pass_number += 1
end
ActiveRecord::Base.transaction do
pass_number = 0
loop do
executed_choices_this_pass = execute_pass(pass_number)
break if executed_choices_this_pass.blank?
pass_number += 1
end

ordered_user_con_profiles.update_all(ranked_choice_ordering_boost: 0)
ordered_user_con_profiles.update_all(ranked_choice_ordering_boost: 0)
end
end

success(decisions:)
Expand Down Expand Up @@ -67,7 +69,7 @@ def execute_pass(pass_number)
prev_decisions = @decisions.dup

executed_choices =
ActiveRecord::Base.transaction do
ActiveRecord::Base.transaction(requires_new: true) do
user_con_profiles = ordered_user_con_profiles.to_a
user_con_profiles.reverse! if signup_round.serpentine_ranked_choice_order? && pass_number.odd?

Expand Down
Loading