class AddressValidator in Drupal Commerce Connector for AvaTax 8
Address validator controller.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\commerce_avatax\Controller\AddressValidator
Expanded class hierarchy of AddressValidator
File
- src/
Controller/ AddressValidator.php, line 17
Namespace
Drupal\commerce_avatax\ControllerView source
class AddressValidator extends ControllerBase {
/**
* The AvaTax library.
*
* @var \Drupal\commerce_avatax\AvataxLibInterface
*/
protected $avataxLib;
/**
* The renderer.
*
* @var \Drupal\Core\Render\Renderer
*/
protected $renderer;
/**
* The country repository.
*
* @var \CommerceGuys\Addressing\Country\CountryRepositoryInterface
*/
protected $countryRepository;
/**
* Constructs a new AddressValidator object.
*
* @param \Drupal\commerce_avatax\AvataxLibInterface $avatax_lib
* The AvaTax library.
* @param \Drupal\Core\Render\Renderer $renderer
* The renderer.
* @param \CommerceGuys\Addressing\Country\CountryRepositoryInterface $country_repository
* The country repository.
*/
public function __construct(AvataxLibInterface $avatax_lib, Renderer $renderer, CountryRepositoryInterface $country_repository) {
$this->avataxLib = $avatax_lib;
$this->renderer = $renderer;
$this->countryRepository = $country_repository;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('commerce_avatax.avatax_lib'), $container
->get('renderer'), $container
->get('address.country_repository'));
}
/**
* Provides address validation.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse
* The response.
*/
public function process(Request $request) {
$content = $request
->getContent();
if (empty($content)) {
return new JsonResponse([
'valid' => FALSE,
'output' => NULL,
], 400);
}
$data = $this->avataxLib
->validateAddress(Json::decode($content));
// If we have suggestion show it.
if (!empty($data['suggestion'])) {
$data['output'] = $this
->formatSuggestedAddress($data['original'], $data['suggestion'], $data['fields']);
$data['payload'] = base64_encode(Json::encode($data['suggestion']));
}
elseif (!empty($data['original']) && !$data['valid']) {
$data['output'] = $this
->formatSuggestedAddress($data['original']);
}
return new JsonResponse($data);
}
/**
* Format an address for use in modal.
*
* @param array $original
* Original formatted address.
* @param array $suggestion
* Suggested formatted address.
* @param array $fields
* Fields which are different on suggestion and original address.
*
* @return \Drupal\Component\Render\MarkupInterface|string
* Return a formatted address for use in the order request.
*/
protected function formatSuggestedAddress(array $original, array $suggestion = [], array $fields = []) {
$countries = $this->countryRepository
->getAll();
if (isset($original['country_code'])) {
$original['country_code'] = $countries[$original['country_code']] ?? $original['country_code'];
}
if (isset($suggestion['country_code'])) {
$suggestion['country_code'] = $countries[$suggestion['country_code']] ?? $suggestion['country_code'];
}
$build = [
'#theme' => 'avatax_address',
'#original' => $original,
'#suggestion' => $suggestion,
'#fields' => $fields,
];
// Render output for modal.
return $this->renderer
->renderPlain($build);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AddressValidator:: |
protected | property | The AvaTax library. | |
AddressValidator:: |
protected | property | The country repository. | |
AddressValidator:: |
protected | property | The renderer. | |
AddressValidator:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
AddressValidator:: |
protected | function | Format an address for use in modal. | |
AddressValidator:: |
public | function | Provides address validation. | |
AddressValidator:: |
public | function | Constructs a new AddressValidator object. | |
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |