PlayerTeamCollectionTransformer   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 44
ccs 0
cts 17
cp 0
rs 10
wmc 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A reverseTransform() 0 12 5
A transform() 0 19 5
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