Code Duplication    Length = 32-32 lines in 2 locations

src/Organizer/OrganizerLDProjector.php 1 location

@@ 370-401 (lines=32) @@
367
    /**
368
     * @param LabelRemoved $labelRemoved
369
     */
370
    private function applyLabelRemoved(LabelRemoved $labelRemoved)
371
    {
372
        $document = $this->repository->get($labelRemoved->getOrganizerId());
373
        $jsonLD = $document->getBody();
374
375
        // Don't presume that the label visibility is correct when removing.
376
        // So iterate over both the visible and invisible labels.
377
        $labelsProperties = ['labels', 'hiddenLabels'];
378
379
        foreach ($labelsProperties as $labelsProperty) {
380
            if (isset($jsonLD->{$labelsProperty}) && is_array($jsonLD->{$labelsProperty})) {
381
                $jsonLD->{$labelsProperty} = array_filter(
382
                    $jsonLD->{$labelsProperty},
383
                    function ($label) use ($labelRemoved) {
384
                        return !$labelRemoved->getLabel()->equals(
385
                            new Label($label)
386
                        );
387
                    }
388
                );
389
390
                // Ensure array keys start with 0 so json_encode() does encode it
391
                // as an array and not as an object.
392
                if (count($jsonLD->{$labelsProperty}) > 0) {
393
                    $jsonLD->{$labelsProperty} = array_values($jsonLD->{$labelsProperty});
394
                } else {
395
                    unset($jsonLD->{$labelsProperty});
396
                }
397
            }
398
        }
399
400
        return $document->withBody($jsonLD);
401
    }
402
403
    /**
404
     * @param OrganizerDeleted $organizerDeleted

src/Offer/ReadModel/JSONLD/OfferLDProjector.php 1 location

@@ 441-472 (lines=32) @@
438
     * @param AbstractLabelRemoved $labelRemoved
439
     * @return JsonDocument
440
     */
441
    protected function applyLabelRemoved(AbstractLabelRemoved $labelRemoved)
442
    {
443
        $document = $this->loadDocumentFromRepository($labelRemoved);
444
445
        $offerLd = $document->getBody();
446
447
        // Don't presume that the label visibility is correct when removing.
448
        // So iterate over both the visible and invisible labels.
449
        $labelsProperties = ['labels', 'hiddenLabels'];
450
451
        foreach ($labelsProperties as $labelsProperty) {
452
            if (isset($offerLd->{$labelsProperty}) && is_array($offerLd->{$labelsProperty})) {
453
                $offerLd->{$labelsProperty} = array_filter(
454
                    $offerLd->{$labelsProperty},
455
                    function ($label) use ($labelRemoved) {
456
                        return !$labelRemoved->getLabel()->equals(
457
                            new Label($label)
458
                        );
459
                    }
460
                );
461
                // Ensure array keys start with 0 so json_encode() does encode it
462
                // as an array and not as an object.
463
                if (count($offerLd->{$labelsProperty}) > 0) {
464
                    $offerLd->{$labelsProperty} = array_values($offerLd->{$labelsProperty});
465
                } else {
466
                    unset($offerLd->{$labelsProperty});
467
                }
468
            }
469
        }
470
471
        return $document->withBody($offerLd);
472
    }
473
474
    /**
475
     * Apply the imageAdded event to the item repository.