コード例 #1
0
ファイル: OrderStrategy.php プロジェクト: dairdr/crm
 /**
  * @param Order $entityToUpdate
  * @param Order $entityToImport
  */
 protected function processItems(Order $entityToUpdate, Order $entityToImport)
 {
     $importedOriginIds = $entityToImport->getItems()->map(function (OrderItem $item) {
         return $item->getOriginId();
     })->toArray();
     // insert new and update existing items
     /** @var OrderItem $item - imported order item */
     foreach ($entityToImport->getItems() as $item) {
         $originId = $item->getOriginId();
         $existingItem = $entityToUpdate->getItems()->filter(function (OrderItem $item) use($originId) {
             return $item->getOriginId() == $originId;
         })->first();
         if ($existingItem) {
             $this->strategyHelper->importEntity($existingItem, $item, ['id', 'order']);
             $item = $existingItem;
         }
         if (!$item->getOrder()) {
             $item->setOrder($entityToUpdate);
         }
         if (!$entityToUpdate->getItems()->contains($item)) {
             $entityToUpdate->getItems()->add($item);
         }
     }
     // delete order items that not exists in remote order
     $deleted = $entityToUpdate->getItems()->filter(function (OrderItem $item) use($importedOriginIds) {
         return !in_array($item->getOriginId(), $importedOriginIds);
     });
     foreach ($deleted as $item) {
         $entityToUpdate->getItems()->remove($item);
     }
 }
コード例 #2
0
ファイル: OrderStrategy.php プロジェクト: rodolfobandeira/crm
 /**
  * @param Order $order
  *
  * @return OrderStrategy
  */
 protected function processItems(Order $order)
 {
     foreach ($order->getItems() as $item) {
         $item->setOwner($order->getOrganization());
         $item->setOrder($order);
     }
     return $this;
 }