PlayerTeamCollectionTransformer::transform()   A
last analyzed

Complexity

Conditions 5
Paths 7

Size

Total Lines 19
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 9
c 1
b 0
f 0
nc 7
nop 1
dl 0
loc 19
ccs 0
cts 10
cp 0
crap 30
rs 9.6111
1
<?php
2
3
namespace Obblm\Core\DataTransformer;
4
5
use Obblm\Core\Entity\Player;
6
use Obblm\Core\Entity\Team;
7
use Symfony\Component\Form\DataTransformerInterface;
8
9
class PlayerTeamCollectionTransformer implements DataTransformerInterface
10
{
11
12
    /**
13
     * @param Team $value
14
     * @return Team|null
15
     */
16
    public function transform($value)
17
    {
18
        if ($value === null) {
19
            return;
20
        }
21
22
        // In want to have 16 players in the list, no less, no more
23
24
        $usedNumbers = [];
25
26
        foreach ($value->getPlayers() as $player) {
27
            $usedNumbers[$player->getNumber()] = $player;
28
        }
29
        for ($i=1; $i<=16; $i++) {
30
            if (!isset($usedNumbers[$i])) {
31
                $value->addPlayer((new Player())->setNumber($i));
32
            }
33
        }
34
        return $value;
35
    }
36
37
    /**
38
     * @param Team $value
39
     * @return Team
40
     */
41
    public function reverseTransform($value)
42
    {
43
        if ($value === null) {
44
            return;
45
        }
46
47
        foreach ($value->getPlayers() as $player) {
48
            if (!$player->getName() && !$player->getType()) {
49
                $value->removePlayer($player);
50
            }
51
        }
52
        return $value;
53
    }
54
}
55