<?php
class SipdKemendagriClient extends BackgroundBaseClient
{
    public function filterResponse($body, $result)
    {
        parent::filterResponse($body, $result);
        if ($this->logger != null) {
            if($result != null) {
                if(array_key_exists('code', $result)) $this->logger->addItem("api_result_code", $result['code']);
                if(array_key_exists('msg', $result)) $this->logger->addItem("api_result_message", $result['msg']);
            }
        }
    }

    public function rkpd($tahun, $kodePemda)
    {
        $this->objectsProcessed = 0;
        $this->startTime = microtime(true);

        $method = "GET";
        $path = "/run/serv/api";
        $params = [
            "verify" => false,
            "query" => [
                "tahun" => $tahun,
                "kodepemda" => $kodePemda
            ],
            "headers" => [
                "Authorization" => "bearer " . $this->prop['bearer_token']
            ]
        ];

        //region LOG Definition
        $this->setApiName("SIPDKemendagri-rkpd");
        //endregion

        $result = $this->execute($method, $path, $params);

        $this->objectsProcessed = count($result);

        $this->endTime = microtime(true);

        return $result;
    }

    public function skpdDetail($tahun, $kodePemda, $kodeSkpd)
    {
        $this->objectsProcessed = 0;
        $this->startTime = microtime(true);

        $method = "GET";
        $path = "/run/serv/api";
        $params = [
            "verify" => false,
            "query" => [
                "tahun" => $tahun,
                "kodepemda" => $kodePemda,
                "kodeskpd" => $kodeSkpd,
            ],
            "headers" => [
                "Authorization" => "bearer " . $this->prop['bearer_token']
            ]
        ];

        //region LOG Definition
        $this->setApiName("SIPDKemendagri-skpd_detail");
        //endregion

        $result = $this->execute($method, $path, $params);

        $this->objectsProcessed = count($result);

        $this->endTime = microtime(true);

        return $result;
    }

    public function pemdaList($tahun, $tipe)
    {
        $this->objectsProcessed = 0;
        $this->startTime = microtime(true);

        $method = "GET";
        $path = "/run/serv/get_rkpd_progres";
        $params = [
            "verify" => false,
            "query" => [
                "tahun" => $tahun,
                "pemda" => $tipe,
                "tipe" => 'murni',
                "rkpd" => 'final'
            ],
            "headers" => [
                "Authorization" => "bearer " . $this->prop['bearer_token']
            ]
        ];

        //region LOG Definition
        $this->setApiName("SIPDKemendagri-pemda_list");
        //endregion

        $result = $this->execute($method, $path, $params);

        $this->objectsProcessed = count($result);

        $this->endTime = microtime(true);

        return $result;
    }

    public function skpdList($tahun, $kodePemda)
    {
        $this->objectsProcessed = 0;
        $this->startTime = microtime(true);

        $method = "GET";
        $path = "/run/serv/api_skpd";
        $params = [
            "verify" => false,
            "query" => [
                "tahun" => $tahun,
                "kodepemda" => $kodePemda
            ],
            "headers" => [
                "Authorization" => "bearer " . $this->prop['bearer_token']
            ]
        ];

        //region LOG Definition
        $this->setApiName("SIPDKemendagri-skpd_list");
        //endregion

        $result = $this->execute($method, $path, $params);

        $this->objectsProcessed = count($result);

        $this->endTime = microtime(true);

        return $result;
    }

    public function yearList($kodePemda)
    {
        $this->objectsProcessed = 0;
        $this->startTime = microtime(true);

        $method = "GET";
        $path = "/run/serv/get_daftar_ta_final";
        $params = [
            "verify" => false,
            "query" => [
                "kodepemda" => $kodePemda
            ],
            "headers" => [
                "Authorization" => "bearer " . $this->prop['bearer_token']
            ]
        ];

        //region LOG Definition
        $this->setApiName("SIPDKemendagri-year_list");
        //endregion

        $result = $this->execute($method, $path, $params);

        $this->objectsProcessed = count($result);

        $this->endTime = microtime(true);

        return $result;
    }
}
