Lines
75.86%
22 / 29
Functions and Methods
80.00%
4 / 5
Classes and Traits
0.00%
0 / 1
| Name | Lines | Functions and Methods | CRAP | Classes and Traits | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| RequestRelationList | 75.86% | 22 / 29 | 80.00% | 4 / 5 | 21.06 | 0.00% | 0 / 1 | |||
| hasRequest | 100.00% | 5 / 5 | 100.00% | 1 / 1 | 3 | |||||
| hasProvider | 100.00% | 5 / 5 | 100.00% | 1 / 1 | 3 | |||||
| getRequestList | 100.00% | 6 / 6 | 100.00% | 1 / 1 | 3 | |||||
| getProviderList | 100.00% | 6 / 6 | 100.00% | 1 / 1 | 3 | |||||
| getFilteredByRequestAndProvider | 0.00% | 0 / 7 | 0.00% | 0 / 1 | 30 | |||||
| 1 | <?php | |
| 2 | ||
| 3 | namespace BO\Zmsentities\Collection; | |
| 4 | ||
| 5 | /** | |
| 6 | * @extends Base<\BO\Zmsentities\RequestRelation> | |
| 7 | */ | |
| 8 | class RequestRelationList extends Base | |
| 9 | { | |
| 10 | public const string ENTITY_CLASS = '\BO\Zmsentities\RequestRelation'; | |
| 11 | ||
| 12 | public function hasRequest(mixed $requestIdCsv): bool | |
| 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(mixed $providerIdCsv): bool | |
| 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(): \BO\Zmsentities\Collection\RequestList | |
| 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(): \BO\Zmsentities\Collection\ProviderList | |
| 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(mixed $requestList, mixed $providerList): self | |
| 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 | } |