src/AppBundle/EventListener/SaveObjectListener.php line 231

Open in your IDE?
  1. <?php
  2. namespace AppBundle\EventListener;
  3.   
  4. use Pimcore\Event\Model\ElementEventInterface;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use \Pimcore\Model\DataObject;
  7. use \Pimcore\Model\DataObject\BundleItem;
  8. use Pimcore\Db;
  9. use Pimcore\Log\ApplicationLogger;
  10. class SaveObjectListener {
  11.      
  12.     public function onPostUpdate (ElementEventInterface $e
  13.     {
  14.        
  15.         if($e instanceof AssetEvent
  16.         {
  17.           // do something with the asset
  18.             $foo $e->getAsset(); 
  19.         }
  20.          else if ($e instanceof DocumentEvent)
  21.         {
  22.             // do something with the document
  23.             $foo $e->getDocument(); 
  24.         } 
  25.         else if ($e instanceof DataObjectEvent
  26.         {
  27.             // do something with the object
  28.             $foo $e->getObject();          
  29.             $pid =  $foo->getId(); 
  30.             $claname '';
  31.             $otype $foo->geto_type();
  32.             if($otype == 'object')
  33.             {
  34.                 $claname $foo->geto_className(); 
  35.                  $o_published =$foo->geto_published();       
  36.             }                        
  37.             if(($claname == 'bundleItem' || $claname == 'BundleItem' ) && $o_published == )
  38.             {
  39.                 //$itemShortDesc = $foo->getitemShortDesc();
  40.                 //$itemDesc = $foo->getitemDesc();
  41.                 $childSkuDetails=$foo->getChildSKUs();
  42.                 $parentSkuDetails=$foo->getParentSKU();
  43.                 $compQty=$foo->getComponentQty();
  44.                 $totalchildSku count($childSkuDetails);
  45.                 $totalparentsku count($parentSkuDetails);  
  46.                  $deleteRequest $foo->getdeleteRequest();  
  47.                 $objectpe DataObject::getByPath("/Product/");
  48.                 $objectpeparentId $objectpe->getId();
  49.         
  50.                 $j=1;    
  51.                  $table "object_bundle";
  52.                // $sql = "select * from ".$table." where o_parentId='".$objectpeparentId."' and o_id='".$pid."'";
  53.                 $sql "select * from ".$table." where o_id='".$pid."'";
  54.                 // throw new \Pimcore\Model\Element\ValidationException($sql, 1234);
  55.                 $stmt Db::get()->prepare($sql);
  56.                 $stmt->execute();
  57.                 $data =$stmt->fetchAll();
  58.                 $totalparentrec count($data); 
  59.                 $o_parentId $data[0]['o_parentId'];
  60.                  $parentData DataObject::getById($o_parentId);
  61.                  $o_type$parentData->geto_type();
  62.               
  63.                 if($o_type != 'folder')
  64.                 {
  65.                     //throw new \Pimcore\Model\Element\ValidationException('', 1234);
  66.                 }
  67.                //  $table = "object_bundle";
  68.                // // $sql = "select * from ".$table." where o_parentId='".$objectpeparentId."' and o_id='".$pid."'";
  69.                //  $sql = "select * from ".$table." where o_parentId='".$pid."'";
  70.                //  // throw new \Pimcore\Model\Element\ValidationException($sql, 1234);
  71.                //  $stmt = Db::get()->prepare($sql);
  72.                //  $stmt->execute();
  73.                //  $data =$stmt->fetchAll();
  74.                //  $totalrec = count($data); 
  75.                 if($o_type == 'folder')
  76.                 {
  77.                             $tableOne "object_bundle";
  78.                             $query "select * from ".$tableOne." where o_parentId='".$pid."'";
  79.                             $statment Db::get()->prepare($query);
  80.                             $statment->execute();
  81.                             $dataGet =$statment->fetchAll();
  82.                             $totalResult count($dataGet); 
  83.                             if($totalResult 0)
  84.                             {
  85.                                 $m=0;
  86.                                 while($m count($dataGet))
  87.                                 {
  88.                                      $childId $dataGet[$m]['o_id'];
  89.                                      $m++;
  90.                                      
  91.                                      $updateChildSku=DataObject\BundleItem::getById($childId);
  92.                                      $compQtyUpdate=$updateChildSku->getComponentQty();
  93.                                       $updateChildSku->setdeleteRequest($deleteRequest);
  94.                                      $updateChildSku->setComponentQty($compQtyUpdate);
  95.                                      $updateChildSku->setInJDAProcess("no"); 
  96.                                      $updateChildSku->save();
  97.                                 }
  98.                             }
  99.                             else 
  100.                             {
  101.                                 if($totalchildSku && $totalparentsku )
  102.                                 {     
  103.                                     $i=1;
  104.                                     foreach ($parentSkuDetails as $parentList
  105.                                     {
  106.                                         $setCodeForParent=$parentList->getsetCode();
  107.                                         $parentId=$parentList->getId();
  108.                                         $parSkuNumber=$parentList->getsku();
  109.                                         if($setCodeForParent=='0')
  110.                                         {
  111.                                             $setCode=$parentList->getId();
  112.                                             throw new \Pimcore\Model\Element\ValidationException($setCode " Parent Object set code is 0 so this object is not added."1234);
  113.                                         }
  114.                                         elseif($parSkuNumber == Null)
  115.                                         {
  116.                                             throw new \Pimcore\Model\Element\ValidationException($setCode " Parent Object does not have sku number."1234);
  117.                                             $query "delete from  object_relations_bundle where dest_id='".$setCode."'and fieldname='ParentSKU'";
  118.                                             $stmt Db::get()->prepare($query);
  119.                                             $stmt->execute();
  120.                                         }
  121.                                         else
  122.                                         {
  123.                                             foreach ($childSkuDetails as $childDeatil
  124.                                             {
  125.                                                 $setCodeForChild=$childDeatil->getsetCode();
  126.                                                 $childskuid=$childDeatil->getId();
  127.                                                 $childSkuNumber=$childDeatil->getsku();
  128.                                                 
  129.                                                  if($setCodeForChild != '0')
  130.                                                 {
  131.                                                     $setCodeChild=$childDeatil->getId();
  132.                                                     //validation msg for child sku set code is not 0
  133.                                                     throw new \Pimcore\Model\Element\ValidationException($setCodeChild " Child sku Object set code is not 0 so this object is not added."1234);
  134.                                                 }
  135.                                                 elseif($childSkuNumber == Null || $childSkuNumber == NULL || $childSkuNumber == null )
  136.                                                 {
  137.                                                     $setCodeChild=$childDeatil->getId();
  138.                                                     //validation msg for sku number is not present
  139.                                                     throw new \Pimcore\Model\Element\ValidationException($setCodeChild " Child sku Object does not have sku number."1234);
  140.                                                     $query "delete from  object_relations_bundle where dest_id='".$setCodeChild."'and fieldname='ChildSKUs'";
  141.                                                     $stmt Db::get()->prepare($query);
  142.                                                     $stmt->execute();
  143.                                                     
  144.                                                 }
  145.                                                 else
  146.                                                 {
  147.                                                     $objectChildSku = new DataObject\BundleItem();
  148.                                                     $objectChildSku->setParent(DataObject\BundleItem::getById($pid)); 
  149.                                                     $getDes=$childDeatil->getitemShortDesc();
  150.                                                     $childObjectNamecode "ChildSku - ".$childskuid;            
  151.                                                     $objectChildSku->setKey(\Pimcore\Model\Element\Service::getValidKey($childObjectNamecode'object'));
  152.                                                     $objectChildSku->setComponentQty($compQty);
  153.                                                     $objectChildSku->setdeleteRequest($deleteRequest);
  154.                                                     $objectChildSku->setPublished(true);
  155.                                                     $objectChildSku->setInJDAProcess("no"); 
  156.                                                     $objectChildSku->save();
  157.                                                     $newId $objectChildSku->getId();                       
  158.                                                     foreach ($parentSkuDetails as $parentSkuDetailsdata
  159.                                                     {
  160.                                            
  161.                                                         $parentskuid=$parentSkuDetailsdata->getId();
  162.                                                     }            
  163.                                                     
  164.                                                     $query "INSERT INTO `object_relations_bundle` (`src_id`, `dest_id`, `type`, `fieldname`, `index`, `ownertype`, `ownername`, `position`) VALUES ('".$newId."', '".$parentskuid."', 'object', 'ParentSKU', '".$j."', 'object', '', '0');";
  165.                                                     $stmt Db::get()->prepare($query);
  166.                                                     $rdata =  $stmt->execute();       
  167.                                                     // 
  168.                                                     $query "INSERT INTO `object_relations_bundle` (`src_id`, `dest_id`, `type`, `fieldname`, `index`, `ownertype`, `ownername`, `position`) VALUES ('".$newId."', '".$childskuid."', 'object', 'ChildSKUs', '".$j."', 'object', '', '0');";
  169.                                                     $stmt Db::get()->prepare($query);
  170.                                                     $rdata =  $stmt->execute();
  171.                                                     try
  172.                                                     {         
  173.                                                         $childObject=$objectChildSku->getId();
  174.                                                     }
  175.                                                     catch(\Exception $e)
  176.                                                     {
  177.                                                         $errorMessage $e->getMessage();
  178.                                                         $logger->error$errorMessage, ['relatedObject' => $childObject"versionNote" => date("Y-m-d")." version"]);
  179.                                                     }
  180.                                                     
  181.                                                     $j++;
  182.                                                 }                                                              
  183.                                             }                                     
  184.                                             $i++;                                 
  185.                                         }         
  186.                                     }  
  187.                                 }
  188.                             }  
  189.                 }
  190.                                           
  191.                 
  192.             }
  193.         }
  194.     }
  195.     public function onPreAdd(ElementEventInterface $e)
  196.     {
  197.     }
  198.     public function onPreUpdate(ElementEventInterface $e)
  199.     {
  200.         DataObject\AbstractObject::setHideUnpublished(false);
  201.     }
  202. }