From 69fbfe196f926e0ed633ea40a300e389ed4ef503 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Wed, 31 Mar 2021 02:20:37 +0800 Subject: [PATCH] Add municipality (province / municipality / city) data and CAPI call #540 --- config/api_acl.yaml | 5 ++ config/routes/capi.yaml | 6 ++ .../CAPI/MunicipalityController.php | 63 +++++++++++++++++ src/Entity/Municipality.php | 69 +++++++++++++++++++ 4 files changed, 143 insertions(+) create mode 100644 src/Controller/CAPI/MunicipalityController.php create mode 100644 src/Entity/Municipality.php diff --git a/config/api_acl.yaml b/config/api_acl.yaml index a7ad72d5..ab15187a 100644 --- a/config/api_acl.yaml +++ b/config/api_acl.yaml @@ -57,3 +57,8 @@ access_keys: acls: - id: customer.register label: Register Customer + - id: municipality + label: Municipality + acls: + - id: municipality.list + label: List diff --git a/config/routes/capi.yaml b/config/routes/capi.yaml index 856eb0ef..5db14285 100644 --- a/config/routes/capi.yaml +++ b/config/routes/capi.yaml @@ -166,3 +166,9 @@ capi_cwarr_register: controller: App\Controller\CAPI\CustomerWarrantyController::register methods: [POST] + +# municipality +capi_municipality_list: + path: /capi/municipality + controller: App\Controller\CAPI\MunicipalityController::getAll + methods: [GET] diff --git a/src/Controller/CAPI/MunicipalityController.php b/src/Controller/CAPI/MunicipalityController.php new file mode 100644 index 00000000..8345cd45 --- /dev/null +++ b/src/Controller/CAPI/MunicipalityController.php @@ -0,0 +1,63 @@ +acl_gen = $acl_gen; + } + + public function getAll(EntityManagerInterface $em) + { + $this->denyAccessUnlessGranted('municipality.list', null, 'No access.'); + + $muns = $em->getRepository(Municipality::class)->findBy([], ['province_name' => 'ASC', 'name' => 'ASC']); + + $result = []; + $provinces = []; + foreach ($muns as $m) + { + $pid = $m->getProvinceID(); + $pname = $m->getProvinceName(); + $mid = $m->getID(); + $mname = $m->getName(); + + if (!isset($provinces[$pid])) + { + $provinces[$pid] = [ + 'id' => $pid, + 'name' => $pname, + 'municipalities' => [], + ]; + } + + // error_log("$pid - $pname - $mid - $mname"); + + $provinces[$pid]['municipalities'][$mid] = [ + 'id' => $mid, + 'name' => $mname, + ]; + } + + $data = [ + 'provinces' => $provinces, + ]; + + return new APIResponse(true, 'Municipalities loaded.', $data); + } +} diff --git a/src/Entity/Municipality.php b/src/Entity/Municipality.php new file mode 100644 index 00000000..28ce7a76 --- /dev/null +++ b/src/Entity/Municipality.php @@ -0,0 +1,69 @@ +code; + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + public function getName() + { + return $this->name; + } + + public function getProvinceID() + { + return $this->province_id; + } + + public function getProvinceName() + { + return $this->province_name; + } +}