MemberInputTransformer   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 93.75%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 3
dl 0
loc 38
ccs 15
cts 16
cp 0.9375
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A transform() 0 15 3
A supportsTransformation() 0 8 3
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the zibios/sharep.
7
 *
8
 * (c) Zbigniew Ślązak
9
 */
10
11
namespace App\Api\DataTransformer\Parking;
12
13
use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
14
use ApiPlatform\Core\Serializer\AbstractItemNormalizer;
15
use ApiPlatform\Core\Validator\ValidatorInterface;
16
use App\Entity\Parking\Member;
17
use App\Enum\Functional\RoleEnum;
18
use App\Service\Parking\MemberService;
19
20
class MemberInputTransformer implements DataTransformerInterface
21
{
22
    /** @var ValidatorInterface */
23
    private $validator;
24
    /** @var MemberService */
25
    private $memberService;
26
27 12
    public function __construct(ValidatorInterface $validator, MemberService $memberService)
28
    {
29 12
        $this->validator = $validator;
30 12
        $this->memberService = $memberService;
31 12
    }
32
33 11
    public function transform($data, string $to, array $context = []): Member
34
    {
35 11
        $this->validator->validate($data);
36
37 7
        if (isset($context[AbstractItemNormalizer::OBJECT_TO_POPULATE])
38 7
            && $context[AbstractItemNormalizer::OBJECT_TO_POPULATE] instanceof Member) {
39
            /** @var Member $member */
40 2
            $member = $context[AbstractItemNormalizer::OBJECT_TO_POPULATE];
41 2
            $member = $this->memberService->updateMember($member, $data->name, new RoleEnum($data->role));
42
        } else {
43 6
            $member = $this->memberService->createMember($data->name, $data->email, new RoleEnum($data->role));
44
        }
45
46 6
        return $member;
47
    }
48
49 12
    public function supportsTransformation($data, string $to, array $context = []): bool
50
    {
51 12
        if ($data instanceof Member) {
52
            return false;
53
        }
54
55 12
        return Member::class === $to && null !== ($context['input']['class'] ?? null);
56
    }
57
}
58