Passed
Push — master ( e6ff17...562f58 )
by Gabriel
02:33
created

Codes::add()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Waredesk\Collections\Products\Variants;
4
5
use Waredesk\Collection;
6
use Waredesk\Models\Product\Variant\Code;
7
use JsonSerializable;
8
9
/**
10
 * @method Code first()
11
 * @method Code current()
12
 * @method Code next()
13
 */
14
class Codes extends Collection
15
{
16
    /**
17
     * @param Code|\Waredesk\Models\Code $item
18
     */
19 1
    public function add($item)
20
    {
21 1
        parent::add($item);
22 1
    }
23
24
    public function jsonSerialize()
25
    {
26 3
        return array_map(function (JsonSerializable $item) {
27 1
            $finalItem = $item->jsonSerialize();
28 1
            if (isset($finalItem['id'])) {
29 1
                $finalItem = array_merge(['code' => $finalItem['id']], $finalItem);
30 1
                unset($finalItem['id']);
31 1
                $finalItem = $this->serializeElements($finalItem);
32
            }
33 1
            return $finalItem;
34 3
        }, $this->items);
35
    }
36
37 1
    private function serializeElements(array $item): array
38
    {
39 1
        if (isset($item['elements']) && is_array($item['elements'])) {
40 1
            $finalElements = [];
41 1
            foreach ($item['elements'] as $element) {
42 1
                if (isset($element['id'])) {
43 1
                    $element = array_merge(['element' => $element['id']], $element);
44 1
                    unset($element['id']);
45
                }
46 1
                $finalElements[] = $element;
47
            }
48 1
            $item['elements'] = $finalElements;
49
        }
50 1
        return $item;
51
    }
52
}
53