示例#1
0
 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));
 }
示例#2
0
 /**
  * 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;
 }