Commit 5e645f475a5bf9fb2d8b3f8b89f8a07b93a31856
Committed by
Eduardo Santos
1 parent
47190e25
Exists in
master
and in
1 other branch
Corrige exclusão de locais
Showing
2 changed files
with
70 additions
and
1 deletions
Show diff stats
src/Cacic/CommonBundle/Controller/LocalController.php
... | ... | @@ -136,7 +136,7 @@ class LocalController extends Controller |
136 | 136 | /** |
137 | 137 | * Primeiramente, remove as configurações aplicadas ao Local |
138 | 138 | */ |
139 | - $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->removerConfiguracoesDoLocal( $local ); | |
139 | + $this->getDoctrine()->getManager()->getRepository('CacicCommonBundle:Local')->excluirLocal( $local ); | |
140 | 140 | |
141 | 141 | $em->remove( $local ); // Tenta excluir o registro da base de dados |
142 | 142 | $em->flush(); |
... | ... | @@ -147,6 +147,7 @@ class LocalController extends Controller |
147 | 147 | } |
148 | 148 | catch ( \Doctrine\DBAL\DBALException $e ) |
149 | 149 | { |
150 | + $this->get('logger')->error("Erro na exclusão do local\n".$e->getMessage()); | |
150 | 151 | $out = array('status' => 'error', 'code' => false); |
151 | 152 | if ( preg_match('#SQLSTATE\[(\d+)\]#', $e->getMessage(), $tmp) ) |
152 | 153 | $out['code'] = $tmp[1]; | ... | ... |
src/Cacic/CommonBundle/Entity/LocalRepository.php
... | ... | @@ -43,5 +43,73 @@ class LocalRepository extends EntityRepository |
43 | 43 | |
44 | 44 | return $this->getEntityManager()->createQuery( $_dql )->getArrayResult(); |
45 | 45 | } |
46 | + | |
47 | + /** | |
48 | + * Retorna o último local cadastrado | |
49 | + * | |
50 | + * @return mixed | |
51 | + */ | |
52 | + | |
53 | + public function getMaxLocal($local) { | |
54 | + $_dql = "SELECT l | |
55 | + FROM CacicCommonBundle:Local l | |
56 | + WHERE l.idLocal <> :local | |
57 | + ORDER BY l.idLocal desc | |
58 | + "; | |
59 | + | |
60 | + return $this->getEntityManager() | |
61 | + ->createQuery( $_dql ) | |
62 | + ->setMaxResults(1) | |
63 | + ->setParameter('local', $local) | |
64 | + ->getSingleResult(); | |
65 | + } | |
66 | + | |
67 | + /** | |
68 | + * Move os usuários de local | |
69 | + * | |
70 | + * @param $local | |
71 | + */ | |
72 | + | |
73 | + public function moveUsuarios($local) { | |
74 | + $em = $this->getEntityManager(); | |
75 | + $usuarios = $local->getUsuarios(); | |
76 | + $maxLocal = $em->getRepository('CacicCommonBundle:Local')->getMaxLocal($local->getIdLocal()); | |
77 | + // Coloca cada usuário em no último local cadastrado | |
78 | + foreach ($usuarios as $modificar) { | |
79 | + $modificar->setIdLocal($maxLocal); | |
80 | + $em->persist($modificar); | |
81 | + } | |
82 | + $em->flush(); | |
83 | + } | |
84 | + | |
85 | + /** | |
86 | + * Excluir local | |
87 | + * | |
88 | + * @param $local | |
89 | + */ | |
90 | + | |
91 | + public function excluirLocal($local) { | |
92 | + $em = $this->getEntityManager(); | |
93 | + $em->getRepository('CacicCommonBundle:ConfiguracaoLocal')->removerConfiguracoesDoLocal( $local ); | |
94 | + $em->getRepository('CacicCommonBundle:Local')->moveUsuarios( $local ); | |
95 | + | |
96 | + $config = $em->getRepository('CacicCommonBundle:PatrimonioConfigInterface')->findBy(array('local' => $local->getIdLocal())); | |
97 | + foreach ($config as $excluir) { | |
98 | + $em->remove($excluir); | |
99 | + } | |
100 | + | |
101 | + $config = $em->getRepository('CacicCommonBundle:UnidOrganizacionalNivel2')->findBy(array('idLocal' => $local->getIdLocal())); | |
102 | + foreach ($config as $excluir) { | |
103 | + $em->remove($excluir); | |
104 | + } | |
105 | + | |
106 | + $config = $em->getRepository('CacicCommonBundle:Rede')->findBy(array('idLocal' => $local->getIdLocal())); | |
107 | + foreach ($config as $excluir) { | |
108 | + $excluir->setIdLocal(null); | |
109 | + $em->persist($excluir); | |
110 | + } | |
111 | + | |
112 | + $em->flush(); | |
113 | + } | |
46 | 114 | |
47 | 115 | } |
48 | 116 | \ No newline at end of file | ... | ... |