Code Duplication    Length = 32-32 lines in 2 locations

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

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

src/Organizer/OrganizerLDProjector.php 1 location

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