PlanQuery::joinWithPrices()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 0
cts 9
cp 0
rs 9.9
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
/**
3
 * Finance module for HiPanel
4
 *
5
 * @link      https://github.com/hiqdev/hipanel-module-finance
6
 * @package   hipanel-module-finance
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2015-2019, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hipanel\modules\finance\models\query;
12
13
use hipanel\modules\finance\models\Plan;
14
use hiqdev\hiart\ActiveQuery;
15
16
class PlanQuery extends \hiqdev\hiart\ActiveQuery
17
{
18
    public function byId($id)
19
    {
20
        return $this->andWhere(['id' => $id]);
21
    }
22
23
    /**
24
     * @param null $db
25
     * @return Plan|null
26
     */
27
    public function one($db = null)
28
    {
29
        return parent::one($db);
0 ignored issues
show
Bug Compatibility introduced by
The expression parent::one($db); of type hiqdev\hiart\ActiveRecord|array|null adds the type hiqdev\hiart\ActiveRecord to the return on line 29 which is incompatible with the return type declared by the interface yii\db\QueryInterface::one of type array|boolean.
Loading history...
30
    }
31
32
    /**
33
     * @param null $db
34
     * @return Plan[]
35
     */
36
    public function all($db = null)
37
    {
38
        return parent::all($db);
39
    }
40
41
    public function withPrices()
42
    {
43
        return $this->with([
44
            'prices' => function (PriceQuery $query) {
45
                $query
46
                    ->withMainObject()
47
                    ->withFormulaLines();
48
            },
49
        ]);
50
    }
51
52
    public function joinWithPrices()
53
    {
54
        return $this->joinWith([
55
            'prices' => function (ActiveQuery $query) {
56
                $query
57
                    ->addSelect('main_object_id')
58
                    ->joinWith('object')
59
                    ->limit(-1);
60
            },
61
        ]);
62
    }
63
64
    /**
65
     * @return $this
66
     */
67
    public function withSales()
68
    {
69
        $this
70
            ->joinWith('sales')
71
            ->andWhere(['states' => ['ok', 'deleted']]);
72
73
        return $this;
74
    }
75
76
    /**
77
     * @return $this
78
     */
79
    public function withPriceHistory()
80
    {
81
        $this
82
            ->joinWith([
83
                'priceHistory' => function (ActiveQuery $query): void {
84
                    $query
85
                        ->addSelect('main_object_id')
86
                        ->joinWith('object');
87
                },
88
            ])
89
            ->andWhere(['priceHistory' => true]);
90
91
        return $this;
92
    }
93
}
94