Code Duplication    Length = 32-32 lines in 2 locations

src/Organizer/OrganizerLDProjector.php 1 location

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

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

@@ 313-344 (lines=32) @@
310
     * @param AbstractLabelRemoved $labelRemoved
311
     * @return JsonDocument
312
     */
313
    protected function applyLabelRemoved(AbstractLabelRemoved $labelRemoved)
314
    {
315
        $document = $this->loadDocumentFromRepository($labelRemoved);
316
317
        $offerLd = $document->getBody();
318
319
        // Don't presume that the label visibility is correct when removing.
320
        // So iterate over both the visible and invisible labels.
321
        $labelsProperties = ['labels', 'hiddenLabels'];
322
323
        foreach ($labelsProperties as $labelsProperty) {
324
            if (isset($offerLd->{$labelsProperty}) && is_array($offerLd->{$labelsProperty})) {
325
                $offerLd->{$labelsProperty} = array_filter(
326
                    $offerLd->{$labelsProperty},
327
                    function ($label) use ($labelRemoved) {
328
                        return !$labelRemoved->getLabel()->equals(
329
                            new Label($label)
330
                        );
331
                    }
332
                );
333
                // Ensure array keys start with 0 so json_encode() does encode it
334
                // as an array and not as an object.
335
                if (count($offerLd->{$labelsProperty}) > 0) {
336
                    $offerLd->{$labelsProperty} = array_values($offerLd->{$labelsProperty});
337
                } else {
338
                    unset($offerLd->{$labelsProperty});
339
                }
340
            }
341
        }
342
343
        return $document->withBody($offerLd);
344
    }
345
346
    /**
347
     * Apply the imageAdded event to the item repository.