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