PageRenderTime 25ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/module/Cliente/src/Cliente/Controller/ClientesController.php

https://gitlab.com/fabiorf/fsipedidos
PHP | 320 lines | 178 code | 68 blank | 74 comment | 24 complexity | ae333155c09f24b05cc92b22e705eb72 MD5 | raw file
  1. <?php
  2. // namespace de localizacao clientesController.php
  3. namespace Cliente\Controller;
  4. use Zend\Mvc\Controller\AbstractActionController;
  5. use Propel;
  6. class ClientesController extends AbstractActionController
  7. {
  8. // GET /clientes
  9. public function indexAction()
  10. {
  11. $cliente = \ClienteQuery::create()->find();
  12. return array('message' => $this->getFlashMessenger(),
  13. 'aCliente'=>$cliente);
  14. }
  15. // GET /clientes
  16. public function pedidosAction() {
  17. $id = (int) $this->params()->fromRoute('id', 0);
  18. if($id == ""){
  19. $this->flashMessenger()->addErrorMessage("Erro representada não existe.");
  20. return $this->redirect()->toRoute('representadas');
  21. }
  22. $oPedido = \PedidoQuery::create()
  23. ->filterByCoCliente($id)
  24. ->find();
  25. $oCliente = \ClienteQuery::create()
  26. ->filterByCoCliente($id)
  27. ->findOne();
  28. return array('message' => $this->getFlashMessenger(),
  29. 'oPedido' => $oPedido,
  30. 'oCliente' => $oCliente,
  31. 'id'=>$id);
  32. }
  33. // GET /clientes/novo
  34. public function novoAction()
  35. {
  36. $cliente_tributacao = \ClienteTributacaoQuery::create()->find();
  37. return array('cliente_tributacao'=>$cliente_tributacao,'message' => $this->getFlashMessenger());
  38. }
  39. // GET /clientes/novo
  40. public function importarAction()
  41. {
  42. $cliente_tributacao = \ClienteTributacaoQuery::create()->find();
  43. // obtém a requisição
  44. $request = $this->getRequest();
  45. // verifica se a requisição é do tipo post
  46. if ($request->isPost()) {
  47. $File = $this->params()->fromFiles('no_file');
  48. $conteudoCsv = file_get_contents($File['tmp_name']);
  49. if(strlen($conteudoCsv)){
  50. $aListArquivo = explode("\n",$conteudoCsv);
  51. if(is_array($aListArquivo)){
  52. array_shift($aListArquivo);
  53. foreach($aListArquivo as $lineFile){
  54. $aDadosCsv = explode(",",$lineFile);
  55. if($aDadosCsv[1] != ""){
  56. $aDados['co_cliente'] = 33;
  57. $aDados['pessoa_tipo'] = "J";
  58. $aDados['r_social'] = $aDadosCsv[0];
  59. $aDados['no_cliente'] = $aDadosCsv[1];
  60. $aDados['cnpj'] = $aDadosCsv[2];
  61. $aDados['i_estadual'] = $aDadosCsv[3];
  62. }
  63. \ClientePeer::gravaCliente($aDados);
  64. }
  65. $this->flashMessenger()->addSuccessMessage("Cliente importado sucesso");
  66. return $this->redirect()->toRoute('clientes');
  67. }
  68. }
  69. }
  70. return array('cliente_tributacao'=>$cliente_tributacao,'message' => $this->getFlashMessenger());
  71. }
  72. // POST /clientes/adicionar
  73. public function adicionarAction()
  74. {
  75. // obtém a requisição
  76. $request = $this->getRequest();
  77. // verifica se a requisição é do tipo post
  78. if ($request->isPost()) {
  79. // obter e armazenar valores do post
  80. $postData = $request->getPost()->toArray();
  81. $formularioValido = true;
  82. // verifica se o formulário segue a validação proposta
  83. if ($formularioValido) {
  84. // aqui vai a lógica para adicionar os dados à tabela no banco
  85. // 1 - solicitar serviço para pegar o model responsável pela adição
  86. // 2 - inserir dados no banco pelo model
  87. try{
  88. \ClientePeer::gravaCliente($postData);
  89. } catch (Exception $e){
  90. // adicionar mensagem de sucesso
  91. $this->flashMessenger()->addSuccessMessage($e->getMessage());
  92. #$this->logger()->info($e->getMessage());
  93. return $this->redirect()->toRoute('clientes');
  94. }
  95. // adicionar mensagem de sucesso
  96. $this->flashMessenger()->addSuccessMessage("Cliente adicionado com sucesso");
  97. #$this->logger()->info('Cliente adicionado com sucesso');
  98. // redirecionar para action index no controller clientes
  99. return $this->redirect()->toRoute('clientes');
  100. } else {
  101. // adicionar mensagem de erro
  102. $this->flashMessenger()->addErrorMessage("Erro ao adicionar cliente");
  103. #$this->logger()->err('Erro ao adicionar cliente');
  104. // redirecionar para action novo no controllers clientes
  105. return $this->redirect()->toRoute('clientes', array('action' => 'novo'));
  106. }
  107. }
  108. }
  109. // GET /clientes/detalhes/id
  110. public function detalhesAction()
  111. {
  112. // filtra id passsado pela url
  113. $id = (int) $this->params()->fromRoute('id', 0);
  114. // se id = 0 ou não informado redirecione para clientes
  115. if (!$id) {
  116. // adicionar mensagem de erro
  117. $this->flashMessenger()->addErrorMessage("Cliente não encontrado");
  118. // redirecionar para action index
  119. return $this->redirect()->toRoute('clientes');
  120. }
  121. // aqui vai a lógica para pegar os dados referente ao contato
  122. // 1 - solicitar serviço para pegar o model responsável pelo find
  123. // 2 - solicitar form com dados desse contato encontrado
  124. // formulário com dados preenchidos
  125. $cliente = \ClienteQuery::create()->filterByCoCliente($id)->findOne();
  126. if(!$cliente){
  127. // adicionar mensagem de erro
  128. $this->flashMessenger()->addErrorMessage("Cliente não encontrado");
  129. // redirecionar para action index
  130. return $this->redirect()->toRoute('clientes');
  131. }
  132. $endereco = \EnderecoQuery::create()->filterByCoPessoa($id)->find();
  133. $email = \EmailQuery::create()->filterByCoPessoa($id)->find();
  134. $telefone = \TelefoneQuery::create()->filterByCoPessoa($id)->find();
  135. // dados eviados para detalhes.phtml
  136. return array('id' => $id,
  137. 'oCliente' => $cliente,
  138. 'endereco' => $endereco,
  139. 'email' => $email,
  140. 'telefone' => $telefone,
  141. 'message' => $this->getFlashMessenger());
  142. }
  143. // GET /clientes/editar/id
  144. public function editarAction()
  145. {
  146. #print "<pre>";
  147. #print_r($this->params()->fromRoute());
  148. #exit;
  149. // filtra id passsado pela url
  150. $id = (int) $this->params()->fromRoute('id', 0);
  151. // se id = 0 ou não informado redirecione para clientes
  152. if (!$id) {
  153. // adicionar mensagem de erro
  154. $this->flashMessenger()->addErrorMessage("Contato não encotrado");
  155. // redirecionar para action index
  156. return $this->redirect()->toRoute('clientes');
  157. }
  158. // aqui vai a lógica para pegar os dados referente ao contato
  159. // 1 - solicitar serviço para pegar o model responsável pelo find
  160. // 2 - solicitar form com dados desse contato encontrado
  161. // formulário com dados preenchidos
  162. $cliente = \ClienteQuery::create()->filterByCoCliente($id)->findOne();
  163. $cliente_tributacao = \ClienteTributacaoQuery::create()->find();
  164. // dados eviados para editar.phtml
  165. return array('id' => $id,'cliente_tributacao'=>$cliente_tributacao, 'oCliente' => $cliente, 'message' => $this->getFlashMessenger());
  166. }
  167. // PUT /clientes/editar/id
  168. public function atualizarAction()
  169. {
  170. // obtém a requisição
  171. $request = $this->getRequest();
  172. // verifica se a requisição é do tipo post
  173. if ($request->isPost()) {
  174. // obter e armazenar valores do post
  175. $postData = $request->getPost()->toArray();
  176. $formularioValido = true;
  177. // verifica se o formulário segue a validação proposta
  178. if ($formularioValido) {
  179. // aqui vai a lógica para editar os dados à tabela no banco
  180. // 1 - solicitar serviço para pegar o model responsável pela atualização
  181. // 2 - editar dados no banco pelo model
  182. try{
  183. \ClientePeer::gravaCliente($postData);
  184. } catch (Exception $e){
  185. // adicionar mensagem de sucesso
  186. $this->flashMessenger()->addSuccessMessage($e->getMessage());
  187. #$this->logger()->info($e->getMessage());
  188. return $this->redirect()->toRoute('clientes');
  189. }
  190. // adicionar mensagem de sucesso
  191. $this->flashMessenger()->addSuccessMessage("Cliente editado com sucesso");
  192. // redirecionar para action detalhes
  193. return $this->redirect()->toRoute('clientes', array("action" => "detalhes", "id" => $postData['co_cliente'],));
  194. } else {
  195. // adicionar mensagem de erro
  196. $this->flashMessenger()->addErrorMessage("Erro ao editar cliente");
  197. // redirecionar para action editar
  198. return $this->redirect()->toRoute('clientes', array('action' => 'editar', "id" => $postData['co_cliente'],));
  199. }
  200. }
  201. }
  202. // DELETE /clientes/deletar/id
  203. public function deletarAction()
  204. {
  205. // filtra id passsado pela url
  206. $id = $this->params()->fromRoute('id', 0);
  207. if($id != "" && is_numeric($id)){
  208. // se id = 0 ou não informado redirecione para clientes
  209. if (!$id) {
  210. // adicionar mensagem de erro
  211. $this->flashMessenger()->addErrorMessage("Cliente não encotrado");
  212. } else {
  213. // aqui vai a lógica para deletar o contato no banco
  214. // 1 - solicitar serviço para pegar o model responsável pelo delete
  215. // 2 - deleta contato
  216. try{
  217. $oCliente = \ClienteQuery::create()->filterByCoCliente($id)->findOne();
  218. $oPessoa = \PessoaQuery::create()->filterByCoPessoa($id)->findOne();
  219. $oCliente->delete();
  220. $oPessoa->getEmails()->delete();
  221. $oPessoa->getEnderecos()->delete();
  222. $oPessoa->getTelefones()->delete();
  223. $oPessoa->delete();
  224. } catch (Exception $e){
  225. // adicionar mensagem de sucesso
  226. $this->flashMessenger()->addSuccessMessage($e->getMessage());
  227. #$this->logger()->info($e->getMessage());
  228. return $this->redirect()->toRoute('clientes');
  229. }
  230. // adicionar mensagem de sucesso
  231. $this->flashMessenger()->addSuccessMessage("Cliente deletado com sucesso");
  232. }
  233. }else{
  234. $this->flashMessenger()->addErrorMessage("Cliente não encotrado");
  235. }
  236. // redirecionar para action index
  237. return $this->redirect()->toRoute('clientes');
  238. }
  239. // Filter Flash Messenger
  240. private function getFlashMessenger()
  241. {
  242. $messenger = array();
  243. $flashMessenger = $this->flashMessenger();
  244. if ($flashMessenger->hasSuccessMessages())
  245. $messenger['alert-success'] = array_shift($flashMessenger->getSuccessMessages());
  246. if ($flashMessenger->hasErrorMessages())
  247. $messenger['alert-error'] = array_shift($flashMessenger->getErrorMessages());
  248. if ($flashMessenger->hasInfoMessages())
  249. $messenger['alert-info'] = array_shift($flashMessenger->getInfoMessages());
  250. return $messenger;
  251. }
  252. }