Beispiel #1
0
 /**
  *
  * @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++;
         }
     }
 }