Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
48 / 48 |
|
100.00% |
6 / 6 |
CRAP | |
100.00% |
1 / 1 |
Provider | |
100.00% |
48 / 48 |
|
100.00% |
6 / 6 |
11 | |
100.00% |
1 / 1 |
getEntityMapping | |
100.00% |
18 / 18 |
|
100.00% |
1 / 1 |
2 | |||
addConditionIsAssigned | |
100.00% |
11 / 11 |
|
100.00% |
1 / 1 |
3 | |||
addConditionProviderId | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
addConditionProviderSource | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
addConditionRequestCsv | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
1 | |||
postProcess | |
100.00% |
3 / 3 |
|
100.00% |
1 / 1 |
3 |
1 | <?php |
2 | |
3 | namespace BO\Zmsdb\Query; |
4 | |
5 | class Provider extends Base |
6 | { |
7 | const TABLE = 'provider'; |
8 | |
9 | public function getEntityMapping() |
10 | { |
11 | $mapping = [ |
12 | 'contact__city' => 'provider.contact__city', |
13 | 'contact__country' => self::expression('"Germany"'), |
14 | 'contact__name' => 'provider.name', |
15 | 'contact__postalCode' => 'provider.contact__postalCode', |
16 | 'contact__region' => 'provider.contact__region', |
17 | 'contact__street' => 'provider.contact__street', |
18 | 'contact__streetNumber' => 'provider.contact__streetNumber', |
19 | 'id' => 'provider.id', |
20 | 'link' => 'provider.link', |
21 | 'name' => 'provider.name', |
22 | 'displayName' => 'provider.display_name', |
23 | 'source' => 'provider.source', |
24 | 'parent_id' => 'provider.parent_id' |
25 | ]; |
26 | if ($this->getResolveLevel() > 0) { |
27 | $mapping['data'] = 'provider.data'; |
28 | } |
29 | return $mapping; |
30 | } |
31 | |
32 | public function addConditionIsAssigned($isAssigned) |
33 | { |
34 | $this->leftJoin( |
35 | new Alias(Scope::TABLE, 'assignedscope'), |
36 | 'provider.id', |
37 | '=', |
38 | 'assignedscope.InfoDienstleisterID' |
39 | ); |
40 | if (true === $isAssigned) { |
41 | $this->query->where('assignedscope.InfoDienstleisterID', 'IS NOT', null); |
42 | } elseif (false === $isAssigned) { |
43 | $this->query->where('assignedscope.InfoDienstleisterID', 'IS', null); |
44 | } |
45 | return $this; |
46 | } |
47 | |
48 | public function addConditionProviderId($providerId) |
49 | { |
50 | $this->query->where('provider.id', '=', $providerId); |
51 | return $this; |
52 | } |
53 | |
54 | public function addConditionProviderSource($source) |
55 | { |
56 | $this->query->where('provider.source', '=', $source); |
57 | return $this; |
58 | } |
59 | |
60 | /** |
61 | * @todo find calls and implement "sourceName"-parameter to remove default value |
62 | */ |
63 | public function addConditionRequestCsv($requestIdCsv, $sourceName = 'dldb') |
64 | { |
65 | $requestIdList = explode(',', $requestIdCsv); |
66 | $this->leftJoin( |
67 | new Alias("request_provider", 'xprovider'), |
68 | 'provider.id', |
69 | '=', |
70 | 'xprovider.provider__id' |
71 | ); |
72 | $this->query->where(function (\BO\Zmsdb\Query\Builder\ConditionBuilder $query) use ($requestIdList, $sourceName) { |
73 | $query->andWith('xprovider.request__id', 'IN', $requestIdList); |
74 | $query->andWith('xprovider.bookable', '=', 1); |
75 | $query->andWith('xprovider.source', '=', $sourceName); |
76 | }); |
77 | } |
78 | |
79 | public function postProcess($data) |
80 | { |
81 | if (isset($data[$this->getPrefixed('data')]) && $data[$this->getPrefixed('data')]) { |
82 | $data[$this->getPrefixed('data')] = json_decode($data[$this->getPrefixed('data')], true); |
83 | } |
84 | return $data; |
85 | } |
86 | } |