<?php

use Jaga\Models\BaseModel;
use Jaga\Traits\JagaTimestamp;
use Jaga\Traits\SoftDelete;

/**
 * Class PancekQuizQuestion
 * @property PancekQuiz $quiz
 * @property PancekQuizAnswer[] $answers
 */
class PancekQuizQuestion extends BaseModel {
    use JagaTimestamp, SoftDelete;

    public $id;
    public $quiz_id;
    public $label;
    public $view_order;
    public $created_at;
    public $updated_at;
    public $deleted_at;

    public static $throwableModelName = 'PancekQuizQuestion';

    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("pancek_quiz_question");
        $this->belongsTo(
            "quiz_id",
            \PancekQuiz::class,
            "id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'quiz',
            ]
        );
        $this->hasMany(
            "id",
            \PancekQuizAnswer::class,
            "question_id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'answers',
                'order' => 'id ASC',
                'params'   => [
                    'conditions' => 'deleted_at IS NULL'
                ],
            ]
        );
    }

    public function toDetail($columns = null, $answerColumns = null)
    {
        $data = $this->toArray($columns);
        $data['answers'] = [];
        foreach ($this->answers as $answer) {
            $a = $answer->toArray($answerColumns);
            array_push($data['answers'], $a);
        }

        return $data;
    }

    /**
     * @param $quizId
     * @return integer
     */
    public static function countTotalByQuiz($quizId) {
        return PancekQuizQuestion::count(['conditions' => 'quiz_id = :value:', 'bind' => ['value' => $quizId]]);
    }
}
