Completed
Push — master ( f7bdb9...8d2b6e )
by Andrii
10:42
created

ResourceHelper::groupResourcesForChart()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 9.7666
c 0
b 0
f 0
cc 3
nc 4
nop 1
1
<?php
2
3
namespace hipanel\modules\finance\helpers;
4
5
use yii\base\InvalidConfigException;
6
use yii\helpers\ArrayHelper;
7
use hipanel\modules\finance\models\proxy\Resource;
8
9
class ResourceHelper
10
{
11
    /**
12
     * @param Resource[] $resources
13
     * @param ResourceConfigurator $configurator
14
     * @return array
15
     * @throws InvalidConfigException
16
     */
17
    public static function aggregateByObject(array $resources, ResourceConfigurator $configurator): array
18
    {
19
        $result = [];
20
        foreach ($resources as $resource) {
21
            $resourceModel = $resource->buildResourceModel($configurator);
22
            $object = [
23
                'type' => $resource->type,
24
            ];
25
            $object['amount'] = $resourceModel->decorator()->displayAmountWithUnit();
26
            $result[$resource['object_id']][$resource['type']] = $object;
27
        }
28
29
        return $result;
30
    }
31
32
    /**
33
     * @param Resource[] $models
34
     * @return array
35
     */
36
    public static function groupResourcesForChart(array $models): array
37
    {
38
        $labels = [];
39
        $data = [];
40
        ArrayHelper::multisort($models, 'date');
41
        foreach ($models as $model) {
42
            $labels[$model->date] = $model;
43
            $data[$model->type][] = $model->getChartAmount();
44
        }
45
        foreach ($labels as $date => $model) {
46
            $labels[$date] = $model->getDisplayDate();
47
        }
48
49
        return [$labels, $data];
50
    }
51
}
52