Completed
Push — master ( 9af059...286024 )
by Luc
12s
created

CompanyNormalizer::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 2
1
<?php declare(strict_types=1);
2
3
namespace VSV\GVQ_API\Company\Serializers;
4
5
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
6
use VSV\GVQ_API\Company\Models\Company;
7
use VSV\GVQ_API\Company\Models\TranslatedAlias;
8
use VSV\GVQ_API\User\Serializers\UserNormalizer;
9
10
class CompanyNormalizer implements NormalizerInterface
11
{
12
    /**
13
     * @var TranslatedAliasNormalizer
14
     */
15
    private $translatedAliasNormalizer;
16
17
    /**
18
     * @var UserNormalizer
19
     */
20
    private $userNormalizer;
21
22
    /**
23
     * @param TranslatedAliasNormalizer $translatedAliasNormalizer
24
     * @param UserNormalizer $userNormalizer
25
     */
26
    public function __construct(
27
        TranslatedAliasNormalizer $translatedAliasNormalizer,
28
        UserNormalizer $userNormalizer
29
    ) {
30
        $this->translatedAliasNormalizer = $translatedAliasNormalizer;
31
        $this->userNormalizer = $userNormalizer;
32
    }
33
34
    /**
35
     * @inheritdoc
36
     * @param Company $company
37
     */
38
    public function normalize($company, $format = null, array $context = array()): array
39
    {
40
        $aliases = array_map(
41
            function (TranslatedAlias $translatedAlias) use ($format) {
42
                return $this->translatedAliasNormalizer->normalize(
43
                    $translatedAlias,
44
                    $format
45
                );
46
            },
47
            $company->getTranslatedAliases()->toArray()
48
        );
49
50
        $user = $this->userNormalizer->normalize(
51
            $company->getUser(),
52
            $format
53
        );
54
55
        return [
56
            'id' => $company->getId()->toString(),
57
            'name' => $company->getName()->toNative(),
58
            'aliases' => $aliases,
59
            'user' => $user,
60
        ];
61
    }
62
63
    /**
64
     * @inheritdoc
65
     */
66
    public function supportsNormalization($data, $format = null): bool
67
    {
68
        return ($data instanceof Company) && ($format === 'json');
69
    }
70
}
71