<?php

class SpiInternalEksternalDetail extends \Phalcon\Mvc\Model
{

    /**
     *
     * @var integer
     */
    public $id;

    /**
     *
     * @var string
     */
    public $tahun;

    /**
     *
     * @var integer
     */
    public $id_instansi;

    /**
     *
     * @var integer
     */
    public $id_provinsi;

    /**
     *
     * @var integer
     */
    public $id_kota_kabupaten;

    /**
     *
     * @var string
     */
    public $nama_instansi;

    /**
     *
     * @var double
     */
    public $indeks;

    /**
     *
     * @var double
     */
    public $indeks_internal;

    /**
     *
     * @var double
     */
    public $indeks_eksternal;

    /**
     *
     * @var double
     */
    public $indeks_eksper;

    /**
     *
     * @var double
     */
    public $koreksi_prevalensi_korupsi;

    /**
     *
     * @var double
     */
    public $koreksi_integritas_pelaksanaan_survei;

    /**
     *
     * @var double
     */
    public $int_401a;

    /**
     *
     * @var double
     */
    public $int_401b;

    /**
     *
     * @var double
     */
    public $int_402_1;

    /**
     *
     * @var double
     */
    public $int_402_2;

    /**
     *
     * @var double
     */
    public $int_402_3;

    /**
     *
     * @var double
     */
    public $int_402_4;

    /**
     *
     * @var double
     */
    public $int_402_5;

    /**
     *
     * @var double
     */
    public $int_402_6;

    /**
     *
     * @var double
     */
    public $int_403a;

    /**
     *
     * @var double
     */
    public $int_403b;

    /**
     *
     * @var double
     */
    public $int_404a;

    /**
     *
     * @var double
     */
    public $int_404b;

    /**
     *
     * @var double
     */
    public $int_405a;

    /**
     *
     * @var double
     */
    public $int_405b;

    /**
     *
     * @var double
     */
    public $int_501c_1;

    /**
     *
     * @var double
     */
    public $int_501c_2;

    /**
     *
     * @var double
     */
    public $int_501c_3;

    /**
     *
     * @var double
     */
    public $int_501c_4;

    /**
     *
     * @var double
     */
    public $int_501c_5;

    /**
     *
     * @var double
     */
    public $int_502a;

    /**
     *
     * @var double
     */
    public $int_502b;

    /**
     *
     * @var double
     */
    public $int_503c;

    /**
     *
     * @var double
     */
    public $int_504a;

    /**
     *
     * @var double
     */
    public $int_504b;

    /**
     *
     * @var double
     */
    public $int_601a_1;

    /**
     *
     * @var double
     */
    public $int_601a_2;

    /**
     *
     * @var double
     */
    public $int_601a_3;

    /**
     *
     * @var double
     */
    public $int_601b;

    /**
     *
     * @var double
     */
    public $int_602a;

    /**
     *
     * @var double
     */
    public $int_602c;

    /**
     *
     * @var double
     */
    public $int_701;

    /**
     *
     * @var double
     */
    public $int_702a;

    /**
     *
     * @var double
     */
    public $int_702b_1;

    /**
     *
     * @var double
     */
    public $int_702b_2;

    /**
     *
     * @var double
     */
    public $int_702b_3;

    /**
     *
     * @var double
     */
    public $int_702b_4;

    /**
     *
     * @var double
     */
    public $int_702b_5;

    /**
     *
     * @var double
     */
    public $int_703a;

    /**
     *
     * @var double
     */
    public $int_703b;

    /**
     *
     * @var double
     */
    public $int_705a;

    /**
     *
     * @var double
     */
    public $int_705b;

    /**
     *
     * @var double
     */
    public $int_706a;

    /**
     *
     * @var double
     */
    public $int_706b;

    /**
     *
     * @var double
     */
    public $transparansi;

    /**
     *
     * @var double
     */
    public $sosialisasi_antikorupsi;

    /**
     *
     * @var double
     */
    public $trading_in_influence;

    /**
     *
     * @var double
     */
    public $pengelolaan_sdm;

    /**
     *
     * @var double
     */
    public $pengelolaan_pbj;

    /**
     *
     * @var double
     */
    public $pengelolaan_anggaran;

    /**
     *
     * @var double
     */
    public $integritas_tugas;

    /**
     *
     * @var double
     */
    public $ext_401;

    /**
     *
     * @var double
     */
    public $ext_402;

    /**
     *
     * @var double
     */
    public $ext_403;

    /**
     *
     * @var double
     */
    public $ext_404;

    /**
     *
     * @var double
     */
    public $ext_405a;

    /**
     *
     * @var double
     */
    public $ext_406;

    /**
     *
     * @var double
     */
    public $ext_407a;

    /**
     *
     * @var double
     */
    public $ext_501;

    /**
     *
     * @var double
     */
    public $ext_502;

    /**
     *
     * @var double
     */
    public $ext_503;

    /**
     *
     * @var double
     */
    public $ext_504a;

    /**
     *
     * @var double
     */
    public $ext_505a;

    /**
     *
     * @var double
     */
    public $upaya_pencegah_korupsi;

    /**
     *
     * @var double
     */
    public $transparansi_keadilan_layanan;

    /**
     *
     * @var double
     */
    public $integritas_pegawai;

    /**
     *
     * @var double
     */
    public $exp_401;

    /**
     *
     * @var double
     */
    public $exp_402;

    /**
     *
     * @var double
     */
    public $exp_403;

    /**
     *
     * @var double
     */
    public $exp_404;

    /**
     *
     * @var double
     */
    public $exp_405;

    /**
     *
     * @var double
     */
    public $exp_406;

    /**
     *
     * @var double
     */
    public $exp_407;

    /**
     *
     * @var double
     */
    public $exp_408;

    /**
     *
     * @var double
     */
    public $exp_409;

    /**
     *
     * @var double
     */
    public $exp_410;

    /**
     *
     * @var double
     */
    public $exp_601;

    /**
     *
     * @var double
     */
    public $exp_602;

    /**
     *
     * @var double
     */
    public $integritas_instansi;

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

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

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


    public static function findBy($idInstansi, $tahun)
    {
        return self::find([
            'conditions' => 'tahun < ?0 AND id_instansi = ?1',
            'bind' => [
                $tahun,
                $idInstansi
            ],
            'order' => 'tahun'
        ]);
    }

    public static function findByYear($tahun, $columns = null)
    {
        $params = [
            'conditions' => 'tahun = ?0',
            'bind' => [
                $tahun
            ],
            'order' => 'id'
        ];
        if ($columns) $params["columns"] = $columns;

        return self::find($params);
    }



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

    public static function findFirstBy($idInstansi, $tahun) {
        return self::findFirst([
            'conditions' => 'id_instansi = ?0 AND tahun = ?1',
            'bind' => [
                $idInstansi,
                $tahun,
            ]
        ]);
    }

    public static function buildRefConditionsBasedOnLevel($level) {
        if($level == SPIHasilKLPD::LEVEL_PROVINSI) {
            $conditions = 'id_provinsi = :ref_id: AND id_kota_kabupaten IS NULL';
        }
        else if ($level == SPIHasilKLPD::LEVEL_KABUPATEN) {
            $conditions = 'id_kota_kabupaten = :ref_id:';
        }
        else if ($level == SPIHasilKLPD::LEVEL_KEMENTERIAN) {
            $conditions = 'id_instansi = :ref_id:';
        }
        else {
            throw new CustomErrorException(BaseResponse::INVALID_REQUEST, "Level tidak valid!");
        }

        return $conditions;
    }

}
