address selection: filter addresses based on cities

This commit is contained in:
nobohan 2021-05-20 15:05:54 +02:00
parent 4cc308c936
commit 65859f62f3
5 changed files with 37 additions and 10 deletions

View File

@ -0,0 +1,27 @@
<?php
namespace Chill\MainBundle\Controller;
use Chill\MainBundle\CRUD\Controller\ApiController;
use Symfony\Component\HttpFoundation\Request;
/**
* Class AddressReferenceAPIController
*
* @package Chill\MainBundle\Controller
* @author Champs Libres
*/
class AddressReferenceAPIController extends ApiController
{
protected function customizeQuery(string $action, Request $request, $qb): void
{
if ($request->query->has('postal_code')) {
$qb->where('e.postcode = :postal_code')
->setParameter('postal_code', $request->get('postal_code'));
}
}
}

View File

@ -6,7 +6,7 @@ use Chill\MainBundle\CRUD\Controller\ApiController;
use Symfony\Component\HttpFoundation\Request;
/**
* Class PostalCodeController
* Class PostalCodeAPIController
*
* @package Chill\MainBundle\Controller
* @author Champs Libres

View File

@ -270,6 +270,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
]
],
[
'controller' => \Chill\MainBundle\Controller\AddressReferenceAPIController::class,
'class' => \Chill\MainBundle\Entity\AddressReference::class,
'name' => 'address_reference',
'base_path' => '/api/1.0/main/address-reference',

View File

@ -1,5 +1,5 @@
/*
* Endpoint countries GET
* Endpoint chill_api_single_country_index
* method GET, get Country Object
* @returns {Promise} a promise containing all Country object
*/
@ -15,7 +15,7 @@ const fetchCountries = () => {
};
/*
* Endpoint cities GET
* Endpoint chill_api_single_postal_code_index
* method GET, get Country Object
* @returns {Promise} a promise containing all Postal Code objects filtered with country
*/
@ -30,14 +30,14 @@ const fetchCities = (country) => {
};
/*
* Endpoint chill_main_address_reference_api_show
* Endpoint chill_api_single_address_reference_index
* method GET, get AddressReference Object
* @returns {Promise} a promise containing all AddressReference object
* @returns {Promise} a promise containing all AddressReference objects filtered with country
*/
const fetchReferenceAddresses = (city) => {
console.log('<<< fetching references addresses for', city); // city n'est pas utilisé pour le moment
const fetchReferenceAddresses = (postalCode) => {
console.log('<<< fetching references addresses for', postalCode);
//TODO deal with huge number of addresses... we should do suggestion...
const url = `/api/1.0/main/address-reference.json`;
const url = `/api/1.0/main/address-reference.json?item_per_page=1000&postal_code=${postalCode.id}`;
return fetch(url)
.then(response => {
if (response.ok) { return response.json(); }

View File

@ -187,8 +187,7 @@ export default {
},
getReferenceAddresses(city) {
console.log('getReferenceAddresses for', city.name);
fetchReferenceAddresses(city) // il me semble que le paramètre city va limiter le poids des adresses de références reçues
.then(addresses => new Promise((resolve, reject) => {
fetchReferenceAddresses(city).then(addresses => new Promise((resolve, reject) => {
console.log('addresses', addresses);
this.address.loaded.addresses = addresses.results;
resolve();