CryptoRatesCollectionBuilder   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
c 1
b 0
f 0
dl 0
loc 26
ccs 10
cts 10
cp 1
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A build() 0 19 5
1
<?php
2
3
4
namespace Sarnado\Converter\Builders;
5
6
7
use Sarnado\Converter\Collections\CryptoRatesCollection;
8
use Sarnado\Converter\Contracts\CollectionBuilderInterface;
9
10
/**
11
 * Class CryptoRatesCollectionBuilder
12
 * @package Sarnado\Converter\Builders
13
 */
14
class CryptoRatesCollectionBuilder implements CollectionBuilderInterface
15
{
16
17
    /**
18
     * @param array $data
19
     * @return CryptoRatesCollection
20
     */
21 9
    public static function build(array $data = []): CryptoRatesCollection
22
    {
23 9
        $result = [];
24 9
        if (!empty($data))
25
        {
26 9
            foreach ($data as $exchange => $rates)
27
            {
28 9
                if (!empty($rates))
29
                {
30 9
                    foreach ($rates as $pair => $rate)
31
                    {
32 9
                        $object = CryptoRateObjectBuilder::build($rate);
33 6
                        $key = $object->getExchange() . ':' . $object->getCrypto() . '_' . $object->getFiat();
34 6
                        $result[$key] = $object;
35
                    }
36
                }
37
            }
38
        }
39 6
        return new CryptoRatesCollection($result);
40
    }
41
}
42