public function setCustomerDetails($locale, Customer $customer, $firstName, $lastName, $email)
 {
     $client = $this->getClient();
     $request = CustomerUpdateRequest::ofIdAndVersion($customer->getId(), $customer->getVersion());
     if ($customer->getFirstName() != $firstName || $customer->getLastName() != $lastName) {
         $request->addAction(CustomerChangeNameAction::ofFirstNameAndLastName($firstName, $lastName));
     }
     if ($customer->getEmail() != $email) {
         $request->addAction(CustomerChangeEmailAction::ofEmail($email));
     }
     $response = $request->executeWithClient($client);
     if ($response->isError()) {
         return null;
     }
     $customer = $request->mapFromResponse($response, $this->getMapper($locale));
     return $customer;
 }
 public static function ofCustomer(Customer $customer)
 {
     $userDetails = new static();
     $userDetails->setFirstName($customer->getFirstName());
     $userDetails->setLastName($customer->getLastName());
     $userDetails->setEmail($customer->getEmail());
     return $userDetails;
 }