CompanyNormalizer::normalize()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
rs 9.0856
c 0
b 0
f 0
cc 1
eloc 15
nc 1
nop 3
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
            'numberOfEmployees' => $company->getNumberOfEmployees()->toNative(),
59
            'aliases' => $aliases,
60
            'user' => $user,
61
        ];
62
    }
63
64
    /**
65
     * @inheritdoc
66
     */
67
    public function supportsNormalization($data, $format = null): bool
68
    {
69
        return ($data instanceof Company) && ($format === 'json');
70
    }
71
}
72