Code Duplication    Length = 65-73 lines in 2 locations

src/Offer/Events/AbstractLabelsImported.php 1 location

@@ 10-74 (lines=65) @@
7
use CultuurNet\UDB3\Model\ValueObject\Taxonomy\Label\LabelName;
8
use CultuurNet\UDB3\Model\ValueObject\Taxonomy\Label\Labels;
9
10
abstract class AbstractLabelsImported extends AbstractEvent implements LabelsImportedEventInterface
11
{
12
    /**
13
     * @var Labels
14
     */
15
    private $labels;
16
17
    /**
18
     * @param string $organizerId
19
     * @param Labels $labels
20
     */
21
    public function __construct(
22
        $organizerId,
23
        Labels $labels
24
    ) {
25
        parent::__construct($organizerId);
26
        $this->labels = $labels;
27
    }
28
29
    /**
30
     * @return Labels
31
     */
32
    public function getLabels()
33
    {
34
        return $this->labels;
35
    }
36
37
    /**
38
     * {@inheritdoc}
39
     */
40
    public static function deserialize(array $data)
41
    {
42
        $labels = new Labels();
43
        foreach ($data['labels'] as $label) {
44
            $labels = $labels->with(new Label(
45
                new LabelName($label['label']),
46
                $label['visibility']
47
            ));
48
        }
49
50
        return new static(
51
            $data['item_id'],
52
            $labels
53
        );
54
    }
55
56
    /**
57
     * {@inheritdoc}
58
     */
59
    public function serialize()
60
    {
61
        $labels = [];
62
        foreach ($this->getLabels() as $label) {
63
            /** @var Label $label */
64
            $labels[] = [
65
                'label' => $label->getName()->toString(),
66
                'visibility' => $label->isVisible(),
67
            ];
68
        }
69
70
        return parent::serialize() + [
71
                'labels' => $labels,
72
            ];
73
    }
74
}
75

src/Organizer/Events/LabelsImported.php 1 location

@@ 10-82 (lines=73) @@
7
use CultuurNet\UDB3\Model\ValueObject\Taxonomy\Label\LabelName;
8
use CultuurNet\UDB3\Model\ValueObject\Taxonomy\Label\Labels;
9
10
class LabelsImported extends OrganizerEvent implements LabelsImportedEventInterface
11
{
12
    /**
13
     * @var Labels
14
     */
15
    private $labels;
16
17
    /**
18
     * @param string $organizerId
19
     * @param Labels $labels
20
     */
21
    public function __construct(
22
        $organizerId,
23
        Labels $labels
24
    ) {
25
        parent::__construct($organizerId);
26
        $this->labels = $labels;
27
    }
28
29
    /**
30
     * @return string
31
     */
32
    public function getItemId()
33
    {
34
        return $this->getOrganizerId();
35
    }
36
37
    /**
38
     * @return Labels
39
     */
40
    public function getLabels()
41
    {
42
        return $this->labels;
43
    }
44
45
    /**
46
     * {@inheritdoc}
47
     */
48
    public static function deserialize(array $data)
49
    {
50
        $labels = new Labels();
51
        foreach ($data['labels'] as $label) {
52
            $labels = $labels->with(new Label(
53
                new LabelName($label['label']),
54
                $label['visibility']
55
            ));
56
        }
57
58
        return new static(
59
            $data['organizer_id'],
60
            $labels
61
        );
62
    }
63
64
    /**
65
     * {@inheritdoc}
66
     */
67
    public function serialize()
68
    {
69
        $labels = [];
70
        foreach ($this->getLabels() as $label) {
71
            /** @var Label $label */
72
            $labels[] = [
73
                'label' => $label->getName()->toString(),
74
                'visibility' => $label->isVisible(),
75
            ];
76
        }
77
78
        return parent::serialize() + [
79
            'labels' => $labels,
80
        ];
81
    }
82
}
83