<?php

/**
 * Class PancekKonsepSistemPencegahan
 * @property PancekIndikator[] $indikators
 */

class PancekKonsepSistemPencegahan extends Phalcon\Mvc\Model
{
    public $id;
    public $code;
    public $label;
    public $formulir_type;
    public $view_order;
    public $created_at;
    public $updated_at;
    public $deleted_at;
    public $label_en;

    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("pancek_konsep_sistem_pencegahan");

        $this->hasMany(
            'id',
            'PancekIndikator',
            'konsep_sistem_pencegahan_id',
            [
                'reusable' => true, // cache related data
                'alias'    => 'indikators',
                'params'   => [
                    'conditions' => 'deleted_at IS NULL',
                    'order' => 'view_order ASC'
                ],
            ]
        );
    }

    public function toDetail($columns = null, $indikatorColumns = null, $komponenColumns = null)
    {
        $result = $this->toArray($columns);
        $result['indikators'] = [];
        foreach ($this->indikators as $indikator) {
            array_push($result['indikators'], $indikator->toDetail($indikatorColumns, $komponenColumns));
        }

        return $result;
    }

    /**
     *
     * @param $params
     */
    public function getForm($params)
    {
        $records = $this->find($params);
        $result = [];
        foreach ($records as $record) {
            /** @var $record PancekKonsepSistemPencegahan */
            array_push($result, $record->toDetail(['id', 'code', 'label'], ['id', 'code', 'label'], ['id', 'code', 'parent_code', 'is_header', 'label', 'bobot']));
        }

        return $result;
    }

    public function getFormByFormulir(PancekFormulir $formulir)
    {
        $ids = [];
        if (!empty($formulir->answers)) {
            foreach ($formulir->answers as $answer) {
                $id = $answer->komponenIndikator->indikator->konsep_sistem_pencegahan_id;
                if (!in_array($id, $ids)) {
                    array_push($ids, $id);
                }
            }
        }
        $records = $this->find([
            'conditions' => 'id IN ({ids:array})',
            'bind' => ['ids' => $ids]
        ]);
        $result = [];
        foreach ($records as $record) {
            /** @var $record PancekKonsepSistemPencegahan */
            array_push($result, $record->toDetail(['id', 'code', 'label', 'label_en'], ['id', 'code', 'label', 'label_en'], ['id', 'code', 'parent_code', 'is_header', 'label', 'bobot', 'label_en']));
        }

        return $result;
    }
}
