Passed
Push — master ( c595fe...762937 )
by Siim
14:53
created

AbstractRequestListDto::populate()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 8
nc 5
nop 1
dl 0
loc 13
rs 9.6111
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: siim
5
 * Date: 29.01.19
6
 * Time: 9:45
7
 */
8
9
namespace Sf4\Api\Dto\Request;
10
11
use Sf4\Api\Dto\Filter\FilterInterface;
12
use Sf4\Populator\Populator;
13
14
abstract class AbstractRequestListDto extends AbstractRequestDto implements RequestListDtoInterface
15
{
16
    /** @var FilterInterface $filter */
17
    protected $filter;
18
19
    /**
20
     * @param array $data
21
     * @throws \ReflectionException
22
     */
23
    public function populate(array $data): void
24
    {
25
        if(false === isset($data[static::FIELD_FILTER])) {
26
            return ;
27
        }
28
        $filterData = $data[static::FIELD_FILTER];
29
30
        if(true === is_object($filterData)) {
31
            $populator = new Populator();
32
            $filterData = $populator->unpopulate($filterData);
33
        }
34
        if(isset($filterData) && is_array($filterData)) {
35
            $this->getFilter()->populate($filterData);
36
        }
37
    }
38
39
    /**
40
     * @return array
41
     */
42
    public function toArray(): array
43
    {
44
        $filterData = [];
45
        if($this->getFilter()) {
46
            $filterData = $this->getFilter()->toArray();
47
        }
48
        return [
49
            static::FIELD_FILTER => $filterData
50
        ];
51
    }
52
53
    /**
54
     * @return FilterInterface|null
55
     */
56
    public function getFilter(): ?FilterInterface
57
    {
58
        return $this->filter;
59
    }
60
61
    /**
62
     * @param FilterInterface $filter
63
     */
64
    public function setFilter(FilterInterface $filter): void
65
    {
66
        $this->filter = $filter;
67
    }
68
}
69