/** * * @param \Core_Dto_Mapping $dto */ public function order(\Core_Dto_Mapping $dto) { $entity = $this->_getRepository()->find($dto->getSqMenu()); if ($entity->getSqMenuPai() !== NULL) { $sqMenuPai = $entity->getSqMenuPai()->getSqMenu(); } else { $sqMenuPai = NULL; } $criteria = array('sqMenuPai' => $sqMenuPai, 'sqSistema' => $dto->getSqSistema()); if ($dto->getDirecao() == 'up') { $criteria['nuOrdemApresent'] = $entity->getNuOrdemApresent() - 1; $entity->setNuOrdemApresent($entity->getNuOrdemApresent() - 1); $entity2 = current($this->_getRepository()->findBy($criteria)); if ($entity2) { $entity2->setNuOrdemApresent($entity2->getNuOrdemApresent() + 1); } } else { if ($dto->getDirecao() == 'down') { $criteria['nuOrdemApresent'] = $entity->getNuOrdemApresent() + 1; $entity->setNuOrdemApresent($entity->getNuOrdemApresent() + 1); $entity2 = current($this->_getRepository()->findBy($criteria)); if ($entity2) { $entity2->setNuOrdemApresent($entity2->getNuOrdemApresent() - 1); } } } $entityManager = $this->getEntityManager(); $entityManager->persist($entity); if ($entity2) { $entityManager->persist($entity2); } $entityManager->flush(); $menusDown = $this->_getRepository()->findMenuBySystemAndPai($dto->getSqSistema(), NULL, $entity->getSqMenuPai() !== NULL ? $entity->getSqMenuPai()->getSqMenu() : NULL); $indice = 1; if ($menusDown) { foreach ($menusDown as $menu) { $menu->setNuOrdemApresent($indice); $this->_getRepository()->updateNuOrdem($menu); $indice++; } } }