| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\CustomerGraphQl\Model\Customer;
 
- use Magento\Customer\Api\CustomerRepositoryInterface;
 
- use Magento\Framework\Exception\AlreadyExistsException;
 
- use Magento\Framework\GraphQl\Exception\GraphQlAlreadyExistsException;
 
- use Magento\Framework\GraphQl\Exception\GraphQlInputException;
 
- use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
 
- use Magento\Store\Model\StoreManagerInterface;
 
- /**
 
-  * Update customer data
 
-  */
 
- class UpdateCustomerData
 
- {
 
-     /**
 
-      * @var CustomerRepositoryInterface
 
-      */
 
-     private $customerRepository;
 
-     /**
 
-      * @var StoreManagerInterface
 
-      */
 
-     private $storeManager;
 
-     /**
 
-      * @var CheckCustomerPassword
 
-      */
 
-     private $checkCustomerPassword;
 
-     /**
 
-      * @param CustomerRepositoryInterface $customerRepository
 
-      * @param StoreManagerInterface $storeManager
 
-      * @param CheckCustomerPassword $checkCustomerPassword
 
-      */
 
-     public function __construct(
 
-         CustomerRepositoryInterface $customerRepository,
 
-         StoreManagerInterface $storeManager,
 
-         CheckCustomerPassword $checkCustomerPassword
 
-     ) {
 
-         $this->customerRepository = $customerRepository;
 
-         $this->storeManager = $storeManager;
 
-         $this->checkCustomerPassword = $checkCustomerPassword;
 
-     }
 
-     /**
 
-      * Update account information
 
-      *
 
-      * @param int $customerId
 
-      * @param array $data
 
-      * @return void
 
-      * @throws GraphQlNoSuchEntityException
 
-      * @throws GraphQlInputException
 
-      * @throws GraphQlAlreadyExistsException
 
-      */
 
-     public function execute(int $customerId, array $data): void
 
-     {
 
-         $customer = $this->customerRepository->getById($customerId);
 
-         if (isset($data['firstname'])) {
 
-             $customer->setFirstname($data['firstname']);
 
-         }
 
-         if (isset($data['lastname'])) {
 
-             $customer->setLastname($data['lastname']);
 
-         }
 
-         if (isset($data['email']) && $customer->getEmail() !== $data['email']) {
 
-             if (!isset($data['password']) || empty($data['password'])) {
 
-                 throw new GraphQlInputException(__('Provide the current "password" to change "email".'));
 
-             }
 
-             $this->checkCustomerPassword->execute($data['password'], $customerId);
 
-             $customer->setEmail($data['email']);
 
-         }
 
-         $customer->setStoreId($this->storeManager->getStore()->getId());
 
-         try {
 
-             $this->customerRepository->save($customer);
 
-         } catch (AlreadyExistsException $e) {
 
-             throw new GraphQlAlreadyExistsException(
 
-                 __('A customer with the same email address already exists in an associated website.'),
 
-                 $e
 
-             );
 
-         }
 
-     }
 
- }
 
 
  |