<?php

class KemendagriClient extends BackgroundBaseClient {
    private $version;
    public function __construct($prop)
    {
        if (array_key_exists('version', $prop)) {
            $this->version = $prop['version'];
        }
        parent::__construct($prop);
    }

    public function listProvinsi($parameter = null, $value = null)
    {
        return $this->executeDataWilayah('master_data_wilayah_provinsi', $parameter, $value);
    }

    public function listKabKota($parameter = null, $value = null)
    {
        return $this->executeDataWilayah('master_data_kabkota', $parameter, $value);
    }

    private function executeDataWilayah($path, $parameter = null, $value = null) {
        $method = "GET";
        $path = "/" . $path . "/" . $this->version . "/";

        if (!is_null($parameter) && !is_null($value)) {
            $path .= $parameter . "/" . $value;
        }

        //region LOG Definition
        $this->setApiName("kemendagri-" . $path);
        //endregion

        $result = $this->execute($method, $path, [], false);
        if (array_key_exists("status", $result) && $result["status"]) {
            return $result["data"];
        } else {
            $errMessage = (array_key_exists("message", $result) ? $result["message"] : "Gagal menghubungi server Kemendagri!");
            throw new CustomErrorException(BaseResponse::UNEXPECTED_ERROR, $errMessage);
        }
    }
}
