File Manager Lite
Dir:
/home/u540325668/domains/dumbafarm.in/public_html/src/Adapter/Customer/CommandHandler
Upload
[..]
AbstractCustomerHandler.php (2.46 KB)
Edit
Rename
Del
BulkDeleteCustomerHandler.php (2.04 KB)
Edit
Rename
Del
DeleteCustomerHandler.php (2.02 KB)
Edit
Rename
Del
EditCustomerHandler.php (8.36 KB)
Edit
Rename
Del
SetPrivateNoteAboutCustomerHandler.php (2.12 KB)
Edit
Rename
Del
SetRequiredFieldsForCustomerHandler.php (2.03 KB)
Edit
Rename
Del
Edit: EditCustomerHandler.php
<?php /** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Customer\CommandHandler; use Customer; use PrestaShop\PrestaShop\Core\Crypto\Hashing; use PrestaShop\PrestaShop\Core\Domain\Customer\Command\EditCustomerCommand; use PrestaShop\PrestaShop\Core\Domain\Customer\CommandHandler\EditCustomerHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Customer\Exception\CustomerDefaultGroupAccessException; use PrestaShop\PrestaShop\Core\Domain\Customer\Exception\CustomerException; use PrestaShop\PrestaShop\Core\Domain\Customer\Exception\DuplicateCustomerEmailException; use PrestaShop\PrestaShop\Core\Domain\Customer\ValueObject\RequiredField; use PrestaShop\PrestaShop\Core\Domain\ValueObject\Email; /** * Handles commands which edits given customer with provided data. * * @internal */ final class EditCustomerHandler extends AbstractCustomerHandler implements EditCustomerHandlerInterface { /** * @var Hashing */ private $hashing; /** * @var string Value of legacy _COOKIE_KEY_ */ private $legacyCookieKey; /** * @param Hashing $hashing * @param string $legacyCookieKey */ public function __construct(Hashing $hashing, $legacyCookieKey) { $this->hashing = $hashing; $this->legacyCookieKey = $legacyCookieKey; } /** * {@inheritdoc} */ public function handle(EditCustomerCommand $command) { $customerId = $command->getCustomerId(); $customer = new Customer($customerId->getValue()); $this->assertCustomerWasFound($customerId, $customer); $this->assertCustomerWithUpdatedEmailDoesNotExist($customer, $command); $this->assertCustomerCanAccessDefaultGroup($customer, $command); $this->updateCustomerWithCommandData($customer, $command); // validateFieldsRequiredDatabase() below is using $_POST // to check if required fields are set if ($command->isPartnerOffersSubscribed() !== null) { $_POST[RequiredField::PARTNER_OFFERS] = $command->isPartnerOffersSubscribed(); } elseif ($command->isNewsletterSubscribed() !== null) { $_POST[RequiredField::NEWSLETTER] = $command->isNewsletterSubscribed(); } // before validation, we need to get the list of customer mandatory fields from the database // and set their current values (only if it is not being modified: if it is not in $_POST) $requiredFields = $customer->getFieldsRequiredDatabase(); foreach ($requiredFields as $field) { if (!array_key_exists($field['field_name'], $_POST)) { $_POST[$field['field_name']] = $customer->{$field['field_name']}; } } $this->assertRequiredFieldsAreNotMissing($customer); if (false === $customer->validateFields(false)) { throw new CustomerException('Customer contains invalid field values'); } if (false === $customer->update()) { throw new CustomerException('Failed to update customer'); } } /** * @param Customer $customer * @param EditCustomerCommand $command */ private function updateCustomerWithCommandData(Customer $customer, EditCustomerCommand $command) { if (null !== $command->getGenderId()) { $customer->id_gender = $command->getGenderId(); } if (null !== $command->getFirstName()) { $customer->firstname = $command->getFirstName()->getValue(); } if (null !== $command->getLastName()) { $customer->lastname = $command->getLastName()->getValue(); } if (null !== $command->getEmail()) { $customer->email = $command->getEmail()->getValue(); } if (null !== $command->getPassword()) { $hashedPassword = $this->hashing->hash( $command->getPassword()->getValue(), $this->legacyCookieKey ); $customer->passwd = $hashedPassword; } if (null !== $command->getBirthday()) { $customer->birthday = $command->getBirthday()->getValue(); } if (null !== $command->isEnabled()) { $customer->active = $command->isEnabled(); } if (null !== $command->isPartnerOffersSubscribed()) { $customer->optin = $command->isPartnerOffersSubscribed(); } if (null !== $command->getGroupIds()) { $customer->groupBox = $command->getGroupIds(); } if (null !== $command->getDefaultGroupId()) { $customer->id_default_group = $command->getDefaultGroupId(); } if (null !== $command->isNewsletterSubscribed()) { $customer->newsletter = $command->isNewsletterSubscribed(); } $this->updateCustomerB2bData($customer, $command); } /** * @param Customer $customer * @param EditCustomerCommand $command */ private function updateCustomerB2bData(Customer $customer, EditCustomerCommand $command) { if (null !== $command->getCompanyName()) { $customer->company = $command->getCompanyName(); } if (null !== $command->getSiretCode()) { $customer->siret = $command->getSiretCode(); } if (null !== $command->getApeCode()) { $customer->ape = $command->getApeCode()->getValue(); } if (null !== $command->getWebsite()) { $customer->website = $command->getWebsite(); } if (null !== $command->getAllowedOutstandingAmount()) { $customer->outstanding_allow_amount = $command->getAllowedOutstandingAmount(); } if (null !== $command->getMaxPaymentDays()) { $customer->max_payment_days = $command->getMaxPaymentDays(); } if (null !== $command->getRiskId()) { $customer->id_risk = $command->getRiskId(); } } /** * @param Customer $customer * @param EditCustomerCommand $command */ private function assertCustomerWithUpdatedEmailDoesNotExist(Customer $customer, EditCustomerCommand $command) { // if email is not being updated // then assertion is not needed if (null === $command->getEmail()) { return; } if ($command->getEmail()->isEqualTo(new Email($customer->email))) { return; } $customerByEmail = new Customer(); $customerByEmail->getByEmail($command->getEmail()->getValue()); if ($customerByEmail->id) { throw new DuplicateCustomerEmailException($command->getEmail(), sprintf('Customer with email "%s" already exists', $command->getEmail()->getValue())); } } /** * @param Customer $customer * @param EditCustomerCommand $command */ private function assertCustomerCanAccessDefaultGroup(Customer $customer, EditCustomerCommand $command) { // if neither default group // nor group ids are being edited // then no need to assert if (null === $command->getDefaultGroupId() || null === $command->getGroupIds() ) { return; } if (!in_array($command->getDefaultGroupId(), $command->getGroupIds())) { throw new CustomerDefaultGroupAccessException(sprintf('Customer default group with id "%s" must be in access groups', $command->getDefaultGroupId())); } } }
Simpan