<?php

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

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

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

    public static $throwableModelName = 'PancekQuiz';

    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("pancek_quiz");
        $this->hasMany(
            "id",
            \PancekQuizQuestion::class,
            "quiz_id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'questions',
                'order' => 'id ASC',
                'params'   => [
                    'conditions' => 'deleted_at IS NULL',
                    'order' => 'view_order asc'
                ],
            ]
        );
    }

    public static function getForm($id = 1)
    {
        /** @var PancekQuiz $quiz */
        $quiz = self::findFirst($id);
        if (!$quiz) {
            throw new CustomErrorException(BaseResponse::DATA_NOT_FOUND, "Quiz tidak ditemukan");
        }

        $data = $quiz->toArray(['id', 'label']);
        $data['questions'] = [];
        foreach ($quiz->questions as $question) {
            $q = $question->toDetail(['id', 'label'], ['id', 'question_id', 'label']);
            array_push($data['questions'], $q);
        }

        return $data;
    }
}
