/** * Find line item with the same product and unit * * @param LineItem $lineItem * * @return LineItem */ public function findDuplicate(LineItem $lineItem) { $qb = $this->createQueryBuilder('li')->where('li.product = :product')->andWhere('li.unit = :unit')->andWhere('li.shoppingList = :shoppingList')->setParameter('product', $lineItem->getProduct())->setParameter('unit', $lineItem->getUnit())->setParameter('shoppingList', $lineItem->getShoppingList()); if ($lineItem->getId()) { $qb->andWhere('li.id != :currentId')->setParameter('currentId', $lineItem->getId()); } return $qb->getQuery()->getOneOrNullResult(); }
/** * @param LineItem $data * @param ExecutionContextInterface $context */ public function checkShoppingListLabel($data, ExecutionContextInterface $context) { if (!$data->getShoppingList()) { $context->buildViolation('orob2b.shoppinglist.not_empty')->atPath('shoppingListLabel')->addViolation(); } }