From 4cc308c936c65394582b2b919aa8212e54dab6cd Mon Sep 17 00:00:00 2001 From: nobohan Date: Thu, 20 May 2021 11:46:18 +0200 Subject: [PATCH] address selection: filter cities based on country --- .../Controller/PostalCodeAPIController.php | 27 +++++++++++++++++++ .../ChillMainExtension.php | 1 + .../Resources/public/vuejs/_api/AddAddress.js | 9 +++---- .../AddAddress/CountrySelection.vue | 8 ++++-- 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 src/Bundle/ChillMainBundle/Controller/PostalCodeAPIController.php diff --git a/src/Bundle/ChillMainBundle/Controller/PostalCodeAPIController.php b/src/Bundle/ChillMainBundle/Controller/PostalCodeAPIController.php new file mode 100644 index 000000000..397125bf8 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Controller/PostalCodeAPIController.php @@ -0,0 +1,27 @@ +query->has('country')) { + + $qb->where('e.country = :country') + ->setParameter('country', $request->get('country')); + + } + } + +} diff --git a/src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php b/src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php index 277e916a8..e6d82877d 100644 --- a/src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php +++ b/src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php @@ -290,6 +290,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, ] ], [ + 'controller' => \Chill\MainBundle\Controller\PostalCodeAPIController::class, 'class' => \Chill\MainBundle\Entity\PostalCode::class, 'name' => 'postal_code', 'base_path' => '/api/1.0/main/postal-code', diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js index 3b055da79..8b466a244 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js @@ -16,13 +16,12 @@ const fetchCountries = () => { /* * Endpoint cities GET -* TODO +* method GET, get Country Object +* @returns {Promise} a promise containing all Postal Code objects filtered with country */ const fetchCities = (country) => { console.log('<<< fetching cities for', country); - //TODO use country - //TODO deal with huge number of postal code ... we should do suggestion... - const url = `/api/1.0/main/postal-code.json`; + const url = `/api/1.0/main/postal-code.json?item_per_page=1000&country=${country.id}`; return fetch(url) .then(response => { if (response.ok) { return response.json(); } @@ -37,7 +36,7 @@ const fetchCities = (country) => { */ const fetchReferenceAddresses = (city) => { console.log('<<< fetching references addresses for', city); // city n'est pas utilisé pour le moment - + //TODO deal with huge number of addresses... we should do suggestion... const url = `/api/1.0/main/address-reference.json`; return fetch(url) .then(response => { diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue index 7d5e039e2..6c8b38b34 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue @@ -2,12 +2,13 @@
@@ -19,6 +20,9 @@ export default { name: 'CountrySelection', props: ['address', 'getCities'], + // data: () => { + // selected: this.address.loaded.countries.filter(c => c.countryCode === 'FR')[0] + // }, computed: { countries() { const countries = this.address.loaded.countries;