guifi·net GitLab devops

Commit 63049255 authored by Daniel's avatar Daniel
Browse files

US-025 apiPostalCode

Showing with 50 additions and 12 deletions
+50 -12
......@@ -11,16 +11,17 @@ function emergya_postal_code_form_webform_submission_create_drop_order_add_form_
// node form, regardless of node type.
// Add a checkbox to the node form about agreeing to terms of use.
// webform_submission_create_drop_order_add_form
/*
$cp = $form_state->getValue('postal_code');
$servicio = \Drupal::service('emergya_postal_code.api_postal_code');
$proName = $servicio->getProvince('41');
var_dump($proName);
*/
/*
$cp = $form_state->getValue('postal_code');
$servicio = \Drupal::service('emergya_postal_code.api_postal_code');
$proName = $servicio->getProvinceTown('41700');
var_dump($proName);
*/
$ajax = [
'callback' => 'callApiProvince',
'callback' => 'callApiPostalCode',
'event' => 'change',
'wrapper' => 'wapper-province',
'wrapper' => 'wrapper-cp',
'progress' => [
'type' => 'throbber',
'message' => t('Verifying...'),
......@@ -37,17 +38,35 @@ function emergya_postal_code_form_webform_submission_create_drop_order_add_form_
],
];
$form['elements']['location_page']['postal_code']['#ajax'] = $ajax;
$form['elements']['location_page']['province']['#prefix'] = '<div id="wapper-province">';
$form['elements']['location_page']['province']['#suffix'] = '</div>';
$ajaxL = [
'callback' => 'callApiProvince',
'event' => 'change',
'wrapper' => 'wrapper-cp',
'progress' => [
'type' => 'throbber',
'message' => t('Verifying...'),
],
];
$form['elements']['location_page']['town']['#ajax'] = $ajaxTown;
$form['elements']['location_page']['postal_code']['#ajax'] = $ajax;
//$form['elements']['location_page']['town']['#ajax'] = $ajaxTown;
}
function callApiPostalCode(&$form, FormStateInterface $form_state, $form_id) {
// no funciona el callback varias veces
$service = \Drupal::service('emergya_postal_code.api_postal_code');
$cp = $form_state->getValue('postal_code');
$nameProvince = $service->getProvinceTown($cp);
$form['elements']['location_page']['province_town']['province']['#value'] = $nameProvince['province'];
$form['elements']['location_page']['province_town']['town']['#value'] = $nameProvince['town'];
return $form['elements']['location_page']['province_town'];
}
function callApiProvince(&$form, FormStateInterface $form_state, $form_id) {
// funciona el callback varias veces
$service = \Drupal::service('emergya_postal_code.api_postal_code');
$cp = substr($form_state->getValue('postal_code'), 0, 2);
$nameProvince = $service->getProvince($cp);
......
......@@ -2,6 +2,7 @@
namespace Drupal\emergya_postal_code\Services;
use Drupal;
use Drupal\Component\Serialization\Json;
use GuzzleHttp\ClientInterface;
......@@ -34,5 +35,23 @@ public function getProvince($cp){
}
return '';
}
public function getProvinceTown($cp){
//TODO cambiar valor pais por parámetro
$url = "https://public.opendatasoft.com//api/records/1.0/search/?dataset=geonames-postal-code&q=&facet=country_code&facet=admin_name1&facet=admin_code1&facet=admin_name2&refine.postal_code=" . $cp ."&refine.country_code=ES";
$request = $this->httpClient->request('GET', $url);
if ($request->getStatusCode() == 200){
$body = $request->getBody();
$param = Json::decode($body);
$result = [
'province' => $param['records'][0]['fields']['admin_name2'],
'town' => $param['records'][0]['fields']['place_name'],
];
return $result;
}
return '';
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment