Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
97.67% covered (success)
97.67%
42 / 43
85.71% covered (warning)
85.71%
6 / 7
CRAP
0.00% covered (danger)
0.00%
0 / 1
ProviderList
97.67% covered (success)
97.67%
42 / 43
85.71% covered (warning)
85.71%
6 / 7
24
0.00% covered (danger)
0.00%
0 / 1
 hasProvider
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 hasProviderStrict
80.00% covered (warning)
80.00%
4 / 5
0.00% covered (danger)
0.00%
0 / 1
3.07
 hasRequest
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
4
 withMatchingByList
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 withUniqueProvider
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
4
 withDataAsObject
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
6
 sortById
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace BO\Zmsentities\Collection;
4
5class ProviderList extends Base
6{
7    const ENTITY_CLASS = '\BO\Zmsentities\Provider';
8
9    public function hasProvider($providerIdCsv)
10    {
11        $providerFound = false;
12        $providerIds = explode(',', $providerIdCsv);
13        foreach ($providerIds as $providerId) {
14            if (in_array($providerId, $this->getIds())) {
15                $providerFound = true;
16            }
17        }
18        return $providerFound;
19    }
20
21    public function hasProviderStrict($providerIdCsv)
22    {
23        $providerIds = explode(',', $providerIdCsv);
24        foreach ($providerIds as $providerId) {
25            if (! in_array($providerId, $this->getIds())) {
26                return false;
27            }
28        }
29        return true;
30    }
31
32    public function hasRequest($requestIdCsv)
33    {
34        $requestIds = explode(',', $requestIdCsv);
35        foreach ($this as $entity) {
36            foreach ($requestIds as $requestId) {
37                if ($entity->hasRequest($requestId)) {
38                    return true;
39                }
40            }
41        }
42        return false;
43    }
44
45    public function withMatchingByList($providerIdCsv)
46    {
47        $collection = new self();
48        $providerIds = explode(',', $providerIdCsv);
49        foreach ($providerIds as $providerId) {
50            if (in_array($providerId, $this->getIds())) {
51                $collection->addEntity($this->getEntity($providerId));
52            }
53        }
54        return $collection;
55    }
56
57    public function withUniqueProvider()
58    {
59        $list = new self();
60        foreach ($this as $provider) {
61            if ($provider && ! $list->hasEntity($provider->id)) {
62                $list->addEntity($provider);
63            }
64        }
65        return $list;
66    }
67
68    public function withDataAsObject()
69    {
70        $list = new self();
71        foreach ($this as $provider) {
72            if (isset($provider['data']) && '{}' != $provider->data) {
73                if (is_string($provider->data)) {
74                    $provider->data = json_decode($provider->data);
75                } elseif (is_array($provider->data)) {
76                    $provider->data = json_decode(json_encode($provider->data, JSON_FORCE_OBJECT));
77                }
78            } else {
79                unset($provider['data']);
80            }
81            $list->addEntity($provider);
82        }
83        return $list;
84    }
85
86    public function sortById()
87    {
88        $list = clone $this;
89        $list->uasort(function ($a, $b) {
90            return ($a['id'] - $b['id']);
91        });
92        return (new self())->addList($list);
93    }
94}