Completed
Push — master ( 196bfd...794470 )
by Tõnis
02:15
created

BaseQuestion::getAnswers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace dameter\abstracts\models;
4
5
use dameter\abstracts\interfaces\Conditionable;
6
use dameter\abstracts\validators\VariableNameValidator;
7
use dameter\abstracts\WithLanguageSettingsModel;
8
use dameter\abstracts\interfaces\Sortable;
9
10
/**
11
 * Class BaseQuestion
12
 * @property integer $question_id
13
 * @property integer $survey_id
14
 * @property integer $order
15
 *
16
 * @property string $code Question code is like eg a variable name in SPSS. A relatively short no-spaces survey-wide unique identifier
17
 *
18
 * @property BaseAnswer[] $answers
19
 * @property QuestionText[] $questionTexts in current language
20
 * @property QuestionText[] $questionHelps in current language
21
 * @property ModelCondition $modelCondition
22
 * @property Condition $condition
23
 *
24
 * @package dameter\abstracts\models
25
 * @author Tõnis Ormisson <[email protected]>
26
 */
27
class BaseQuestion extends WithLanguageSettingsModel implements Sortable, Conditionable
28
{
29
    public static $settingsClass = QuestionText::class;
30
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function rules()
35
    {
36
        return array_merge(parent::rules(), [
37
            [['code', 'order'], 'required'],
38
            [['code'], VariableNameValidator::class],
39
            [['order'], 'integer'],
40
        ]);
41
    }
42
43
    /**
44
     * @return \yii\db\ActiveQuery
45
     */
46
    public function getAnswers()
47
    {
48
        return $this->hasMany(BaseSurvey::class);
49
    }
50
51
52
    /**
53
     * @return \yii\db\ActiveQuery
54
     */
55
    public function getQuestionTexts()
56
    {
57
        $query = $this->getTexts();
58
        return $query->andWhere(['type_id' => QuestionText::TYPE_QUESTION]);
59
    }
60
61
    /**
62
     * @return \yii\db\ActiveQuery
63
     */
64
    public function getQuestionHelps()
65
    {
66
        $query = $this->getTexts();
67
        return $query->andWhere(['type_id' => QuestionText::TYPE_HELP]);
68
    }
69
70
    /**
71
     * @return Condition
72
     */
73
    public function getCondition()
74
    {
75
        if (!empty($this->modelCondition)) {
76
            return $this->modelCondition->child;
77
        }
78
        return null;
79
    }
80
81
    /**
82
     * @return \yii\db\ActiveQuery
83
     */
84
    public function getModelCondition()
85
    {
86
        return $this->hasOne(ModelCondition::class);
87
    }
88
89
}