/module/Agencia/src/Agencia/Service/DadosAmputacao.php

https://gitlab.com/SFMSP/Hagape · PHP · 249 lines · 160 code · 60 blank · 29 comment · 13 complexity · 418cbcf755ba4ea4207014e7a54e1ac4 MD5 · raw file

  1. <?php
  2. namespace Agencia\Service;
  3. use Application\Service\BaseApplicationService;
  4. use Zend\Session\Container as SessionConteiner;
  5. use Agencia\Repository\MedicoRepository;
  6. use Agencia\Repository\DadosAmputacaoRepository;
  7. use Admin\Repository\CemiterioRepository;
  8. use Agencia\Repository\PacienteRepository;
  9. use Agencia\Service\Medico;
  10. use Agencia\Service\Sepultamento;
  11. class DadosAmputacao extends BaseApplicationService
  12. {
  13. private $pacienteRepository;
  14. private $dadosAmputacaoRepository;
  15. private $medicoRepository;
  16. private $cremacaoService;
  17. private $sepultamentoService;
  18. private $cemiterioRepository;
  19. /**
  20. *
  21. * @param CemiterioRepository $cemiterioRepository
  22. * @return \Admin\Service\Cemiterio
  23. */
  24. function setCemiterioRepository(CemiterioRepository $cemiterioRepository) {
  25. $this->cemiterioRepository = $cemiterioRepository;
  26. return $this;
  27. }
  28. /**
  29. *
  30. * @param DadosAmputacaoRepository $dadosAmputacaoRepository
  31. * @return \Agencia\Service\DadosAmputacao
  32. */
  33. function setDadosAmputacaoRepository(DadosAmputacaoRepository $dadosAmputacaoRepository) {
  34. $this->dadosAmputacaoRepository = $dadosAmputacaoRepository;
  35. return $this;
  36. }
  37. /**
  38. *
  39. * @param PacienteRepository $pacienteRepository
  40. * @return \Agencia\Service\PacienteRepository
  41. */
  42. function setPacienteRepository(PacienteRepository $pacienteRepository) {
  43. $this->pacienteRepository = $pacienteRepository;
  44. return $this;
  45. }
  46. /**
  47. *
  48. * @param MedicoRepository $medicoRepository
  49. * @return \Agencia\Service\MedicoRepository
  50. */
  51. function setMedicoRepository(MedicoRepository $medicoRepository) {
  52. $this->medicoRepository = $medicoRepository;
  53. return $this;
  54. }
  55. /**
  56. * @param mixed $cremacaoService
  57. */
  58. public function setCremacaoService($cremacaoService)
  59. {
  60. $this->cremacaoService = $cremacaoService;
  61. return $this;
  62. }
  63. /**
  64. * @param mixed $sepultamentoService
  65. */
  66. public function setSepultamentoService($sepultamentoService)
  67. {
  68. $this->sepultamentoService = $sepultamentoService;
  69. return $this;
  70. }
  71. public function save(array $data)
  72. {
  73. $contratacao = new SessionConteiner('Contratacao');
  74. $data['dataCadastro'] = new \DateTime('now');
  75. $data['paciente'] = $this->pacienteRepository->findOneBy(array('contratacao' => $contratacao->id));
  76. try {
  77. $this->getEm()->beginTransaction();
  78. $med = new \Doctrine\Common\Collections\ArrayCollection();
  79. if (!empty($data['crm1'])) {
  80. $crm = $this->medicoRepository->findOneBy(array('crm' => $data['crm1']));
  81. if ($crm) {
  82. $medico = $this->getEm()->getReference('Agencia\Entity\Medico', $crm->getId());
  83. } else {
  84. $medico = new \Agencia\Entity\Medico();
  85. $medico->setNomeMedico($data['medico1']);
  86. $medico->setCrm($data['crm1']);
  87. $medico->setDataCadastro($data['dataCadastro']);
  88. $this->getEm()->persist($medico);
  89. $this->getEm()->flush();
  90. }
  91. if (!$medico) {
  92. $this->getEm()->rollback();
  93. return false;
  94. }
  95. $med->add($medico);
  96. }
  97. $data['medico'] = $med;
  98. $amputacao = parent::save($data);
  99. if (!$amputacao) {
  100. $this->getEm()->rollback();
  101. return false;
  102. }
  103. /*Sepultamento**/
  104. if($data['tipoDestinoFinal']==1){
  105. if($data['hiddenCemiterio']){
  106. $cemiterios = $this->getEm()->getReference('Admin\Entity\Cemiterio', ['id' => $data['hiddenCemiterio']]);
  107. if($cemiterios){
  108. $data['cemiterio'] = $cemiterios->getId();
  109. $variavel = $cemiterios->getId();
  110. }
  111. }else if($data['cemiterio']!==''){
  112. $cemit = new \Admin\Entity\Cemiterio();
  113. $cemit->setNome($data['cemiterio']);
  114. $cemit->setEndereco($data['enderecoCemiterio']);
  115. $cemit->setTipo($this->getEm()->getReference('Admin\Entity\Tipo', 1));
  116. $cemit->setDataCadastro($data['dataCadastro']);
  117. $cemit->setNumero('');
  118. $cemit->setBairro('');
  119. $cemit->setCep('');
  120. $cemit->setPrimeiroTelefone('');
  121. $cemit->setSegundoTelefone('');
  122. $cemit->setCategoria('');
  123. $cemit->setEmail('');
  124. $cemit->setObservacao('');
  125. $cemit->setAtivo(1);
  126. $this->getEm()->persist($cemit);
  127. $this->getEm()->flush();
  128. $variavel =$cemit->getId();
  129. }
  130. $sepultamento = array();
  131. $sepultamento['cemiterio'] = $variavel;
  132. $sepultamento['id'] = '';
  133. $sepultamento['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', $contratacao->id);
  134. $sepultamento['dataCadastro'] = new \DateTime('now');
  135. $sepultamento['dadosAmputacao'] = $this->getEm()->getReference('Agencia\Entity\DadosAmputacao', $amputacao->getId());
  136. $sepultamento['dataSepultamento'] = new \DateTime($this->getDateTimeFormat()->formatUs($data['dtSepultamento']));
  137. $sepultamento['horaSepultamento'] = $data['hrSepultamento'];
  138. $this->sepultamentoService->save($sepultamento);
  139. }
  140. /*Cremação**/
  141. if($data['tipoDestinoFinal']==2){
  142. if($data['hiddenCrematorio']){
  143. $crematorios = $this->getEm()->getReference('Admin\Entity\Cemiterio', ['id' => $data['hiddenCrematorio']]);
  144. if($crematorios){
  145. $data['cemiterio'] = $crematorios->getId();
  146. $variavel = $crematorios->getId();
  147. }
  148. }else if($data['crematorio']!==''){
  149. //
  150. $cremat = new \Admin\Entity\Cemiterio();
  151. $cremat->setNome($data['crematorio']);
  152. $cremat->setEndereco($data['enderecoCrematorio']);
  153. $cremat->setTipo($this->getEm()->getReference('Admin\Entity\Tipo', 2));
  154. $cremat->setDataCadastro($data['dataCadastro']);
  155. $cremat->setNumero('');
  156. $cremat->setBairro('');
  157. $cremat->setCep('');
  158. $cremat->setPrimeiroTelefone('');
  159. $cremat->setSegundoTelefone('');
  160. $cremat->setCategoria('');
  161. $cremat->setEmail('');
  162. $cremat->setObservacao('');
  163. $cremat->setAtivo(1);
  164. $this->getEm()->persist($cremat);
  165. $this->getEm()->flush();
  166. $variavel = $cremat->getId();
  167. }
  168. $cremacao = array();
  169. $cremacao['cemiterio'] = $variavel;
  170. $cremacao['id'] = '';
  171. $cremacao['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', $contratacao->id);
  172. $cremacao['dataCadastro'] = new \DateTime('now');
  173. $cremacao['dadosAmputacao'] = $this->getEm()->getReference('Agencia\Entity\DadosAmputacao', $amputacao->getId());
  174. $cremacao['dataCremacao'] = new \DateTime($this->getDateTimeFormat()->formatUs($data['dtCremacao']));
  175. $cremacao['horaCremacao'] = $data['hrCremacao'];
  176. $cremacao['endereco'] = $data['enderecoCrematorio'];
  177. $cremacao['crematorio'] = $data['crematorio'];
  178. $this->cremacaoService->save($cremacao);
  179. }
  180. $this->getEm()->commit();
  181. return true;
  182. } catch (\Exception $ex) {
  183. die($ex->getMessage());
  184. $this->log->log(\Zend\Log\Logger::ERR, $ex->getMessage());
  185. $this->getEm()->rollback();
  186. return false;
  187. }
  188. }
  189. }