public function preFlush(PreFlushEventArgs $args)
{
$entityManager = $args->getEntityManager();
$scheduledInsertions = $entityManager->getUnitOfWork()->getScheduledEntityInsertions();
foreach ($scheduledInsertions as $entity) {
if ($entity instanceof Category) {
/**
* @var Category $entity
*/
$entityRepository = $entityManager->getRepository(get_class($entity));
if ($entity->isRoot()) {
$parentCategoriesNumber = count($entityRepository->getParentCategories());
$entity->setPosition($parentCategoriesNumber);
} else {
$categoriesOnThisParentCategory = count($entityRepository->getChildrenCategories($entity->getParent()));
$entity->setPosition($categoriesOnThisParentCategory);
}
}
}
}