<?php

class KorsupgahTemplate extends \Phalcon\Mvc\Model
{
    public $id;
    public $nama;
    public $keterangan;
    public $created_at;
    public $updated_at;
    public $deleted_at;
    public $created_by;
    public $updated_by;
    public $id_dana_desa;
    public $view_order;
    public $is_dana_desa;
    public $tahun;

    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("korsupgah_template");
        $this->hasMany("id", "KorsupgahSurvey", "id_template");
        $this->hasMany("id", "KorsupgahTemplateSubIndikator", "id_template");
        $this->hasManyToMany(
            'id',
            'KorsupgahTemplateSubIndikator',
            'id_template',
            'id_sub_indikator',
            'KorsupgahSubIndikator',
            'id'
        );
    }

    public function getDetail()
    {
        $result = $this->toArray();

        $questions = [];
        $indikator_id = [];
        if(array_key_exists('ids_sub_indikator_json', $this)) {
            $idsSubIndikator = json_decode($this->ids_sub_indikator_json);
            $sub_indikator = $this->getKorsupgahSubIndikator([
                'conditions' => 'id_sub_indikator IN ({id_sub_indikator:array})',
                'bind' => [
                    'id_sub_indikator' => array_values($idsSubIndikator)
                ]
            ]);
        }
        else {
            $sub_indikator = $this->korsupgahSubIndikator;
        }

        foreach ($sub_indikator as $key => $si) :
            if (is_null($si->deleted_at)) :
                $quest = $si->toArray();
                $questions[] = $quest;
                $indikator_id[] = $quest['id'];
            endif;
        endforeach;

        $result['questions'] = $questions;

        $indikator_id = array_unique($indikator_id);

        $result['references'] = [
            'indikator_ids' => []
        ];

        if ($indikator_id) :
            $result['references'][0] = KorsupgahIndikator::query()
                ->inWhere('id', $indikator_id)
                ->execute();
        endif;


        return $result;
    }
}
