Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
52 / 52
100.00% covered (success)
100.00%
8 / 8
CRAP
100.00% covered (success)
100.00%
1 / 1
Request
100.00% covered (success)
100.00%
52 / 52
100.00% covered (success)
100.00%
8 / 8
12
100.00% covered (success)
100.00%
1 / 1
 getEntityMapping
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
2
 addConditionRequestId
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addConditionProcessId
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 addConditionArchiveId
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 addConditionProvider
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
1
 addConditionRequestSource
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 postProcess
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
3
 addConditionIds
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace BO\Zmsdb\Query;
4
5class Request extends Base
6{
7    const TABLE = 'request';
8
9    const BATABLE = 'buergeranliegen';
10
11    const QUERY_BY_PROCESSID = 'SELECT
12            ba.`AnliegenID` AS id
13        FROM `buergeranliegen` ba
14        WHERE
15            ba.`BuergerID` = :process_id
16    ';
17
18    public function getEntityMapping()
19    {
20        $mapping = [
21            'id' => 'request.id',
22            'link' => 'request.link',
23            'name' => 'request.name',
24            'group' => 'request.group',
25            'source' => 'request.source',
26            'parent_id' => 'request.parent_id',
27            'variant_id' => 'request.variant_id',
28        ];
29        if ($this->getResolveLevel() > 0) {
30            $mapping['data'] = 'request.data';
31        }
32        return $mapping;
33    }
34
35    public function addConditionRequestId($requestId)
36    {
37        $this->query->where('id', '=', $requestId);
38        return $this;
39    }
40
41    public function addConditionProcessId($processId)
42    {
43        $this->leftJoin(
44            new Alias("buergeranliegen", 'buergeranliegen'),
45            self::expression('
46                buergeranliegen.AnliegenID = request.id
47                AND buergeranliegen.source = request.source
48            ')
49        );
50        $this->query->where('buergeranliegen.BuergerID', '=', $processId);
51        $this->query->orderBy('buergeranliegen.BuergeranliegenID', 'ASC');
52        return $this;
53    }
54
55    public function addConditionArchiveId($archiveId)
56    {
57        $this->leftJoin(
58            new Alias("buergeranliegen", 'buergeranliegen'),
59            self::expression('
60                buergeranliegen.AnliegenID = request.id
61                AND buergeranliegen.source = request.source
62            ')
63        );
64        $this->query->where('buergeranliegen.BuergerarchivID', '=', $archiveId);
65        $this->query->orderBy('buergeranliegen.BuergeranliegenID', 'ASC');
66        return $this;
67    }
68
69    public function addConditionProvider($providerId, $source)
70    {
71        $this->leftJoin(
72            new Alias("request_provider", 'xrequest'),
73            'request.id',
74            '=',
75            'xrequest.request__id'
76        );
77        $this->query->where(function (\BO\Zmsdb\Query\Builder\ConditionBuilder $query) use ($providerId, $source) {
78            $query->andWith('xrequest.provider__id', '=', $providerId);
79            $query->andWith('xrequest.source', '=', $source);
80            $query->andWith('xrequest.bookable', '=', 1);
81        });
82        return $this;
83    }
84
85    public function addConditionRequestSource($source)
86    {
87        $this->query->where('request.source', '=', $source);
88        return $this;
89    }
90
91    public function postProcess($data)
92    {
93        if (isset($data[$this->getPrefixed('data')]) && $data[$this->getPrefixed('data')]) {
94            $data[$this->getPrefixed('data')] = json_decode($data[$this->getPrefixed('data')], true);
95        }
96        return $data;
97    }
98
99    public function addConditionIds($ids)
100    {
101        $this->query->where(function (\BO\Zmsdb\Query\Builder\ConditionBuilder $query) use ($ids) {
102            foreach ($ids as $id) {
103                $query->orWith('request.id', '=', $id);
104            }
105        });
106
107        return $this;
108    }
109}