TagsToJsonTransformer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 16
dl 0
loc 44
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A reverseTransform() 0 17 2
A transform() 0 10 2
1
<?php
2
3
namespace App\Form\DataTransformer;
4
5
use App\Entity\Tag;
6
use Doctrine\ORM\EntityManagerInterface;
7
use Symfony\Component\Form\DataTransformerInterface;
8
9
class TagsToJsonTransformer implements DataTransformerInterface
10
{
11
12
    /**
13
     * @var EntityManagerInterface
14
     */
15
    private $em;
16
17
    public function __construct(EntityManagerInterface $em)
18
    {
19
20
        $this->em = $em;
21
    }
22
23
    public function transform($tagsArray)
24
    {
25
        $jsonTags = [];
26
        /**
27
         * @var $tag Tag
28
         */
29
        foreach ($tagsArray as $tag) {
30
            array_push($jsonTags, $tag->getName());
31
        }
32
        return json_encode($jsonTags);
33
34
    }
35
36
    public function reverseTransform($jsonTags)
37
    {
38
        $tagsArray = json_decode($jsonTags);
39
40
        $tags = $this->em->getRepository(Tag::class)->findBy([
41
            'name' => $tagsArray
42
        ]);
43
44
        $newTags = array_diff($tagsArray, $tags);
45
46
        foreach ($newTags as $tagName) {
47
            $tag = new Tag();
48
            $tag->setName($tagName);
49
            $tags[] = $tag;
50
        }
51
52
        return $tags;
53
54
    }
55
56
57
}