<?php

namespace Hura8\Components\Province\Controller;

use Hura8\Components\Province\Model\ProvinceModel;
use Hura8\Traits\ClassCacheTrait;


class bProvinceController
{

    use ClassCacheTrait;

    protected  $objProvinceModel;

    public function __construct()
    {
        $this->objProvinceModel = new ProvinceModel();
    }


    public function getProvinceName($id) {
        return self::getCache("getProvinceName-".$id, function () use ($id) {
            $info = $this->objProvinceModel->getProvinceInfo($id, 'name');
            return ($info) ? $info['name'] : '';
        });
    }

    public function getDistrictName($id) {
        return self::getCache("getDistrictName-".$id, function () use ($id) {
            $info = $this->objProvinceModel->getDistrictInfo($id, 'name');
            return ($info) ? $info['name'] : '';
        });
    }

    public function getWardName($id) {
        return self::getCache("getWardName-".$id, function () use ($id) {
            $info = $this->objProvinceModel->getWardInfo($id, 'name');
            return ($info) ? $info['name'] : '';
        });
    }


    public function getProvinceList($field="*") {
        return self::getCache("getProvinceList-", function () use ($field) {
            return $this->objProvinceModel->getProvinceList($field);
            //$pick_keys = ['id', 'api_id', 'name'];

            /*return array_map(function ($item) use($pick_keys){
                return pick_return_array_key($item, $pick_keys);
            }, $province_list);*/
        });
    }

    public function getProvinceDistrictList($province_id, $field="*") {

        return self::getCache("getProvinceDistrictList-".$province_id, function () use ($province_id) {
            return $this->objProvinceModel->getProvinceDistrictList($province_id);
            //$pick_keys = ['id', 'api_id', 'name'];

            /*return array_map(function ($item) use($pick_keys){
                return pick_return_array_key($item, $pick_keys);
            }, $province_list);*/
        });
    }

    public function getAllDistrictList() {
        return self::getCache("getAllDistrictList", function (){
            return $this->objProvinceModel->getAllDistrictList();
        });
    }


    public function getDistrictWardList($district_id, $field="*") {
        return self::getCache("getDistrictWardList-".$district_id, function () use ($district_id) {
            return $this->objProvinceModel->getDistrictWardList($district_id);
        });
    }

    // these are kept for old time sake
    /*public static $province_list = array(
        "1"     =>  "Hà Nội",
        "2"     =>  "TP HCM",
        "5"     =>  "Hải Phòng" ,
        "4"     =>  "Đà Nẵng" ,
        "6"     =>  "An Giang" ,
        "7"     =>  "Bà Rịa-Vũng Tàu",
        "13"    =>  "Bình Dương" ,
        "15"    =>  "Bình Phước" ,
        "16"    =>  "Bình Thuận" ,
        "14"    =>  "Bình Định" ,
        "8"     =>  "Bạc Liêu",
        "10"    =>  "Bắc Giang" ,
        "9"     =>  "Bắc Kạn",
        "11"    =>  "Bắc Ninh",
        "12"    =>  "Bến Tre",
        "18"    =>  "Cao Bằng",
        "17"    =>  "Cà Mau",
        "3"     =>  "Cần Thơ",
        "24"    =>  "Gia Lai",
        "25"    =>  "Hà Giang",
        "26"    =>  "Hà Nam",
        "27"    =>  "Hà Tĩnh",
        "30"    =>  "Hòa Bình",
        "28"    =>  "Hải Dương",
        "29"    =>  "Hậu Giang",
        "31"    =>  "Hưng Yên",
        "32"    =>  "Khánh Hòa",
        "33"    =>  "Kiên Giang",
        "34"    =>  "Kon Tum",
        "35"    =>  "Lai Châu",
        "38"    =>  "Lào Cai",
        "36"    =>  "Lâm Đồng",
        "37"    =>  "Lạng Sơn",
        "39"    =>  "Long An",
        "40"    =>  "Nam Định",
        "41"    =>  "Nghệ An",
        "42"    =>  "Ninh Bình",
        "43"    =>  "Ninh Thuận",
        "44"    =>  "Phú Thọ",
        "45"    =>  "Phú Yên",
        "46"    =>  "Quảng Bình",
        "47"    =>  "Quảng Nam",
        "48"    =>  "Quảng Ngãi",
        "49"    =>  "Quảng Ninh",
        "50"    =>  "Quảng Trị",
        "51"    =>  "Sóc Trăng",
        "52"    =>  "Sơn La",
        "53"    =>  "Tây Ninh",
        "56"    =>  "Thanh Hóa",
        "54"    =>  "Thái Bình",
        "55"    =>  "Thái Nguyên",
        "57"    =>  "Thừa Thiên-Huế",
        "58"    =>  "Tiền Giang",
        "59"    =>  "Trà Vinh",
        "60"    =>  "Tuyên Quang",
        "61"    =>  "Vĩnh Long",
        "62"    =>  "Vĩnh Phúc",
        "63"    =>  "Yên Bái",
        "19"    =>  "Đắk Lắk",
        "22"    =>  "Đồng Nai",
        "23"    =>  "Đồng Tháp",
        "21"    =>  "Điện Biên",
        "20"    =>  "Đăk Nông",
    );

    public static function getName($id) {
        return (isset(static::$province_list[$id])) ? static::$province_list[$id] : '';
    }*/

}
