/** * Create product from product template when user select a product * template while adding a product in product portlet view * @param string $relationModuleId * @param int $portletId * @param string $uniqueLayoutId * @param int $id * @param int $relationModelId * @param string $relationAttributeName * @param string $relationModelClassName */ public function actionCreateProductFromProductTemplate($relationModuleId, $portletId, $uniqueLayoutId, $id, $relationModelId, $relationAttributeName, $relationModelClassName = null, $redirect = true) { if ($relationModelClassName == null) { $relationModelClassName = Yii::app()->getModule($relationModuleId)->getPrimaryModelName(); } $productTemplate = static::getModelAndCatchNotFoundAndDisplayError('ProductTemplate', intval($id)); $product = new Product(); $product->name = $productTemplate->name; $product->description = $productTemplate->description; $product->quantity = 1; $product->productTemplate = $productTemplate; $sellPrice = new CurrencyValue(); $sellPrice->value = $productTemplate->sellPrice->value; $sellPrice->currency = $productTemplate->sellPrice->currency; $product->priceFrequency = $productTemplate->priceFrequency; $product->sellPrice = $sellPrice; $product->type = $productTemplate->type; $controllerUtil = static::getZurmoControllerUtil(); $controllerUtil->resolveStageDefaultValue($product); foreach ($productTemplate->productCategories as $productCategory) { $product->productCategories->add($productCategory); } $relatedModel = $relationModelClassName::getById((int) $relationModelId); $product->{$relationAttributeName} = $relatedModel; $this->addRelatedModelAccountToModel($product, $relatedModel); $product->save(); ZurmoControllerUtil::updatePermissionsWithDefaultForModelByCurrentUser($product); if ((bool) $redirect) { $isViewLocked = ZurmoDefaultViewUtil::getLockKeyForDetailsAndRelationsView('lockPortletsForDetailsAndRelationsView'); $redirectUrl = Yii::app()->createUrl('/' . $relationModuleId . '/default/details', array('id' => $relationModelId)); $this->redirect(array('/' . $relationModuleId . '/defaultPortlet/modalRefresh', 'portletId' => $portletId, 'uniqueLayoutId' => $uniqueLayoutId, 'redirectUrl' => $redirectUrl, 'portletParams' => array('relationModuleId' => $relationModuleId, 'relationModelId' => $relationModelId), 'portletsAreRemovable' => !$isViewLocked)); } }
public function actionCreateEmailMessage($toAddress = null, $relatedId = null, $relatedModelClassName = null) { $postData = PostUtil::getData(); $getData = GetUtil::getData(); $personOrAccount = self::resolvePersonOrAccountFromGet($relatedId, $relatedModelClassName); $emailMessage = new EmailMessage(); $emailMessageForm = new CreateEmailMessageForm($emailMessage); $emailMessageForm->setScenario('createNonDraft'); $postVariableName = get_class($emailMessageForm); if ($toAddress == null && $personOrAccount != null && $personOrAccount->primaryEmail->emailAddress != null) { $toAddress = $personOrAccount->primaryEmail->emailAddress; } if (isset($postData[$postVariableName])) { EmailMessageUtil::resolveEmailMessageFromPostData($postData, $emailMessageForm, Yii::app()->user->userModel); $this->actionValidateCreateEmailMessage($postData, $emailMessageForm); $this->attemptToSaveModelFromPost($emailMessageForm, null, false); ZurmoControllerUtil::updatePermissionsWithDefaultForModelByCurrentUser($emailMessageForm->getModel()); Yii::app()->jobQueue->add('ProcessOutboundEmail'); } else { EmailMessageUtil::resolveSignatureToEmailMessage($emailMessage, Yii::app()->user->userModel); EmailMessageUtil::resolvePersonOrAccountToEmailMessage($emailMessage, Yii::app()->user->userModel, $toAddress, $relatedId, $relatedModelClassName); $createEmailMessageModalEditView = new CreateEmailMessageModalEditView($this->getId(), $this->getModule()->getId(), $emailMessageForm); $view = new ModalView($this, $createEmailMessageModalEditView); Yii::app()->getClientScript()->setToAjaxMode(); echo $view->render(); } }