Passed
Pull Request — master (#53)
by
unknown
05:24
created

Championship   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Test Coverage

Coverage 17.14%

Importance

Changes 0
Metric Value
eloc 33
dl 0
loc 75
ccs 6
cts 35
cp 0.1714
rs 10
c 0
b 0
f 0
wmc 11

4 Methods

Rating   Name   Duplication   Size   Complexity  
A category() 0 3 1
A teams() 0 3 1
B getRoundTitle() 0 41 8
A tournament() 0 3 1
1
<?php
2
3
namespace App;
4
5
class Championship extends \Xoco70\LaravelTournaments\Models\Championship
6
{
7
    /**
8
     * A championship belongs to a Category
9
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
10
     */
11 8
    public function category()
12
    {
13 8
        return $this->belongsTo(\App\Category::class);
14
    }
15
16
    /**
17
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
18
     */
19 3
    public function teams()
20
    {
21 3
        return $this->hasMany(\App\Team::class);
22
    }
23
24
    /**
25
     * A championship belongs to a Tournament.
26
     *
27
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
28
     */
29 2
    public function tournament()
30
    {
31 2
        return $this->belongsTo(Tournament::class);
32
    }
33
34
    /**
35
     * Generate Round Titles
36
     * @param $numFighters
37
     * @return array
38
     */
39
    public function getRoundTitle($numFighters): array
40
    {
41
        $roundTitles = [];
42
        if ($this->hasPreliminary()) {
43
            $roundTitles[] = 'Preliminary';
44
            $this->noTeams = $numFighters / $this->getSettings()->preliminaryGroupSize;
0 ignored issues
show
Bug introduced by
The property noTeams does not seem to exist on App\Championship. Are you sure there is no database migration missing?

Checks if undeclared accessed properties appear in database migrations and if the creating migration is correct.

Loading history...
45
        } else if ($this->isSingleEliminationType()) {
46
            $this->noTeams = $numFighters;
47
        } else if ($this->isPlayOffType()) {
48
            $this->noTeams = $numFighters;
49
        }
50
51
        if ($this->noTeams == 2) {
52
            $roundTitles[] = 'Final';
53
        } elseif ($this->noTeams <= 4) {
54
            $roundTitles[] = 'Semi-Finals';
55
            $roundTitles[] = 'Final';
56
        } elseif ($this->noTeams <= 8) {
57
            $roundTitles[] = 'Quarter-Finals';
58
            $roundTitles[] = 'Semi-Finals';
59
            $roundTitles[] = 'Final';
60
        } else {
61
            $roundTitles[] = 'Quarter-Finals';
62
            $roundTitles[] = 'Semi-Finals';
63
            $roundTitles[] = 'Final';
64
65
            $noRounds = ceil(log($this->noTeams, 2));
66
            $noTeamsInFirstRound = pow(2, ceil(log($this->noTeams) / log(2)));
67
            $tempRounds = array();
68
69
            //The minus 3 is to ignore the final, semi final and quarter final rounds
70
71
            for ($i = 0; $i < $noRounds - 3; $i++) {
72
                $tempRounds[] = 'Last ' . $noTeamsInFirstRound;
73
                $noTeamsInFirstRound /= 2;
74
            }
75
76
            $roundTitles = array_merge($tempRounds, $roundTitles);
77
78
        }
79
        return $roundTitles;
80
    }
81
}
82