<?php

class ActivityKeyMatrix extends Phalcon\Mvc\Model
{
    /**
     *
     * @var integer
     */
    public $id;
    /**
     *
     * @var integer
     */
    public $produk_id;
    /**
     *
     * @var string
     */
    public $objek_id;
    /**
     *
     * @var string
     */
    public $key_1;
    /**
     *
     * @var string
     */
    public $key_2;
    /**
     *
     * @var string
     */
    public $key_3;
    /**
     *
     * @var string
     */
    public $key_4;
    /**
     *
     * @var string
     */
    public $key_5;
    /**
     *
     * @var datetime
     */
    public $created_at;
    /**
     *
     * @var datetime
     */
    public $updated_at;
    /**
     *
     * @var datetime
     */
    public $deleted_at;

    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSchema('jaga');
        $this->setSource('activity_key_matrix');
    }

    /**
     * Returns table name mapped in the model.
     *
     * @return string
     */
    public function getSource()
    {
        return 'activity_key_matrix';
    }

    /**
     * Allows to query a set of records that match the specified conditions
     *
     * @param mixed $parameters
     * @return ActivityKeyMatrix[]|ActivityKeyMatrix|\Phalcon\Mvc\Model\ResultSetInterface
     */
    public static function find($parameters = null)
    {
        return parent::find($parameters);
    }

    /**
     * Allows to query the first record that match the specified conditions
     *
     * @param mixed $parameters
     * @return ActivityKeyMatrix|\Phalcon\Mvc\Model\ResultInterface
     */
    public static function findFirst($parameters = null)
    {
        return parent::findFirst($parameters);
    }

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

        $result['nama_produk'] = '';
        if(!empty($this->produk_id)) {
            $produk = Produk::findFirst(
                [
                    "id_index = :produk_id:",
                    "bind" => [
                        "produk_id" => $this->produk_id
                    ]
                ]
            );

            if(!empty($produk)) {
                $result['nama_produk'] = str_replace('Default', 'Umum',$produk->nama);
            }
        }

        $result['nama_objek'] = '-';
        if(!empty($this->objek_id)) {
            $bind['objek_id'] = $this->objek_id;

            switch($this->produk_id) {
                case UserActivity::PRODUK_PENDIDIKAN :
                    $sekolah = Sekolah::findFirst(
                        [
                            "npsn = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if(!empty($sekolah)) {
                        $result['nama_objek'] = $sekolah->nama;
                    }
                    break;
                case UserActivity::PRODUK_KESEHATAN :
                    $fasKes = RumahSakit::findFirst(
                        [
                            "kode_rs = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if(!empty($fasKes)) {
                        $result['nama_objek'] = $fasKes->nama;
                    }
                    else {
                        $fasKes = Puskesmas::findFirst(
                            [
                                "kode_puskesmas = :objek_id:",
                                "bind" => $bind
                            ]
                        );

                        if(!empty($fasKes)) {
                            $result['nama_objek'] = $fasKes->nama_puskesmas;
                        }
                    }
                    break;
                case UserActivity::PRODUK_DESA :
                    $desa = OmspanMasterDesa::findFirst(
                        [
                            "kode_desa = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if(!empty($desa)) {
                        $result['nama_objek'] = $desa->nama_desa;
                    }
                    break;
                case UserActivity::PRODUK_PERIZINAN :
                    $perizinan = Perizinan::findFirst(
                        [
                            "id = :objek_id:",
                            "bind" => $bind
                        ]
                    );
                    
                    if(!empty($perizinan)) {
                        $result['nama_objek'] = $perizinan->nama;
                    }
                    break;
                case UserActivity::PRODUK_BANSOS :
                    $instansi = Instansi::findFirst(
                        [
                            "id = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if(!empty($instansi)) {
                        $result['nama_objek'] = $instansi->nama;
                    }
                    break;
                default :
                    $result['nama_objek'] = '';
                    break;
            }
        }

        return $result;
    }
}

?>