Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
75.86% covered (warning)
75.86%
22 / 29
80.00% covered (warning)
80.00%
4 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
RequestRelationList
75.86% covered (warning)
75.86%
22 / 29
80.00% covered (warning)
80.00%
4 / 5
21.06
0.00% covered (danger)
0.00%
0 / 1
 hasRequest
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 hasProvider
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 getRequestList
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 getProviderList
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 getFilteredByRequestAndProvider
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3namespace BO\Zmsentities\Collection;
4
5/**
6 * @extends Base<\BO\Zmsentities\RequestRelation>
7 */
8class RequestRelationList extends Base
9{
10    public const ENTITY_CLASS = '\BO\Zmsentities\RequestRelation';
11
12    public function hasRequest($requestIdCsv)
13    {
14        $requestIdCsv = explode(',', $requestIdCsv);
15        foreach ($requestIdCsv as $requestId) {
16            if (!in_array($requestId, $this->getRequestList()->getIds())) {
17                return false;
18            }
19        }
20        return true;
21    }
22
23    public function hasProvider($providerIdCsv)
24    {
25        $providerIdCsv = explode(',', $providerIdCsv);
26        foreach ($providerIdCsv as $providerId) {
27            if (!in_array($providerId, $this->getProviderList()->getIds())) {
28                return false;
29            }
30        }
31        return true;
32    }
33
34    public function getRequestList()
35    {
36        $requestList = new RequestList();
37        foreach ($this as $item) {
38            if (isset($item['request'])) {
39                $entity = new \BO\Zmsentities\Request($item['request']);
40                $requestList->addEntity($entity);
41            }
42        }
43        return $requestList->withUniqueRequests();
44    }
45
46    public function getProviderList()
47    {
48        $providerList = new ProviderList();
49        foreach ($this as $item) {
50            if (isset($item['provider'])) {
51                $entity = new \BO\Zmsentities\Provider($item['provider']);
52                $providerList->addEntity($entity);
53            }
54        }
55        return $providerList->withUniqueProvider();
56    }
57
58    public function getFilteredByRequestAndProvider($requestList, $providerList)
59    {
60        $list = new self();
61        foreach ($requestList as $request) {
62            foreach ($this as $item) {
63                if (
64                    $request->getId() == $item['request']['id'] &&
65                    $providerList->hasProvider($item['provider']['id'])
66                ) {
67                    $list->addEntity($item);
68                }
69            }
70        }
71        return $list;
72    }
73}