Projekt

Allgemein

Profil

Aktionen

GX-Task #47214

geschlossen

Unterstützung der AddonValues für den CustomerService

Von Daniel Würdemann vor fast 8 Jahren hinzugefügt. Vor fast 8 Jahren aktualisiert.

Status:
Erledigt
Priorität:
Normal
Zugewiesen an:
Daniel Würdemann
Kategorie:
Change
% erledigt:

100%

Betroffene Versionen:
Unbestimmt

Beschreibung

Unterstützung der AddonValues für den CustomerService

Nach Category-, Order- und ProductService werden die AddonValues ab Gambio GX 3.1.1.0_BETA4 nun auch im CustomerService unterstützt.

Betroffene Dateien:

  • GXMainComponents/Extensions/Customers/CreateAccountProcess.inc.php
  • GXMainComponents/Extensions/Customers/CustomerInputToCollectionTransformer.inc.php
  • GXMainComponents/Services/Core/Customer/Customer.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerAddonValueStorage.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerInputValidator.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerRegistrationInputValidatorService.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerRepository.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerService.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerServiceFactory.inc.php
  • GXMainComponents/Services/Core/Customer/CustomerWriteService.inc.php
  • GXMainComponents/Services/Core/Customer/Interfaces/CustomerInterface.inc.php
  • GXMainComponents/Services/Core/Customer/Interfaces/CustomerServiceInterface.inc.php
  • GXMainComponents/Services/Core/Customer/Interfaces/CustomerWriteServiceInterface.inc.php
  • GXMainComponents/Services/System/AddonValue/AddonValueStorageFactory.inc.php

CustomerInterface

Das CustomerInterface erweitert nun das AddonValueContainerInterface.


Customer

Die Klasse Customer implementiert nun folgende Methoden.

  • getAddonValueContainerId()
  • getAddonValue(StringType $key)
  • getAddonValues()
  • setAddonValue(StringType $key, StringType $value)
  • addAddonValues(KeyValueCollection $keyValueCollection)
  • deleteAddonValue(StringType $key)

Customer::__construct() weist Customer::$addonValues eine leere EditableKeyValueCollection zu.


CustomerService

CustomerService::createNewCustomer

vorher:

public function createNewCustomer(
    CustomerEmailInterface $email,
    CustomerPasswordInterface $password,
    DateTime $dateOfBirth,
    CustomerVatNumberInterface $vatNumber,
    CustomerCallNumberInterface $telephoneNumber,
    CustomerCallNumberInterface $faxNumber,
    AddressBlockInterface $addressBlock);

nachher:

public function createNewCustomer(
    CustomerEmailInterface $email,
    CustomerPasswordInterface $password,
    DateTime $dateOfBirth,
    CustomerVatNumberInterface $vatNumber,
    CustomerCallNumberInterface $telephoneNumber,
    CustomerCallNumberInterface $faxNumber,
    AddressBlockInterface $addressBlock,
    KeyValueCollection $addonValues);

Statt CustomerService, der CustomerReadService und CustomerWriteService vereint, wird aktuell CustomerReadService bzw. CustomerWriteService verwendet.


CustomerWriteService

CustomerWriteService::createNewRegistree

vorher:

public function createNewRegistree(
    CustomerEmailInterface $email,
    CustomerPasswordInterface $password,
    DateTime $dateOfBirth,
    CustomerVatNumberInterface $vatNumber,
    CustomerCallNumberInterface $telephoneNumber,
    CustomerCallNumberInterface $faxNumber,
    AddressBlockInterface $addressBlock
);

nachher:

public function createNewRegistree(
    CustomerEmailInterface $email,
    CustomerPasswordInterface $password,
    DateTime $dateOfBirth,
    CustomerVatNumberInterface $vatNumber,
    CustomerCallNumberInterface $telephoneNumber,
    CustomerCallNumberInterface $faxNumber,
    AddressBlockInterface $addressBlock,
    KeyValueCollection $addonValues
);

O.g. veränderte Methodenaufrufe befinden sich an folgenden Stellen:

  • CreateAccountProcess::_saveRegistree
  • CustomersApiV2Controller::post
  • CustomerService::createNewCustomer

CustomerWriteService::createNewRegistree

vorher:

public function createNewGuest(
    CustomerEmailInterface $email,
    DateTime $dateOfBirth,
    CustomerVatNumberInterface $vatNumber,
    CustomerCallNumberInterface $telephoneNumber,
    CustomerCallNumberInterface $faxNumber,
    AddressBlockInterface $addressBlock
);

nachher:

public function createNewGuest(
    CustomerEmailInterface $email,
    DateTime $dateOfBirth,
    CustomerVatNumberInterface $vatNumber,
    CustomerCallNumberInterface $telephoneNumber,
    CustomerCallNumberInterface $faxNumber,
    AddressBlockInterface $addressBlock,
    KeyValueCollection $addonValues
);

O.g. veränderte Methodenaufrufe befinden sich an folgenden Stellen:

  • CreateAccountProcess::_saveGuest
  • CustomersApiV2Controller::post
  • CustomerService::createNewGuest
  • PayPalController::actionReturnFromECS

CustomerRepository

CustomerRepository::__construct

vorher:

public function __construct(
    CustomerWriterInterface $customerWriter,
    CustomerReaderInterface $customerReader,
    CustomerDeleterInterface $customerDeleter,
    CustomerAddressRepositoryInterface $customerAddressRepository,
    AbstractCustomerFactory $customerFactory;

nachher:

public function __construct(
    CustomerWriterInterface $customerWriter,
    CustomerReaderInterface $customerReader,
    CustomerDeleterInterface $customerDeleter,
    CustomerAddressRepositoryInterface $customerAddressRepository,
    AbstractCustomerFactory $customerFactory,
    AddonValueServiceInterface $addonValueService);

CustomerRepository::store

Diese Methode ruft nun $this->addonValueService->storeAddonValues($customer); nach Speicherung des Customers auf.

CustomerRepository::getCustomerById

Diese Methode ruft nun $this->addonValueService-> loadAddonValues($customer); nach Laden des Customers auf.

CustomerRepository::getRegistreeByEmail

Diese Methode ruft nun $this->addonValueService-> loadAddonValues($customer); sofern ein Customer gefunden wurde.

CustomerRepository::deleteCustomerById

Diese Methode ruft nun $this->addonValueService-> deleteAddonValues($customer); nach Löschung des Customers auf.

CustomerRepository::deleteGuestByEmail

Diese Methode ruft nun $this->addonValueService-> deleteAddonValues($customer); auf.

CustomerRepository::getGuestByEmail

Diese Methode ruft nun $this->addonValueService-> loadAddonValues($customer); sofern ein Customer gefunden wurde.

CustomerRepository::filterCustomers

Diese Methode ruft nun $this->addonValueService-> loadAddonValues($customer); für alle gefundenen Customer Objekte.


CustomerInputToCollectionTransformer

CustomerInputToCollectionTransformer::_getCustomerCollectionFromInputArray

Diese Methode ruf nun CustomerInputToCollectionTransformer::_getCustomerAddonValuesFromInputArray auf.

Der Zugriff auf die addonValues erfolgt über $customerCollection->getValue('addon_values');.

CustomerInputToCollectionTransformer::_getCustomerAddonValuesFromInputArray

Diese Methode wurde hinzugefügt und gibt eine leere EditableKeyValueCollection zurück.

Mittels Overload kann diese Methode überladen werden, um eine EditableKeyValueCollection mit bestimmte Daten aus dem Übergabeparameter $intputArray(enthält $_POST) zu erstellen und zurückzugeben. Diese EditableKeyValueCollection sollte alle addonValues enthalten, die während der Validierung und Registrierung verarbeitet werden sollen.


CustomerRegistrationInputValidatorService

CustomerRegistrationInputValidatorService::validateCustomerDataByArray

Diese Methode ruft nun CustomerInputValidator::validateAddonValues($inputArray['addon_values']) auf. In $inputArray['addon_values']ist der Rückgabewert der Methode CustomerInputToCollectionTransformer::_getCustomerAddonValuesFromInputArray gespeichert.


CustomerInputValidator::validateAddonValues

Diese Methode wurde hinzugefügt und gibt true zurück.

Mittels Overload kann hier eine eigene Validierung der addonValues implementiert werden.

Beispiel

Im Anhang dieses Tickets befindet sich die Datei AddonValues_CustomerService_Sample.zip mit einem Beispiel, welches die Gast- und Kundenregistrierung um ein zusätzliches Formularelement inkl. Validierung erweitert und den Wert in die Tabelle addon_values_storage speichert.


Dateien

AddonValues_CustomerService_Sample.zip (9,24 KB) AddonValues_CustomerService_Sample.zip Beispiel Daniel Würdemann, 29.06.2016 14:42

Aktionen #1

Von Daniel Würdemann vor fast 8 Jahren aktualisiert

  • Status wurde von Gemeldet zu Testing geändert
Aktionen #2

Von Daniel Würdemann vor fast 8 Jahren aktualisiert

  • Tracker wurde von GX-Feature zu GX-Task geändert
  • Kategorie wurde von Innovation zu Change geändert
  • Status wurde von Testing zu Erledigt geändert
  • % erledigt wurde von 0 zu 100 geändert
Aktionen #3

Von Daniel Würdemann vor fast 8 Jahren aktualisiert

Aktionen

Auch abrufbar als: Atom PDF