Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
83.33% covered (warning)
83.33%
35 / 42
66.67% covered (warning)
66.67%
8 / 12
CRAP
0.00% covered (danger)
0.00%
0 / 1
Provider
83.33% covered (warning)
83.33%
35 / 42
66.67% covered (warning)
66.67%
8 / 12
25.45
0.00% covered (danger)
0.00%
0 / 1
 getDefaults
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 addData
92.31% covered (success)
92.31%
12 / 13
0.00% covered (danger)
0.00%
0 / 1
8.03
 hasRequest
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getRequestList
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
4
 getSource
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDisplayName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getContact
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getLink
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getAdditionalData
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getSlotTimeInMinutes
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getParentId
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace BO\Zmsentities;
4
5class Provider extends Schema\Entity
6{
7    public const PRIMARY = 'id';
8
9    public static $schema = "provider.json";
10
11    #[\Override]
12    public function getDefaults()
13    {
14        return [
15            'id' => 0,
16            'name' => '',
17            'source' => 'dldb',
18            'parent_id' => null
19        ];
20    }
21
22    #[\Override]
23    public function addData($input)
24    {
25        $refString = '$ref';
26        if (
27            (is_array($input) || $input instanceof \ArrayAccess)
28            && isset($input[$refString])
29            && (!isset($input['id']) || !isset($input['source']))
30        ) {
31            $providerRef = $input[$refString];
32            $providerId = preg_replace('#^.*/(\d+)/$#', '$1', $providerRef);
33            $input['id'] = $providerId;
34            $input['source'] = preg_replace('#^.*provider/([^/]+)/\d+/$#', '$1', $providerRef);
35        }
36        if (isset($input[$refString])) {
37            unset($input[$refString]);
38        }
39        if (isset($input['parent_id'])) {
40            $this['parent_id'] = $input['parent_id'];
41        }
42        return parent::addData($input);
43    }
44
45    public function hasRequest($requestId)
46    {
47        return $this->getRequestList()->hasRequests($requestId);
48    }
49
50    public function getRequestList()
51    {
52        $requestList = new \BO\Zmsentities\Collection\RequestList();
53        if (isset($this['data']['services'])) {
54            foreach ($this['data']['services'] as $item) {
55                $request = new Request([
56                    'id' => $item['service'],
57                    'source' => 'dldb',
58                    'link' => isset($item['url']) ? $item['url'] : '',
59                ]);
60                $requestList->addEntity($request);
61            }
62        }
63        return $requestList;
64    }
65
66    public function getSource()
67    {
68        return $this->toProperty()->source->get();
69    }
70
71    public function getName()
72    {
73        return $this->toProperty()->name->get();
74    }
75
76    public function getDisplayName()
77    {
78        return $this->toProperty()->display_name->get();
79    }
80
81    public function getContact()
82    {
83        $contact = $this->toProperty()->contact->get();
84        return new Contact($contact);
85    }
86
87    public function getLink()
88    {
89        return $this->toProperty()->link->get();
90    }
91
92    public function getAdditionalData()
93    {
94        return $this->toProperty()->data->get();
95    }
96
97    public function getSlotTimeInMinutes()
98    {
99        $data = $this->getAdditionalData();
100        if (! is_array($data)) {
101            return null;
102        }
103        return $data['slotTimeInMinutes'] ?? null;
104    }
105
106    public function getParentId()
107    {
108        return $this->toProperty()->parent_id->get();
109    }
110}