Code Duplication    Length = 32-32 lines in 2 locations

src/Organizer/OrganizerLDProjector.php 1 location

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

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

@@ 424-455 (lines=32) @@
421
     * @param AbstractLabelRemoved $labelRemoved
422
     * @return JsonDocument
423
     */
424
    protected function applyLabelRemoved(AbstractLabelRemoved $labelRemoved)
425
    {
426
        $document = $this->loadDocumentFromRepository($labelRemoved);
427
428
        $offerLd = $document->getBody();
429
430
        // Don't presume that the label visibility is correct when removing.
431
        // So iterate over both the visible and invisible labels.
432
        $labelsProperties = ['labels', 'hiddenLabels'];
433
434
        foreach ($labelsProperties as $labelsProperty) {
435
            if (isset($offerLd->{$labelsProperty}) && is_array($offerLd->{$labelsProperty})) {
436
                $offerLd->{$labelsProperty} = array_filter(
437
                    $offerLd->{$labelsProperty},
438
                    function ($label) use ($labelRemoved) {
439
                        return !$labelRemoved->getLabel()->equals(
440
                            new Label($label)
441
                        );
442
                    }
443
                );
444
                // Ensure array keys start with 0 so json_encode() does encode it
445
                // as an array and not as an object.
446
                if (count($offerLd->{$labelsProperty}) > 0) {
447
                    $offerLd->{$labelsProperty} = array_values($offerLd->{$labelsProperty});
448
                } else {
449
                    unset($offerLd->{$labelsProperty});
450
                }
451
            }
452
        }
453
454
        return $document->withBody($offerLd);
455
    }
456
457
    /**
458
     * Apply the imageAdded event to the item repository.