Test Failed
Branch develop (ac2838)
by Daniel
09:09
created

ComponentLocationValidator   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
rs 10
c 0
b 0
f 0
wmc 6

1 Method

Rating   Name   Duplication   Size   Complexity  
B validate() 0 19 6
1
<?php
2
3
namespace Silverback\ApiComponentBundle\Validator\Constraints;
4
5
use Silverback\ApiComponentBundle\Entity\ValidComponentInterface;
6
use Silverback\ApiComponentBundle\Validator\ClassNameValidator;
7
use Symfony\Component\Validator\Constraint;
8
use Symfony\Component\Validator\ConstraintValidator;
9
10
class ComponentLocationValidator extends ConstraintValidator
11
{
12
    /**
13
     * @param \Silverback\ApiComponentBundle\Entity\Content\ComponentLocation $entity
14
     * @param Constraint $constraint
15
     * @throws \ReflectionException
16
     */
17
    public function validate($entity, Constraint $constraint): void
18
    {
19
        $content = $entity->getContent();
20
        if ($content instanceof ValidComponentInterface) {
21
            $validComponents = $content->getValidComponents();
22
            if ($validComponents->count()) {
23
                $componentIsValid = false;
24
                $component = $entity->getComponent();
25
                foreach ($validComponents as $validComponent) {
26
                    if (ClassNameValidator::isClassSame($validComponent, $component)) {
27
                        $componentIsValid = true;
28
                        break;
29
                    }
30
                }
31
                if (!$componentIsValid) {
32
                    $this->context->buildViolation($constraint->message)
33
                        ->atPath('component')
34
                        ->setParameter('{{ string }}', implode(', ', $validComponents->toArray()))
35
                        ->addViolation();
36
                }
37
            }
38
        }
39
    }
40
}
41