<?php

/**
 * Class PancekIndikator
 * @property PancekKomponenIndikator[] $komponens
 * @property PancekKonsepSistemPencegahan $konsepSistemPencegahan
 * @method getKomponens(string[] $array)
 */
class PancekIndikator extends Phalcon\Mvc\Model
{
    public $id;
    public $konsep_sistem_pencegahan_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_indikator");

        $this->belongsTo(
            'konsep_sistem_pencegahan_id',
            'PancekKonsepSistemPencegahan',
            'id',
            [
                'reusable' => true, // cache related data
                'alias'    => 'konsepSistemPencegahan',
                'params'   => [
                    'conditions' => 'deleted_at IS NULL'
                ]
            ]
        );
        $this->hasMany(
            'id',
            'PancekKomponenIndikator',
            'indikator_id',
            [
                'reusable' => true, // cache related data
                'alias'    => 'komponens',
                'params'   => [
                    'conditions' => 'deleted_at IS NULL',
                    'order' => 'view_order ASC'
                ],
            ]
        );
    }

    public function toDetail($columns = null, $komponenColumns = null)
    {
        $result = $this->toArray($columns);
        $result['komponens'] = [];
        $result['bobot'] = 0;
        $komponens = $this->getKomponens([
            'conditions' => 'parent_code IS NULL',
            'order' => 'view_order ASC'
        ]);
        foreach ($komponens as $komponen) {
            /** @var $komponen PancekKomponenIndikator */
            array_push($result['komponens'], $komponen->toDetail($komponenColumns));
            $result['bobot'] += $komponen->bobot;
        }
        $result['bobot'] = doubleval(strval($result['bobot']));

        return $result;
    }
}
