/module/Application/src/Application/Container/Container.php

https://gitlab.com/SFMSP/Hagape · PHP · 314 lines · 227 code · 46 blank · 41 comment · 12 complexity · 5277a5be9640d3d4915c600458cd7092 MD5 · raw file

  1. <?php
  2. namespace Application\Container;
  3. use Zend\Session\SessionManager;
  4. use Base\Container\BaseContainer as BaseContainerInterface;
  5. /**
  6. * Classe que armazena todas as dependências para serem chamados na classe Module
  7. *
  8. * @author Praxedes
  9. */
  10. class Container implements BaseContainerInterface
  11. {
  12. /**
  13. *
  14. * Retorna as instâncias dos repositórios
  15. * @return array
  16. */
  17. public function getForms()
  18. {
  19. return array(
  20. 'Application\Form\Usuario' => function ($sm) {
  21. $repository = $sm->get('Application\Repository\PerfilRepository');
  22. $inputFilter = new \Application\InputFilter\Usuario();
  23. $agencias = $sm->get('Admin\Repository\AgenciaRepository')->getArraySelect('', array(), false, " WHERE t.excluido = 0 AND t.ativo = 1");
  24. $cemiterios = $sm->get('Admin\Repository\CemiterioRepository')->getArraySelect('', array(), false, " WHERE t.excluido = 0 AND t.ativo = 1");
  25. $estoques = $sm->get('Admin\Repository\EstoqueRepository')->getArraySelect('', array(), false, " WHERE t.excluido = 0 AND t.ativo = 1");
  26. $trafegos = $sm->get('Admin\Repository\TrafegoRepository')->getArraySelect('', array(), false, " WHERE t.excluido = 0 AND t.ativo = 1");
  27. $tesourarias = $sm->get('Admin\Repository\TesourariaRepository')->getArraySelect('', array(), false, " WHERE t.excluido = 0 AND t.ativo = 1");
  28. $privilegioRepository = $sm->get('Application\Repository\PrivilegioRepository');
  29. $usuarioRepository = $sm->get('Application\Repository\UsuarioRepository');
  30. $form = new \Application\Form\Usuario($inputFilter, $repository->getArraySelect(), $agencias, $cemiterios, $estoques, $trafegos, $tesourarias);
  31. $form->setPrivilegioRepository($privilegioRepository)
  32. ->setUsuarioRepository($usuarioRepository);
  33. return $form;
  34. },
  35. 'Application\Form\Perfil' => function ($sm) {
  36. $inputFilter = new \Application\InputFilter\Perfil();
  37. return new \Application\Form\Perfil($inputFilter);
  38. },
  39. 'Application\Form\AlterarSenha' => function ($sm) {
  40. $inputFilter = new \Application\InputFilter\AlterarSenha();
  41. return new \Application\Form\AlterarSenha($inputFilter, $sm->get('Application\Repository\UsuarioRepository'), $sm->get('DadosUser'));
  42. },
  43. 'Application\Form\LembrarSenha' => function ($sm) {
  44. $em = $sm->get('Doctrine\ORM\EntityManager');
  45. $repository = $sm->get('Application\Repository\UsuarioRepository');
  46. $repository->setLogger($sm->get('Base\Log\Log'));
  47. $inputFilter = new \Application\InputFilter\LembrarSenha();
  48. $form = new \Application\Form\LembrarSenha($inputFilter);
  49. $form->setUserRepository($repository);
  50. return $form;
  51. },
  52. 'Application\Form\UsuarioFiltro' => function ($sm) {
  53. $repository = $sm->get('Application\Repository\PerfilRepository');
  54. return new \Application\Form\UsuarioFiltro($repository->getArraySelect('Perfil'));
  55. },
  56. 'Application\Form\Avatar' => function ($sm) {
  57. return new \Application\Form\Avatar(new \Application\InputFilter\Avatar());
  58. },
  59. 'Application\Form\Filtro' => function ($sm) {
  60. $dadosUser = $sm->get('DadosUser');
  61. if (array_search('agencia', $dadosUser['filtros']) !== false) {
  62. $agencias = $sm->get('Admin\Repository\AgenciaRepository')->findInArrayLabel($dadosUser['agencias']);
  63. $agencias[''] = 'Selecione uma Agência';
  64. ksort($agencias);
  65. } else {
  66. $agencias = false;
  67. }
  68. if (array_search('cemiterio', $dadosUser['filtros']) !== false) {
  69. $cemiterios = $sm->get('Admin\Repository\CemiterioRepository')->findInArrayLabel($dadosUser['cemiterios']);
  70. $cemiterios[''] = 'Selecione um Cemitério';
  71. ksort($cemiterios);
  72. } else {
  73. $cemiterios = false;
  74. }
  75. if (array_search('estoque', $dadosUser['filtros']) !== false) {
  76. $estoques = $sm->get('Admin\Repository\EstoqueRepository')->findInArrayLabel($dadosUser['estoques']);
  77. $estoques[''] = 'Selecione um Estoque';
  78. ksort($estoques);
  79. } else {
  80. $estoques = false;
  81. }
  82. if (array_search('trafego', $dadosUser['filtros']) !== false) {
  83. $trafegos = $sm->get('Admin\Repository\TrafegoRepository')->findInArrayLabel($dadosUser['trafegos']);
  84. $trafegos[''] = 'Selecione um Tráfego';
  85. ksort($trafegos);
  86. } else {
  87. $trafegos = false;
  88. }
  89. if (array_search('tesouraria', $dadosUser['filtros']) !== false) {
  90. $tesourarias = $sm->get('Admin\Repository\TesourariaRepository')->findInArrayLabel($dadosUser['tesourarias']);
  91. $tesourarias[''] = 'Selecione uma Tesouraria';
  92. ksort($tesourarias);
  93. } else {
  94. $tesourarias = false;
  95. }
  96. return new \Application\Form\Filtro(new \Application\InputFilter\Filtro(), $agencias, $cemiterios, $estoques, $trafegos, $tesourarias);
  97. },
  98. );
  99. }
  100. /**
  101. * Método que configura as dependências
  102. * @return array
  103. */
  104. public function getAuthServices()
  105. {
  106. return array(
  107. 'Application\Auth\Adapter' => function ($sm) {
  108. return new \Application\Auth\Adapter($sm->get('Application/Repository/UsuarioRepository'), $sm->get('Application/Repository/PrivilegioRepository'), $sm->get('Application\Service\LogLogin'));
  109. },
  110. 'Application\Security\Acl' => function ($sm) {
  111. //Busca os dados do usuário
  112. $dadosUser = $sm->get('DadosUser');
  113. //Instancia e retorna a ACL
  114. return new \Application\Security\Acl($dadosUser['perfil'], $dadosUser['privilegios']);
  115. }
  116. );
  117. }
  118. /**
  119. *
  120. * Retorna os services com as instâncias dos repositories
  121. * @return array
  122. */
  123. public function getRepositories()
  124. {
  125. return array(
  126. 'Application\Repository\LogAlteracaoRepository' => function ($sm) {
  127. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\LogAlteracao');
  128. $repository->setLogger($sm->get('Base\Log\Log'));
  129. return $repository;
  130. },
  131. 'Application\Repository\LogLoginRepository' => function ($sm) {
  132. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\LogLogin');
  133. $repository->setLogger($sm->get('Base\Log\Log'));
  134. return $repository;
  135. },
  136. 'Application\Repository\PerfilRepository' => function ($sm) {
  137. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\Perfil');
  138. $repository->setLogger($sm->get('Base\Log\Log'));
  139. return $repository;
  140. },
  141. 'Application\Repository\PrivilegioRepository' => function ($sm) {
  142. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\Privilegio');
  143. $repository->setLogger($sm->get('Base\Log\Log'));
  144. return $repository;
  145. },
  146. 'Application\Repository\UsuarioRepository' => function ($sm) {
  147. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\Usuario');
  148. $repository->setLogger($sm->get('Base\Log\Log'));
  149. return $repository;
  150. },
  151. 'Application\Repository\FuncionarioRepository' => function ($sm) {
  152. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\Funcionario');
  153. $repository->setLogger($sm->get('Base\Log\Log'));
  154. return $repository;
  155. },
  156. 'Application\Repository\UfRepository' => function ($sm) {
  157. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\Uf');
  158. $repository->setLogger($sm->get('Base\Log\Log'));
  159. return $repository;
  160. },
  161. 'Application\Repository\CidadeRepository' => function ($sm) {
  162. $repository = $sm->get('Doctrine\ORM\EntityManager')->getRepository('Application\Entity\Cidade');
  163. $repository->setLogger($sm->get('Base\Log\Log'));
  164. return $repository;
  165. }
  166. );
  167. }
  168. /**
  169. *
  170. * @return array
  171. */
  172. public function getFormsFilter()
  173. {
  174. return array();
  175. }
  176. /**
  177. *
  178. * Retorna as instâncias de services
  179. * @return array
  180. */
  181. public function getServices()
  182. {
  183. return array(
  184. 'Application\Service\Usuario' => function ($sm) {
  185. $privilegioRepository = $sm->get('Application\Repository\PrivilegioRepository');
  186. $service = new \Application\Service\Usuario($sm->get('Doctrine\ORM\EntityManager'), new \Application\Entity\Usuario(), $sm->get('Base\Log\Log'));
  187. $service->setPrivilegioRepository($privilegioRepository);
  188. //Verifica se existe usuário logado
  189. if ($sm->get('ValidaAuth')) {
  190. $service->setDadosUser($sm->get('DadosUser'));
  191. } else {
  192. $service->setDadosUser(array());
  193. }
  194. $service->setLogAlteracao($sm->get('Application\Service\LogAlteracao'))
  195. ->setDateTimeFormat(new \Base\Helper\DatetimeFormat());
  196. return $service;
  197. },
  198. 'Application\Service\Perfil' => function ($sm) {
  199. $service = new \Application\Service\Perfil($sm->get('Doctrine\ORM\EntityManager'), new \Application\Entity\Perfil(), $sm->get('Base\Log\Log'));
  200. $service->setDadosUser($sm->get('DadosUser'))
  201. ->setLogAlteracao($sm->get('Application\Service\LogAlteracao'))
  202. ->setDateTimeFormat(new \Base\Helper\DatetimeFormat());
  203. return $service;
  204. },
  205. 'Application\Service\LogLogin' => function ($sm) {
  206. return new \Application\Service\LogLogin($sm->get('Doctrine\ORM\EntityManager'), new \Application\Entity\LogLogin(), $sm->get('Base\Log\Log'));
  207. },
  208. 'Application\Service\LogAlteracao' => function ($sm) {
  209. return new \Application\Service\LogAlteracao($sm->get('Doctrine\ORM\EntityManager'), new \Application\Entity\LogAlteracao(), $sm->get('Base\Log\Log'));
  210. },
  211. 'Application\Service\Funcionario' => function ($sm) {
  212. $service = new \Application\Service\Funcionario($sm->get('Doctrine\ORM\EntityManager'), new \Application\Entity\Funcionario, $sm->get('Base\Log\Log'));
  213. $service->setDadosUser($sm->get('DadosUser'))
  214. ->setLogAlteracao($sm->get('Application\Service\LogAlteracao'))
  215. ->setDateTimeFormat(new \Base\Helper\DatetimeFormat());
  216. return $service;
  217. }
  218. );
  219. }
  220. /**
  221. *
  222. * Retorna os serviços básicos
  223. * @return array
  224. */
  225. public function getBaseServices()
  226. {
  227. return array(
  228. 'SessionManager' => function ($sm) {
  229. $manager = new SessionManager();
  230. $manager->rememberMe(1800000);
  231. return $manager;
  232. },
  233. 'DadosUser' => function ($sm) {
  234. //Busca e retorna os dados do usuário logado armazenado na sessão
  235. $sessionStorage = new \Zend\Authentication\Storage\Session('Application');
  236. return $sessionStorage->read();
  237. },
  238. 'ValidaAuth' => function ($sm) {
  239. $sessionStorage = new \Zend\Authentication\Storage\Session('Application');
  240. $auth = new \Zend\Authentication\AuthenticationService();
  241. $auth->setStorage($sessionStorage);
  242. return $auth->hasIdentity();
  243. },
  244. 'BaseConfig' => function ($sm) {
  245. return include __DIR__ . '/../../../../../config/autoload/global.php';
  246. }
  247. );
  248. }
  249. /**
  250. * Retorna os serviços do PHPOffice
  251. * @return array
  252. */
  253. public function getOfficeServices()
  254. {
  255. return array();
  256. }
  257. public function getMailConfig()
  258. {
  259. return array(
  260. 'Application\Mail\LembrarSenha' => function ($sm) {
  261. return new \Application\Mail\LembrarSenha($sm->get('Mail'), $sm->get('ViewRenderer'));
  262. },
  263. 'Application\Mail\NovaSenha' => function ($sm) {
  264. return new \Application\Mail\NovaSenha($sm->get('Mail'), $sm->get('ViewRenderer'));
  265. }
  266. );
  267. }
  268. }