getObjectManager()->getUnitOfWork()->getIdentityMap()[OrderItem::class] ?? []) as $orderItem) { $this->checkOrderItem($orderItem, $eventArgs->getObjectManager()); } } private function checkOrderItem(OrderItem $orderItem, ObjectManager $objectManager): void { $menuItem = $this->menuItemRepository->findOneBy([ 'name' => $orderItem->getName(), 'foodVendor' => $orderItem->getFoodOrder() ->getFoodVendor(), ]); if ($menuItem === null) { $menuItem = new MenuItem; $menuItem->setName($orderItem->getName()); $menuItem->setFoodVendor($orderItem->getFoodOrder()->getFoodVendor()); $objectManager->persist($menuItem); } if ($menuItem->getAliasOf() !== null) { $menuItem = $menuItem->getAliasOf(); $orderItem->setName($menuItem->getName()); } $orderItem->setMenuItem($menuItem); if ($orderItem->getPriceCents() === 0) { $orderItem->setPriceCents($menuItem->getPriceCents()); } elseif ($orderItem->getPriceCents() !== $menuItem->getPriceCents()) { $menuItem->setPriceCents($orderItem->getPriceCents()); $objectManager->persist($menuItem); } } }