/**
  * Populate Product Template Model with data
  * @param Product Template object $model
  * @param int $counter
  */
 public function populateModelData(&$model, $counter)
 {
     assert('$model instanceof ProductTemplate');
     parent::populateModel($model);
     $productTemplateRandomData = self::getProductTemplatesRandomData();
     $name = $productTemplateRandomData['names'][$counter];
     $productCategoryName = self::getProductCategoryForTemplate($name);
     $allCats = ProductCategory::getAll();
     foreach ($allCats as $category) {
         if ($category->name == $productCategoryName) {
             $categoryId = $category->id;
         }
     }
     $productCategory = ProductCategory::getById($categoryId);
     $model->name = $name;
     $model->productCategories->add($productCategory);
     $model->priceFrequency = 2;
     $model->cost->value = 200;
     $model->listPrice->value = 200;
     $model->sellPrice->value = 200;
     $model->status = ProductTemplate::STATUS_ACTIVE;
     $model->type = ProductTemplate::TYPE_PRODUCT;
     $sellPriceFormula = new SellPriceFormula();
     $sellPriceFormula->type = SellPriceFormula::TYPE_EDITABLE;
     $model->sellPriceFormula = $sellPriceFormula;
 }
 /**
  * Resolve the product categories from prost
  * @param ProductTemplate $productTemplate
  * @param array $postData
  * @return array
  */
 public static function resolveProductTemplateHasManyProductCategoriesFromPost(ProductTemplate $productTemplate, $postData)
 {
     $newCategory = array();
     if (isset($postData['categoryIds']) && strlen($postData['categoryIds']) > 0) {
         $categoryIds = explode(",", $postData['categoryIds']);
         // Not Coding Standard
         foreach ($categoryIds as $categoryId) {
             $newCategory[$categoryId] = ProductCategory::getById((int) $categoryId);
         }
         if ($productTemplate->productCategories->count() > 0) {
             $categoriesToRemove = array();
             foreach ($productTemplate->productCategories as $index => $existingCategory) {
                 $categoriesToRemove[] = $existingCategory;
             }
             foreach ($categoriesToRemove as $categoryToRemove) {
                 $productTemplate->productCategories->remove($categoryToRemove);
             }
         }
         //Now add missing categories
         foreach ($newCategory as $category) {
             $productTemplate->productCategories->add($category);
         }
     } else {
         //remove all categories
         $productTemplate->productCategories->removeAll();
     }
     return $newCategory;
 }
示例#3
0
 public function actionEdit($id, $redirectUrl = null)
 {
     $productCategory = ProductCategory::getById(intval($id));
     $breadcrumbLinks = static::getDetailsAndEditBreadcrumbLinks();
     $breadcrumbLinks[] = StringUtil::getChoppedStringContent(strval($productCategory), 25);
     $view = new ProductCategoriesPageView(ProductDefaultViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $this->makeEditAndDetailsView($this->attemptToSaveModelFromPost($productCategory, $redirectUrl), 'Edit'), $breadcrumbLinks, 'ProductBreadCrumbView'));
     echo $view->render();
 }
 public function testChildProductCategories()
 {
     $childProductCategory = new ProductCategory();
     $childProductCategory->name = "My Test Category Child";
     $existingCats = ProductCategory::getByName('My Test Category');
     $childProductCategory->productCategory = $existingCats[0];
     $this->assertTrue($childProductCategory->save());
     $id = $childProductCategory->id;
     unset($childProductCategory);
     $childProductCategory = ProductCategory::getById($id);
     $this->assertEquals("My Test Category Child", $childProductCategory->name);
     $this->assertEquals("My Test Category", $existingCats[0]->name);
 }
 public function testSuperUserDeleteAction()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     Yii::app()->user->userModel = $super;
     $productCategory = ProductCategoryTestHelper::createProductCategoryByName("My New Category");
     //Delete a product template
     $this->setGetArray(array('id' => $productCategory->id));
     $this->resetPostArray();
     $productCategories = ProductCategory::getAll();
     $this->assertEquals(14, count($productCategories));
     $this->runControllerWithRedirectExceptionAndGetContent('productTemplates/category/delete');
     $productCategories = ProductCategory::getAll();
     $this->assertEquals(13, count($productCategories));
     try {
         ProductCategory::getById($productCategory->id);
         $this->fail();
     } catch (NotFoundException $e) {
         //success
     }
 }