GX-Task #47214
geschlossenUnterstützung der AddonValues für den CustomerService
100%
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
Von Daniel Würdemann vor mehr als 8 Jahren aktualisiert
- Status wurde von Gemeldet zu Testing geändert
Von Daniel Würdemann vor mehr als 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
Von Daniel Würdemann vor mehr als 8 Jahren aktualisiert
- Datei AddonValues_CustomerService_Sample.zip AddonValues_CustomerService_Sample.zip wurde hinzugefügt
- Beschreibung aktualisiert (Vergleich)