<?php

class DesaMasterDesa extends \Phalcon\Mvc\Model
{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("desa_master_desa");
        $this->hasOne('kode_PUM', '\DesaJumlahPenduduk', 'kode_PUM', ["alias" => "jumlahPenduduk"]);
        $this->hasOne('kode_PUM', '\DesaSarana', 'kode_PUM', ["alias" => "sarana"]);
        $this->hasOne('kode_PUM', '\DesaKesejahteraan', 'kode_PUM', ["alias" => "kesejahteraan"]);
        $this->hasMany('kode_PUM', '\OmspanDanaDesaPagu', 'kode_desa', ["alias" => "paguDanaDesa"]);
        $this->hasMany('kode_PUM', '\OmspanDanaDesaPenyaluran', 'kode_desa', ["alias" => "penyaluranDanaDesa"]);
        $this->hasMany('kode_PUM', '\OmspanPenyerapanDanaDesa', 'kode_desa', ['alias' => 'penyerapan']);     
    }

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

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

    public function toJsonProfile(){
        $result = $this->toArray(
            [
                "kode_PUM", "provinsi", "kabupaten_kota", "kecamatan", "desa_kelurahan", "updated_date"
            ]
        );

        $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;
    }

    public function jsonDetilAnggaran($tahun){
        $result = $this->toArray(
            [
                "kode_PUM", "provinsi", "kabupaten_kota", "kecamatan", "desa_kelurahan", "updated_date"
            ]
        );

        $result["pagu"] = 0;
        if( $this->paguDanaDesa ){
            foreach($this->paguDanaDesa as $pagu){
                if( $pagu->tahun == $tahun ){
                    $result["pagu"] = $pagu->pagu;
                    break;
                }
            }
        }
        
        $result["total_penyaluran"] = 0;
        $result["penyaluran"] = [];
        for($i=1;$i<4;$i++){
            $result["penyaluran"][(string)$i] = [
                "realisasi" => 0,
                "tanggal_realisasi" => ""
            ];
        }
        
        if( $this->penyaluranDanaDesa ){
            foreach( $this->penyaluranDanaDesa as $penyaluran ){
                if( $penyaluran->tahun == $tahun ){
                    $result["total_penyaluran"] += $penyaluran->realisasi;
                    $result["penyaluran"][$penyaluran->tahap]["realisasi"] = $penyaluran->realisasi;
                    $result["penyaluran"][$penyaluran->tahap]["tanggal_realisasi"] = $penyaluran->tanggal_sp2d;
                }
            }
        }

        $result["penyerapan"] = [];
        for($i=1;$i<=3;$i++){
            $tahap[(string)$i] = [];
            $res[(string)$i] = [];
        }
        
        if( $this->penyerapan ){            
            foreach( $this->penyerapan as $realisasi ){
                if( $realisasi->tahun == $tahun ){
                    $uraianOutput = $realisasi->uraianOutput;
                    $kegiatan = $uraianOutput->kegiatan;
                    $bidang = $kegiatan->bidang;
                    for($i=1;$i<=3;$i++){
                        $field = "realisasi_tahap_".$i;
                        $percentField = "persentase_".$field;                        
                        if( $realisasi->$field > 0 ){
                            $tahap[(string)$i][$bidang->kode]["nama"] = $bidang->nama;
                            $tahap[(string)$i][$bidang->kode][$kegiatan->kode]["nama"] = $kegiatan->nama;
                            $tahap[(string)$i][$bidang->kode][$kegiatan->kode][$uraianOutput->kode]["nama"] = $uraianOutput->uraian;
                            $tahap[(string)$i][$bidang->kode][$kegiatan->kode][$uraianOutput->kode]["realisasi"] = $realisasi->$field;
                            $tahap[(string)$i][$bidang->kode][$kegiatan->kode][$uraianOutput->kode]["anggaran"] = $realisasi->$field * 100 / $realisasi->$percentField;
                        }
                    }                                        
                }
            }

            for($i=1;$i<=3;$i++){
                foreach( $tahap[(string)$i] as $tahapKey => $tahapValue ) {
                    $bidangElm = [];                
                    foreach( $tahapValue as $bidangKey => $bidangValue ) {
                        if( $bidangKey != "nama" ){
                            $kegiatanElm = [];
                            foreach( $bidangValue as $kegiatanKey => $kegiatanValue ){
                                if( $kegiatanKey != "nama" ){
                                    $kegiatanElm["uraian"][] = $kegiatanValue;
                                }else{
                                    $kegiatanElm["nama"] = $kegiatanValue;
                                }
                            }
                            $bidangElm["kegiatan"][] = $kegiatanElm;
                        }else{
                            $bidangElm["nama"] = $bidangValue;
                        }
                    }
                    
                    $res[$i][] = $bidangElm;
                }                                    
            }                        
        }
        $result["penyerapan"] = $res;
        return $result;
    }

}
