/**
  *
  * makeBean
  * @param array $resultset
  * @return \Application\Model\Bean\ProductPrintingArea
  */
 protected function makeBean($resultset)
 {
     return ProductPrintingAreaFactory::createFromArray($resultset);
 }
 /**
  *
  * @return array
  */
 public function updateAction()
 {
     if ($this->getRequest()->isPost()) {
         $params = $this->getRequest()->getParams();
         // 			echo '<pre>';
         // 			print_r($params);
         // 			die;
         // 			$id = $this->getRequest()->getParam('id_product_printing_area');
         // 			$productPrintingArea = ProductPrintingAreaQuery::create()->findByPKOrThrow($id, $this->i18n->_("Not exists the ProductPrintingArea with id {$id}"));
         try {
             $this->getProductPrintingAreaCatalog()->beginTransaction();
             // 				ProductPrintingAreaFactory::populate($productPrintingArea, $params);
             // 				$this->getProductPrintingAreaCatalog()->update($productPrintingArea);
             $documentTypes = ProductPrintingAreaFile::$DocumentType;
             $idEShop = $params['id_e_shop'];
             $urlLogoNet = $params['url_logo_net'];
             $favoriteArea = $params['favoriteArea'];
             $idProduct = $params['id_product'];
             foreach ($params['areas'] as $key => $area) {
                 $favorite = $favoriteArea == $key ? 1 : 0;
                 $productPrintingArea = ProductPrintingAreaFactory::createFromArray($area);
                 $productPrintingArea->setIdProduct($idProduct);
                 $productPrintingArea->setUrlLogoNet($urlLogoNet);
                 $productPrintingArea->setIdEShop($idEShop);
                 $productPrintingArea->setFavorite($favorite);
                 if ($productPrintingArea->getIdProductPrintingArea()) {
                     $this->getProductPrintingAreaCatalog()->update($productPrintingArea);
                 } else {
                     $this->getProductPrintingAreaCatalog()->create($productPrintingArea);
                 }
                 $idsPrintingAreas[] = $productPrintingArea->getIdProductPrintingArea();
                 $path = 'product-printing-area/' . $productPrintingArea->getIdProductPrintingArea() . '/';
                 $favoriteTechnique = $area['favorite'];
                 foreach ($area['techniques'] as $key2 => $technique) {
                     $favorite2 = $favoriteTechnique == $key2 ? 1 : 0;
                     $productionTime = ProductionTimePrintingTechniqueFactory::createFromArray($technique);
                     $productionTime->setIdProductPrintingArea($productPrintingArea->getIdProductPrintingArea());
                     $productionTime->setFavorite($favorite2);
                     if ($productionTime->getIdProductionTimeByPrintingTechnique()) {
                         $this->getProductionTimeByPrintingTechnique()->update($productionTime);
                     } else {
                         $this->getProductionTimeByPrintingTechnique()->create($productionTime);
                     }
                     $idsPrintingTechniques[] = $productionTime->getIdProductionTimeByPrintingTechnique();
                 }
                 $erasableProductionTimePrintingTechniques = ProductionTimePrintingTechniqueQuery::create()->whereAdd(ProductionTimePrintingTechnique::ID_PRODUCTION_TIME_BY_PRINTING_TECHNIQUE, $idsPrintingTechniques, ProductionTimePrintingTechniqueQuery::NOT_IN)->whereAdd(ProductionTimePrintingTechnique::ID_PRODUCT_PRINTING_AREA, $productPrintingArea->getIdProductPrintingArea())->find();
                 while ($erasableProductionTimePrintingTechnique = $erasableProductionTimePrintingTechniques->read()) {
                     $this->getProductionTimeByPrintingTechnique()->deleteById($erasableProductionTimePrintingTechnique->getIdProductionTimeByPrintingTechnique());
                 }
                 foreach ($documentTypes as $name => $documentType) {
                     $name .= $key;
                     $file = $this->saveFile($name, $path, $name);
                     if ($file) {
                         $productPrintingAreaFile = new ProductPrintingAreaFile();
                         $productPrintingAreaFile->setContent($file->getContent());
                         $productPrintingAreaFile->setType($file->getType());
                         $productPrintingAreaFile->setDocumentType($documentType);
                         $productPrintingAreaFile->setIdProductPrintingArea($productPrintingArea->getIdProductPrintingArea());
                         if (ProductPrintingAreaFileQuery::create()->whereAdd(ProductPrintingAreaFile::DOCUMENT_TYPE, $documentType)->whereAdd(ProductPrintingAreaFile::ID_PRODUCT_PRINTING_AREA, $productPrintingArea->getIdProductPrintingArea())->count()) {
                             $this->getProductPrintingAreaFileCatalog()->update($productPrintingAreaFile);
                         } else {
                             $this->getProductPrintingAreaFileCatalog()->create($productPrintingAreaFile);
                         }
                     }
                 }
             }
             $erasableAreas = ProductPrintingAreaQuery::create()->whereAdd(ProductPrintingArea::ID_PRODUCT_PRINTING_AREA, $idsPrintingAreas, ProductPrintingAreaQuery::NOT_IN)->whereAdd(ProductPrintingArea::ID_PRODUCT, $idProduct)->find();
             while ($erasableArea = $erasableAreas->read()) {
                 $erasableArea->setStatus(ProductPrintingArea::$Status['Inactive']);
                 $this->getProductPrintingAreaCatalog()->update($erasableArea);
             }
             $this->getProductPrintingAreaCatalog()->commit();
             $this->setFlash('ok', $this->i18n->_("The Product Printing Area with id {$id} has been updated."));
         } catch (Exception $e) {
             // 				$this->getProductPrintingAreaCatalog()->rollBack();
             // 				$this->setFlash('error', $this->i18n->_($e->getMessage()));
             throw $e;
             die;
         }
     }
     $this->_redirect('product/list');
 }