Code Duplication    Length = 52-57 lines in 2 locations

src/Offer/Events/AbstractLabelsImported.php 1 location

@@ 10-61 (lines=52) @@
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
    final public function __construct(
18
        string $organizerId,
19
        Labels $labels
20
    ) {
21
        parent::__construct($organizerId);
22
        $this->labels = $labels;
23
    }
24
25
    public function getLabels(): Labels
26
    {
27
        return $this->labels;
28
    }
29
30
    public static function deserialize(array $data): AbstractLabelsImported
31
    {
32
        $labels = new Labels();
33
        foreach ($data['labels'] as $label) {
34
            $labels = $labels->with(new Label(
35
                new LabelName($label['label']),
36
                $label['visibility']
37
            ));
38
        }
39
40
        return new static(
41
            $data['item_id'],
42
            $labels
43
        );
44
    }
45
46
    public function serialize(): array
47
    {
48
        $labels = [];
49
        foreach ($this->getLabels() as $label) {
50
            /** @var Label $label */
51
            $labels[] = [
52
                'label' => $label->getName()->toString(),
53
                'visibility' => $label->isVisible(),
54
            ];
55
        }
56
57
        return parent::serialize() + [
58
            'labels' => $labels,
59
        ];
60
    }
61
}
62

src/Organizer/Events/LabelsImported.php 1 location

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