request->get('id'); $hosting = Hosting::where('id', $hid)->first(); //todo refactor $this->data['domain'] = $hosting->domain; $lang = di('lang'); $this->availableValues['status'] = [ Kerio::ACC_STATUS_ACTIVE => $lang->absoluteT('kerio','account','status','active'), Kerio::ACC_STATUS_LOCKED => $lang->absoluteT('kerio','account','status','locked'), Kerio::ACC_STATUS_MAINTENANCE => $lang->absoluteT('kerio','account','status','maintenance'), Kerio::ACC_STATUS_CLOSED => $lang->absoluteT('kerio','account','status','closed'), Kerio::ACC_STATUS_LOCKOUT => $lang->absoluteT('kerio','account','status','lockout'), Kerio::ACC_STATUS_PENDING => $lang->absoluteT('kerio','account','status','pending') ]; /** * product manager allow to check product settings */ $this->readCosParams(); } public function create() { /** * hosting id */ $hid = $this->request->get('id'); $fieldToProtection = ['firstname', 'lastname', 'display_name', 'company', 'title', 'country', 'state', 'city', 'street', 'post_code' ]; foreach ($this->formData as $field => &$value) { $value = in_array($field, $fieldToProtection) ? htmlentities($value) : $value; } /** * product manager allow to check product settings */ $productManager = new ProductManager(); $productManager->loadByHostingId($hid); /** * * get soap create domain service */ $service =(new KerioManager()) ->getApiByHosting($hid) ->soap ->service() ->createAccount($productManager->get('cos_name')); /** * * set product manager & form data to service */ $service ->setProductManager($productManager) ->setFormData($this->formData); /** * * run service */ $result = $service->run(); /** * * return success or error response */ if(!$result) { return (new HtmlDataJsonResponse())->setMessageAndTranslate($service->getError())->setStatusError(); } return (new HtmlDataJsonResponse())->setMessageAndTranslate('emailAccountHasBeenAdded')->setStatusSuccess(); } public function updateStatus() { } public function update() { /** * hosting id */ $hid = $this->request->get('id'); /** * product manager allow to check product settings */ $productManager = new ProductManager(); $productManager->loadByHostingId($hid); /** * * get soap create domain service */ $service =(new KerioManager()) ->getApiByHosting($hid) ->soap ->service() ->updateAccountStatus() ->setProductManager($productManager) ; /** * * set product manager & form data to service */ /** * run service for each id */ foreach($this->request->get('massActions') as $id) { $service->setFormData(['status' => $this->formData['status'], 'id' => $id]); $result = $service->run(); } /** * return success */ return (new HtmlDataJsonResponse())->setMessageAndTranslate('massEmailAccountStatusHasBeenUpdated')->setStatusSuccess(); } /** * * read data per cos_name */ protected function readCosParams() { $hid = $this->request->get('id'); /** * * load product manager */ $productManager = new ProductManager(); $productManager->loadByHostingId($hid); /** * * check if class of services should be selectable */ if($productManager->get('cos_name') === ClassOfServices::CLASS_OF_SERVICE_QUOTA) { /** * * get soap create domain service */ $api =(new KerioManager()) ->getApiByHosting($hid) ->soap; /** * * get cos from API */ $classOfServices = $api->repository()->cos->all(); /** * * load configurable options coses */ $supportedCos = $productManager->getSettingCos(); /** * * add COS to array */ $configoptions = $this->getFilteredCosConfigurableOptions(); foreach($classOfServices as $cos) { /** * * * skip COS which is not used in configurable options */ if(!($supportedCos && array_key_exists($cos->getId(), $supportedCos))) { continue; } /** * 1. check if config opts are available * 2. skip if class of services doesnt exists in config option list */ if($configoptions && !array_key_exists('cosQuota_'.$cos->getId(), $configoptions)) { continue; } /** * 1. check if config opts are available * 2. skip not purchased as CO */ if ($configoptions && $configoptions['cosQuota_'.$cos->getId()] == 0) { continue; } /** * 1. check if config opts are not available * 2. skip if quantity === 0 */ if(!$configoptions && $supportedCos[$cos->getId()] == 0) { continue; } /* @var $cos ClassOfService*/ $this->availableValues['cosId'][$cos->getId()] = $cos->getMbMailQuote().' MB'; } return $this; } /** * * check if class of service is choosen by config opt */ if($productManager->get('cos_name') === ClassOfServices::KERIO_CONFIG_OPTIONS) { $this->data['cosId'] = key($productManager->getSettingCos()); return $this; } /** * * if cos_name is dedicated (loaded from API) */ if($productManager->get('cos_name') !== ClassOfServices::CUSTOM_KERIO) { /** * if dedicated class of service has been selected */ $this->data['cosId'] = $productManager->get('cos_name'); return $this; } return $this; } /** * @return bool|mixed */ protected function getFilteredCosConfigurableOptions() { $configoptions = $this->getWhmcsParamByKey('configoptions'); foreach($configoptions as $key => $value) { if(strpos($key, ClassOfServicesOptions::COS_CONFIG_OPT_PREFIX) === false) { unset($configoptions[$key]); } } return $configoptions; } }