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

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