/** * @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))); }