1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-03-24 17:04:43 +00:00
Files
wrestlingdev.com/lib/tasks/finish_tournament_204.rake

104 lines
3.3 KiB
Ruby

namespace :tournament do
desc "Assign random win types and scores to matches"
task assign_random_wins: :environment do
WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin"]
@tournament = Tournament.find(204)
Mat.find_or_create_by(
name: "1",
tournament_id: @tournament.id
)
Mat.find_or_create_by(
name: "2",
tournament_id: @tournament.id
)
Mat.find_or_create_by(
name: "3",
tournament_id: @tournament.id
)
Mat.find_or_create_by(
name: "4",
tournament_id: @tournament.id
)
Mat.find_or_create_by(
name: "5",
tournament_id: @tournament.id
)
GenerateTournamentMatches.new(@tournament).generate
sleep(60)
while @tournament.reload.curently_generating_matches == 1
puts "Waiting for tournament to finish generating matches..."
sleep(5)
@tournament.reload
end
sleep(10)
loop do
@tournament.reload
@tournament.refill_open_bout_board_queues
mats_with_queue1 = @tournament.mats.select do |mat|
match = mat.queue1_match
match && match.finished != 1 && match.loser1_name != "BYE" && match.loser2_name != "BYE"
end
break if mats_with_queue1.empty?
mat = mats_with_queue1.sample
match = mat.queue1_match
# Wait until both wrestlers are assigned for the selected queue1 match.
while match && (match.w1.nil? || match.w2.nil?)
puts "Waiting for wrestlers in match #{match.bout_number} on mat #{mat.name}..."
sleep(5)
@tournament.reload
@tournament.refill_open_bout_board_queues
match = mat.reload.queue1_match
end
next unless match
next if match.finished == 1 || match.loser1_name == "BYE" || match.loser2_name == "BYE"
puts "Finishing queue1 match on mat #{mat.name} with bout number #{match.bout_number}..."
# Choose a random winner
wrestlers = [match.w1, match.w2]
match.winner_id = wrestlers.sample
# Choose a random win type
win_type = WIN_TYPES.sample
match.win_type = win_type
# Assign score based on win type
match.score = case win_type
when "Decision"
low_score = rand(0..10)
high_score = low_score + rand(1..7)
"#{high_score}-#{low_score}"
when "Major"
low_score = rand(0..10)
high_score = low_score + rand(8..14)
"#{high_score}-#{low_score}"
when "Tech Fall"
low_score = rand(0..10)
high_score = low_score + rand(15..19)
"#{high_score}-#{low_score}"
when "Pin"
pin_times = ["0:30","1:12","5:37","2:34","3:54","4:23","5:56","0:12","1:00"]
pin_times.sample
else
""
end
# Mark match as finished
match.finished = 1
match.save!
# sleep to prevent mysql locks when queue advancement runs
sleep(0.5)
end
end
end