Code Duplication    Length = 32-33 lines in 2 locations

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

@@ 281-312 (lines=32) @@
278
    /**
279
     * @param AbstractLabelRemoved $labelRemoved
280
     */
281
    protected function applyLabelRemoved(AbstractLabelRemoved $labelRemoved)
282
    {
283
        $document = $this->loadDocumentFromRepository($labelRemoved);
284
285
        $offerLd = $document->getBody();
286
287
        // Don't presume that the label visibility is correct when removing.
288
        // So iterate over both the visible and invisible labels.
289
        $labelsProperties = ['labels', 'hiddenLabels'];
290
291
        foreach ($labelsProperties as $labelsProperty) {
292
            if (isset($offerLd->{$labelsProperty}) && is_array($offerLd->{$labelsProperty})) {
293
                $offerLd->{$labelsProperty} = array_filter(
294
                    $offerLd->{$labelsProperty},
295
                    function ($label) use ($labelRemoved) {
296
                        return !$labelRemoved->getLabel()->equals(
297
                            new Label($label)
298
                        );
299
                    }
300
                );
301
                // Ensure array keys start with 0 so json_encode() does encode it
302
                // as an array and not as an object.
303
                if (count($offerLd->{$labelsProperty}) > 0) {
304
                    $offerLd->{$labelsProperty} = array_values($offerLd->{$labelsProperty});
305
                } else {
306
                    unset($offerLd->{$labelsProperty});
307
                }
308
            }
309
        }
310
311
        $this->repository->save($document->withBody($offerLd));
312
    }
313
314
    /**
315
     * Apply the imageAdded event to the item repository.

src/Organizer/OrganizerLDProjector.php 1 location

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