<?php

/**
 * Class OmspanDanaDesaPagu
 * @property DesaJumlahPenduduk $jumlahPenduduk
 * @property DesaSarana $sarana
 * @property DesaKesejahteraan $kesejahteraan
 * @property KemdagriKepadatanPendudukPerDesa $kkppd
 * @property OmspanMasterPemda $pemda
 * @method static OmspanDanaDesaPagu|boolean findFirstByKodeDesa(string $kodeDesa)
 */
class OmspanDanaDesaPagu extends \Phalcon\Mvc\Model
{

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

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

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

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

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

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

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

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

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

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

    public $created_at;
    public $updated_at;

    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("omspan_dana_desa_pagu");
        $this->belongsTo('kode_desa', '\DesaMasterDesa', 'kode_PUM', ["alias" => "masterDesa"]);
        $this->hasOne('kode_desa', '\DesaJumlahPenduduk', 'kode_PUM', ["alias" => "jumlahPenduduk"]);
        $this->hasOne('kode_desa', '\DesaSarana', 'kode_PUM', ["alias" => "sarana"]);
        $this->hasOne('kode_desa', '\DesaKesejahteraan', 'kode_PUM', ["alias" => "kesejahteraan"]);
        $this->hasOne('kode_desa', 'KemdagriKepadatanPendudukPerDesa', 'KODE', ['alias' => 'kkppd']);
        $this->hasOne('kode_lokasi', '\OmspanMasterPemda', 'kd_lokasi', ["alias" => "pemda"]);
    }

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

    /**
     * Allows to query a set of records that match the specified conditions
     *
     * @param mixed $parameters
     * @return OmspanDanaDesaPagu[]|OmspanDanaDesaPagu|\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 OmspanDanaDesaPagu|\Phalcon\Mvc\Model\ResultInterface
     */
    public static function findFirst($parameters = null)
    {
        return parent::findFirst($parameters);
    }

    public function toDetailDesa()
    {
        $array = $this->toArray();
        $pemda = $this->pemda;
        $provinsi = $pemda->provinsi;
        $result = [
            'kode_desa' => $array['kode_desa'],
            'nama_provinsi' => $provinsi->nm_prov,
            'nama_pemda' => $pemda->nm_lokasi,
            'nama_kecamatan' => null,
            'nama_desa' => $array['nama_desa'],
        ];

        if (empty($this->kkppd)) {
            $result['penduduk'] = null;
        } else {
            $result['penduduk'] = $this->kkppd;
        }

        return $result;
    }

    public function toJsonProfile()
    {
        $result_db = $this->toArray(
            [
                "kode_desa", "kabupaten_kota", "nama_desa"
            ]
        );

        $pemda = $this->pemda;
        $provinsi = $pemda->provinsi;

        $result = [
            'kode_PUM' => $result_db['kode_desa'],
            'provinsi' => $provinsi->nm_prov,
            'kabupaten_kota' => $pemda->nm_lokasi,
            'kecamatan' => null,
            'desa_kelurahan' => $result_db['nama_desa'],
            'updated_date' => null
        ];

        if ($this->jumlahPenduduk) {
            $result["jumlah_penduduk"] = $this->jumlahPenduduk->jumlah_penduduk;
            $result["jumlah_kk"] = $this->jumlahPenduduk->jumlah_kk;
        }
        $result["sarana"] = [];
        $result["sarana"]["balai_desa"] = "Tidak Ada";
        $result["sarana"]["listrik"] = "Tidak Ada";
        $result["sarana"]["air_bersih"] = "Tidak Ada";
        if ($this->sarana) {
            $result["sarana"]["balai_desa"] = $this->sarana->balai_desa;
            $result["sarana"]["listrik"] = $this->sarana->listrik;
            $result["sarana"]["air_bersih"] = $this->sarana->air_bersih;
        }

        $result["kesejahteraan"] = [];
        $result["kesejahteraan"]["pra_sejahtera"] = 0;
        $result["kesejahteraan"]["sejahtera_1"] = 0;
        $result["kesejahteraan"]["sejahtera_2"] = 0;
        $result["kesejahteraan"]["sejahtera_3"] = 0;
        $result["kesejahteraan"]["sejahtera_3_plus"] = 0;
        $result["kesejahteraan"]["jumlah_kk"] = 0;
        if ($this->kesejahteraan) {
            $result["kesejahteraan"]["pra_sejahtera"] = $this->kesejahteraan->pra_sejahtera;
            $result["kesejahteraan"]["sejahtera_1"] = $this->kesejahteraan->sejahtera_1;
            $result["kesejahteraan"]["sejahtera_2"] = $this->kesejahteraan->sejahtera_2;
            $result["kesejahteraan"]["sejahtera_3"] = $this->kesejahteraan->sejahtera_3;
            $result["kesejahteraan"]["sejahtera_3_plus"] = $this->kesejahteraan->sejahtera_3_plus;
            $result["kesejahteraan"]["jumlah_kk"] = $this->kesejahteraan->jumlah_kk;
        }

        return $result;
    }
}
