Passed
Branch master (7949ab)
by Tomáš
02:07
created

R2G::generate()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 44
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 33
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 32
nc 3
nop 0
dl 0
loc 44
ccs 33
cts 33
cp 1
crap 3
rs 9.408
c 0
b 0
f 0
1
<?php
2
3
namespace TournamentGenerator\Preset;
4
5
/**
6
 *
7
 */
8
class R2G extends \TournamentGenerator\Tournament
9
{
10
11 3
	public function generate() {
12
13 3
		if (count($this->getTeams()) === 0) throw new \Exception('Couldn\'t generate 2R2G tournament because there are no teams in the tournament.');
14
15
16 3
		$round1 = $this->round('Round 1');
17 3
		$round2 = $this->round('Round 2');
18 3
		$round3 = $this->round('Round 3');
19
20 3
		$group_0_0 = $round1->group('0/0')->setInGame(2)->setType(\TournamentGenerator\Constants::ROUND_TWO);
21 3
		$group_0_1 = $round2->group('0/1')->setInGame(2)->setType(\TournamentGenerator\Constants::ROUND_TWO);
22 3
		$group_1_0 = $round2->group('1/0')->setInGame(2)->setType(\TournamentGenerator\Constants::ROUND_TWO);
23 3
		$group_1_1 = $round3->group('1/1')->setInGame(2)->setType(\TournamentGenerator\Constants::ROUND_SPLIT)->setMaxSize(3);
24 3
		$group_0_2 = $round3->group('0/2')->setInGame(2)->setType(\TournamentGenerator\Constants::ROUND_ROBIN);
25 3
		$group_2_0 = $round3->group('2/0')->setInGame(2)->setType(\TournamentGenerator\Constants::ROUND_ROBIN);
26
27 3
		$filter_win_1 = new \TournamentGenerator\TeamFilter('wins', '=', 1);
28 3
		$filter_loss_1 = new \TournamentGenerator\TeamFilter('losses', '=', 1);
29 3
		$filter_notProgressed = new \TournamentGenerator\TeamFilter('notprogressed');
30
31 3
		$this->splitTeams($round1);
32
33 3
		if (count($this->getTeams()) % 4 == 2) {
34 1
			$group_top = $round2->group('TOP')->setType(\TournamentGenerator\Constants::ROUND_TWO);
35
36 1
			$filter_win_2 = new \TournamentGenerator\TeamFilter('wins', '=', 2, [$group_0_0, $group_top]);
37 1
			$filter_loss_2 = new \TournamentGenerator\TeamFilter('losses', '=', 2, [$group_0_0, $group_top]);
38 1
			$filter_win_1_both = new \TournamentGenerator\TeamFilter('wins', '=', 1, [$group_0_0, $group_top]);
39 1
			$filter_loss_1_both = new \TournamentGenerator\TeamFilter('losses', '=', 1, [$group_0_0, $group_top]);
40 1
			$group_0_0->progression($group_top, 0, 1)->addFilter($filter_win_1); // PROGRESS THE BEST WINNING TEAM
41 1
			$group_0_0->progression($group_top, 0, 1)->addFilter($filter_loss_1); // PROGRESS THE BEST LOSING TEAM
42 1
			$group_top->progression($group_2_0)->addFilter($filter_win_2);
43 1
			$group_top->progression($group_0_2)->addFilter($filter_loss_2);
44 1
			$group_top->progression($group_1_1)->addFilter($filter_win_1_both, $filter_loss_1_both);
45
		}
46
47 3
		$group_0_0->progression($group_0_1)->addFilter($filter_loss_1)->addFilter($filter_notProgressed);
48 3
		$group_0_0->progression($group_1_0)->addFilter($filter_win_1)->addFilter($filter_notProgressed);
49 3
		$group_0_1->progression($group_0_2)->addFilter($filter_loss_1);
50 3
		$group_0_1->progression($group_1_1)->addFilter($filter_win_1);
51 3
		$group_1_0->progression($group_2_0)->addFilter($filter_win_1);
52 3
		$group_1_0->progression($group_1_1)->addFilter($filter_loss_1);
53
54 3
		return $this;
55
56
	}
57
58
}
59