public function actionEdit() { $actionName = Yii::t('Product', 'Add Product'); $this->breadcrumbs = array(Yii::t('Product', 'Back To Product List') => array('index')); if (isset($_GET['id'])) { $model = ProductService::loadModel($_GET['id']); $actionName = Yii::t('Product', 'Edit Product'); $this->breadcrumbs[] = $model->name; } elseif (isset($_GET['source_id'])) { $model = ProductService::loadModel($_GET['source_id']); $model->name = ''; $model->display_order = ''; $model->product_manager = ''; $model->group_name = ''; $actionName = Yii::t('Product', 'Copy Product'); } else { $model = new Product(); $model->solution_value = "By Design,Duplicate,External,Fixed,Not Repro,Postponed,Won't Fix"; } self::checkEditable($model->id); if (isset($_POST['Product'])) { $model->attributes = $_POST['Product']; $productInfo = $_POST['Product']; if (isset($_GET['id'])) { $productInfo['id'] = $_GET['id']; } if (isset($_GET['source_id'])) { $editResult = ProductService::copyProduct($_GET['source_id'], $productInfo); } else { $editResult = ProductService::editProduct($productInfo); } $returnJson['status'] = $editResult['status']; $returnJson['detail'] = $editResult['detail']; if ($editResult['status'] == CommonService::$ApiResult['SUCCESS']) { if (isset($_GET['id'])) { $returnJson['detail'] = Yii::t('Product', 'Product edited successfully'); } elseif (isset($_GET['source_id'])) { $returnJson['detail'] = Yii::t('Product', 'Product copied successfully'); } else { $returnJson['detail'] = Yii::t('Product', 'Product added successfully'); } } echo json_encode($returnJson); return; } $this->render('edit', array('model' => $model, 'actionName' => $actionName)); }
/** * separate module as product * * @author youzhao.zxw<*****@*****.**> * @param int $id module id * @return array module separate result */ public static function separateModule($id) { $resultInfo = array(); $productModule = ProductModule::model()->findByPk($id); $productModel = ProductService::loadModel($productModule['product_id']); $productInfo = $productModel->attributes; $productInfo['name'] = $productModule['name']; $productInfo['group_name'] = $productModel->group_name; $productInfo['product_manager'] = $productModel->product_manager; unset($productInfo['id']); $createNewProductResult = ProductService::copyProduct($productModule['product_id'], $productInfo); if (CommonService::$ApiResult['FAIL'] == $createNewProductResult['status']) { return $createNewProductResult; } else { $newProductId = $createNewProductResult['detail']['id']; try { //update module's first layer child Yii::app()->db->createCommand()->setText('update {{product_module}} set product_id=' . $newProductId . ',grade=grade-' . $productModule['grade'] . ',full_path_name=name,parent_id=null ' . ' where product_id=' . $productModule['product_id'] . ' and parent_id=' . $id)->execute(); //update other layer child Yii::app()->db->createCommand()->setText('update {{product_module}} set product_id=' . $newProductId . ',grade=grade-' . $productModule['grade'] . ',full_path_name=REPLACE(full_path_name,' . Yii::app()->db->quoteValue($productModule['full_path_name'] . ProductModule::MODULE_SPLITTER) . ',"")' . ' where product_id=' . $productModule['product_id'] . ' and full_path_name like ' . Yii::app()->db->quoteValue($productModule['full_path_name'] . ProductModule::MODULE_SPLITTER . '%'))->execute(); $infoTypeArr = array(Info::TYPE_BUG, Info::TYPE_CASE, Info::TYPE_RESULT); foreach ($infoTypeArr as $info) { Yii::app()->db->createCommand()->setText('update {{' . $info . '_info}} set product_id=' . $newProductId . ',productmodule_id=null where productmodule_id=' . $id)->execute(); Yii::app()->db->createCommand()->setText('update {{' . $info . '_info}} set product_id=' . $newProductId . ' where productmodule_id in( select id from {{product_module}} where product_id=' . $newProductId . ')')->execute(); Yii::app()->db->createCommand()->setText('insert into {{etton' . $info . '_' . $newProductId . '}} select * from {{etton' . $info . '_' . $productModule['product_id'] . '}} where ' . $info . '_id in(select id from {{' . $info . '_info}} where product_id=' . $newProductId . ')')->execute(); Yii::app()->db->createCommand()->setText('delete from {{etton' . $info . '_' . $productModule['product_id'] . '}} where ' . $info . '_id in(select id from {{' . $info . '_info}} where product_id=' . $newProductId . ')')->execute(); } //delete separate module Yii::app()->db->createCommand()->setText('delete from {{product_module}} where id=' . $id)->execute(); } catch (Exception $e) { $resultInfo['status'] = CommonService::$ApiResult['FAIL']; $resultInfo['detail']['id'] = $e->getMessage(); return $resultInfo; } } $resultInfo['status'] = CommonService::$ApiResult['SUCCESS']; return $resultInfo; }