public function testBulkAddLineItems() { $shoppingList = new ShoppingList(); $lineItems = []; for ($i = 0; $i < 10; $i++) { $lineItems[] = new LineItem(); } $this->manager->bulkAddLineItems($lineItems, $shoppingList, 10); $this->assertEquals(10, $shoppingList->getLineItems()->count()); }
/** * @param ShoppingList $shoppingList * @param array $productIds * @param array $productQuantities * @return int Added entities count */ public function createForShoppingList(ShoppingList $shoppingList, array $productIds = [], array $productQuantities = []) { if (!$this->isAllowed($shoppingList)) { throw new AccessDeniedException(); } /** @var ProductRepository $productsRepo */ $productsRepo = $this->managerRegistry->getManagerForClass($this->productClass)->getRepository($this->productClass); $iterableResult = $productsRepo->getProductsQueryBuilder($productIds)->getQuery()->iterate(); $lineItems = []; foreach ($iterableResult as $entityArray) { /** @var Product $product */ $product = reset($entityArray); /** @var ProductUnitPrecision $unitPrecision */ $unitPrecision = $product->getUnitPrecisions()->first(); $lineItem = (new LineItem())->setAccountUser($shoppingList->getAccountUser())->setOrganization($shoppingList->getOrganization())->setProduct($product)->setUnit($unitPrecision->getUnit()); $productId = $product->getId(); if (array_key_exists($productId, $productQuantities)) { $lineItem->setQuantity($productQuantities[$productId]); } $lineItems[] = $lineItem; } return $this->shoppingListManager->bulkAddLineItems($lineItems, $shoppingList, self::FLUSH_BATCH_SIZE); }