/**
  * @param CustomerCreateOrUpdateEvent $event
  */
 public function customerUpdateProfile(CustomerCreateOrUpdateEvent $event)
 {
     $form = $this->request->request->get(self::THELIA_CUSTOMER_UPDATE_FORM_NAME);
     if (is_null($form) or !array_key_exists(CustomerFamilyFormListener::CUSTOMER_FAMILY_CODE_FIELD_NAME, $form)) {
         // Nothing to update => stop here !
         return;
     }
     // Erase SIRET and VAT if the customer is now in the 'particular' customer family.
     if ($form[CustomerFamilyFormListener::CUSTOMER_FAMILY_CODE_FIELD_NAME] == CustomerFamily::CUSTOMER_FAMILY_PARTICULAR) {
         $siret = '';
         $vat = '';
     } else {
         $siret = $form[CustomerFamilyFormListener::CUSTOMER_FAMILY_SIRET_FIELD_NAME];
         $vat = $form[CustomerFamilyFormListener::CUSTOMER_FAMILY_VAT_FIELD_NAME];
     }
     $newCustomerFamily = CustomerFamilyQuery::create()->findOneByCode($form[CustomerFamilyFormListener::CUSTOMER_FAMILY_CODE_FIELD_NAME]);
     $updateEvent = new CustomerCustomerFamilyEvent($event->getCustomer()->getId());
     $updateEvent->setCustomerFamilyId($newCustomerFamily->getId())->setSiret($siret)->setVat($vat);
     $event->getDispatcher()->dispatch(CustomerFamilyEvents::CUSTOMER_CUSTOMER_FAMILY_UPDATE, $updateEvent);
 }
 /**
  * @return mixed|\Thelia\Core\HttpFoundation\Response
  */
 public function customerUpdateAction()
 {
     if (null !== ($response = $this->checkAuth(array(AdminResources::MODULE), array('CustomerFamily'), AccessManager::UPDATE))) {
         return $response;
     }
     $error = "";
     $form = new CustomerCustomerFamilyForm($this->getRequest());
     try {
         $formValidate = $this->validateForm($form);
         $event = new CustomerCustomerFamilyEvent($formValidate->get('customer_id')->getData());
         $event->setCustomerFamilyId($formValidate->get('customer_family_id')->getData())->setSiret($formValidate->get('siret')->getData())->setVat($formValidate->get('vat')->getData());
         $this->dispatch(CustomerFamilyEvents::CUSTOMER_CUSTOMER_FAMILY_UPDATE, $event);
         $this->redirect(URL::getInstance()->absoluteUrl('/admin/customer/update?customer_id=' . $formValidate->get('customer_id')->getData()));
     } catch (\Exception $e) {
         $error = $e->getMessage();
     }
     $form->setErrorMessage($error);
     $this->getParserContext()->addForm($form)->setGeneralError($error);
     //Don't forget to fill the Customer form
     $customerId = $this->getRequest()->request->get('customer_customer_family_form')['customer_id'];
     if (null != ($customer = CustomerQuery::create()->findPk($customerId))) {
         $customerForm = $this->hydrateCustomerForm($customer);
         $this->getParserContext()->addForm($customerForm);
     }
     return $this->render('customer-edit', array('customer_id' => $this->getRequest()->request->get('customer_customer_family_form')['customer_id'], "order_creation_error" => Translator::getInstance()->trans($error, array(), CustomerFamily::MESSAGE_DOMAIN)));
 }