Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 36
SurveyAnswerForm
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
110.00
0.00% covered (danger)
0.00%
0 / 36
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 4
 rules
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 6
 attributeLabels
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 6
 getSurveyQuestionId
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 save
0.00% covered (danger)
0.00%
0 / 1
42.00
0.00% covered (danger)
0.00%
0 / 17
<?php
namespace frontend\models;
use Yii;
use common\models\SurveyAnswer;
use yii\base\Model;
/**
 * This is the model class for form "survey_answer".
 *
 * @property string $content
 * @property string $value
 * @property string $survey_question_id
 */
class SurveyAnswerForm extends Model
{
    public $content;
    public $value;
    private $survey_question_id;
    /**
     * @inheritdoc
     */
    public function __construct($survey_question_id, $config = [])
    {
        $this->survey_question_id = $survey_question_id;
        parent::__construct($config);
    }
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            ['content', 'required', 'when' => function($model){ return empty($model->value); }],
            ['value', 'required', 'when' => function($model){ return empty($model->content); }],
            ['content', 'string'],
            ['value', 'integer']
        ];
    }
    
    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'content' => Yii::t('app', 'Answer'),
            'value' => Yii::t('app', 'Answer'),
        ];
    }
    /**
     * @return integer survey question id number
     */
    public function getSurveyQuestionId()
    {
        return $this->survey_question_id;
    }
    public function save($survey_opinion_id, $questionsOptions = [])
    {
        $surveyAnswer = new SurveyAnswer();
        if(isset($questionsOptions[$this->survey_question_id]) && isset($questionsOptions[$this->survey_question_id][$this->value])){
            $surveyAnswer->content = $questionsOptions[$this->survey_question_id][$this->value];
            $surveyAnswer->value = $this->value;
        }else{
            $surveyAnswer->content = $this->content ?: $this->value;
            $surveyAnswer->value = $this->value ?: 0;
        }
        $surveyAnswer->survey_question_id = $this->survey_question_id;
        $surveyAnswer->survey_opinion_id = $survey_opinion_id;
        if($surveyAnswer->save(false)){
            return $surveyAnswer;
        }else{
            return null;
        }
    }
}