summaryrefslogtreecommitdiff
path: root/lib/scheduling/round_robin.rb
blob: 7a9e257007ec4a402170081470c4e7fb46490400 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
module Scheduling
	class RoundRobin
		include Rails.application.routes.url_helpers

		def initialize(tournament_stage)
			@tournament_stage = tournament_stage
		end

		def create_matches
			num_teams = (tournament.players.count/tournament.min_players_per_team).floor
			num_matches = Float(num_teams/2)*(num_teams-1)
			for i in 1..num_matches
				tournament_stage.matches.create(status: 0, submitted_peer_evaluations: 0)
			end
		end

		def finish_match(match)
			#declare winner of match, and store that somehow
			rotate
			return "totes worked\n"
		end

		def graph(current_user)
		end

		private

		def create_round_array
			#round robin should look like this.
			#NOTE: I DO NOT KNOW IF THIS IS HOW TO PROPERLY POPULATE THE ROUND ROBIN ARRAY WITH TEAMS
			@team_pairs = Array.new(num_matches)
			for i in 0..@match.teams.size
				@team_pairs.push(@match.teams[i])
				#if there is an odd number of teams, add a dummy for byes
				if @match.teams.size % 2 != 0 && i == @match.teams.size-1
					dummy = Team.create
					@team_pairs.push(dummy)
				end
			end
		end

		def tournament_stage
			@tournament_stage
		end

		def tournament
			tournament_stage.tournament
		end

		def rotate
			#this is called when a round has completed

			#remove first team
			hold = @team_pairs.shift
			#rotate by 1 element
			@team_pairs.rotate!
			#place first team the front of the array
			@team_pairs.unshift(hold)
		end

		def mother_fuckin_winner
			scores = {}
			@teams_pairs.each do |team|
				scores[team] = team.matches.
					where(:tournament_stage => tournament_stage).
					collect{|match|match.winner==team}
			end
			weiner = scores.index(scores.max)
			scores[weiner]
		end


	end
end