/module/Agencia/src/Agencia/Service/DadosObito.php

https://gitlab.com/SFMSP/Hagape · PHP · 480 lines · 311 code · 101 blank · 68 comment · 36 complexity · a4c85b543fe3d34781c4021e86f7d2ee 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\FalecidoRepository;
  6. use Agencia\Repository\LocalFalecimentoRepository;
  7. use Agencia\Repository\MedicoRepository;
  8. use Agencia\Repository\TransporteRepository;
  9. use Agencia\Repository\CartorioRepository;
  10. use Agencia\Repository\DadosObitoRepository;
  11. use Agencia\Repository\ContratacaoRepository;
  12. use Agencia\Service\Transporte;
  13. use Agencia\Service\Cartorio;
  14. use Agencia\Service\Medico;
  15. class DadosObito extends BaseApplicationService
  16. {
  17. private $cartorioService;
  18. private $localFalecimentoService;
  19. private $transporteService;
  20. private $cemiterioService;
  21. private $medicoService;
  22. private $falecidoRepository;
  23. private $localFalecimentoRepository;
  24. private $medicoRepository;
  25. private $transporteRepository;
  26. private $cartorioRepository;
  27. private $dadosObitoRepository;
  28. private $contratacaoRepository;
  29. private $sepultamentoService;
  30. private $velorioService;
  31. private $cremacaoService;
  32. /**
  33. * @param mixed $cremacaoService
  34. */
  35. public function setCremacaoService($cremacaoService)
  36. {
  37. $this->cremacaoService = $cremacaoService;
  38. return $this;
  39. }
  40. /**
  41. * @param mixed $velorioService
  42. */
  43. public function setVelorioService($velorioService)
  44. {
  45. $this->velorioService = $velorioService;
  46. return $this;
  47. }
  48. /**
  49. *
  50. * @param DadosObitoRepository $dadosObitoRepository
  51. * @return \Agencia\Service\DadosObito
  52. */
  53. function setDadosObitoRepository(DadosObitoRepository $dadosObitoRepository) {
  54. $this->dadosObitoRepository = $dadosObitoRepository;
  55. return $this;
  56. }
  57. /**
  58. *
  59. * @param CartorioRepository $cartorioRepository
  60. * @return \Agencia\Service\Cartorio
  61. */
  62. function setCartorioRepository(CartorioRepository $cartorioRepository) {
  63. $this->cartorioRepository = $cartorioRepository;
  64. return $this;
  65. }
  66. /**
  67. *
  68. * @param TransporteRepository $transporteRepository
  69. * @return \Agencia\Service\Transporte
  70. */
  71. function setTransporteRepository(TransporteRepository $transporteRepository) {
  72. $this->transporteRepository = $transporteRepository;
  73. return $this;
  74. }
  75. /**
  76. * @param mixed $sepultamentoService
  77. */
  78. public function setSepultamentoService($sepultamentoService)
  79. {
  80. $this->sepultamentoService = $sepultamentoService;
  81. return $this;
  82. }
  83. /**
  84. *
  85. * @param MedicoRepository $medicoRepository
  86. * @return \Agencia\Service\Medico
  87. */
  88. function setMedicoRepository(MedicoRepository $medicoRepository) {
  89. $this->medicoRepository = $medicoRepository;
  90. return $this;
  91. }
  92. /**
  93. *
  94. * @param LocalFalecimentoRepository $localFalecimentoRepository
  95. * @return \Agencia\Service\LocalFalecimento
  96. */
  97. function setLocalFalecimentoRepository(LocalFalecimentoRepository $localFalecimentoRepository)
  98. {
  99. $this->localFalecimentoRepository = $localFalecimentoRepository;
  100. return $this;
  101. }
  102. /**
  103. *
  104. * @param FalecidoRepository $falecidoRepository
  105. * @return \Agencia\Service\Falecido
  106. */
  107. function setFalecidoRepository(FalecidoRepository $falecidoRepository) {
  108. $this->falecidoRepository = $falecidoRepository;
  109. return $this;
  110. }
  111. /**
  112. * @param mixed $cartorioService
  113. */
  114. public function setCartorioService($cartorioService)
  115. {
  116. $this->cartorioService = $cartorioService;
  117. return $this;
  118. }
  119. /**
  120. * @param mixed $localFalecimentoService
  121. */
  122. public function setLocalFalecimentoService($localFalecimentoService)
  123. {
  124. $this->localFalecimentoService = $localFalecimentoService;
  125. return $this;
  126. }
  127. /**
  128. * @param mixed $transporteService
  129. */
  130. public function setTransporteService($transporteService)
  131. {
  132. $this->transporteService = $transporteService;
  133. return $this;
  134. }
  135. /**
  136. * @param mixed $cemiterioService
  137. */
  138. public function setCemiterioService($cemiterioService)
  139. {
  140. $this->cemiterioService = $cemiterioService;
  141. return $this;
  142. }
  143. /**
  144. * @param mixed $medicoService
  145. */
  146. public function setMedicoService($medicoService)
  147. {
  148. $this->medicoService = $medicoService;
  149. return $this;
  150. }
  151. /**
  152. *
  153. * @param ContratacaoRepository $contratacaoRepository
  154. * @return \Agencia\Service\ContratacaoRepository
  155. */
  156. function setContratacaoRepository(ContratacaoRepository $contratacaoRepository) {
  157. $this->contratacaoRepository = $contratacaoRepository;
  158. return $this;
  159. }
  160. public function save(array $data)
  161. {
  162. $contratacao = new SessionConteiner('Contratacao');
  163. $data['dataCadastro'] = new \DateTime('now');
  164. $data['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', ['id' => $contratacao->id]);
  165. //$data['falecido'] = $this->falecidoRepository->findOneBy(array('contratacao' => $contratacao->id));
  166. //print_r($data['falecido']);die;
  167. //$data['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', $contratacao->id);
  168. //$data['falecido'] = $falecido;
  169. try {
  170. $this->getEm()->beginTransaction();
  171. if (!empty($data['cartorioId'])){
  172. $cartorio = $this->cartorioRepository->findOneBy(array('id' => $data['cartorioId']));
  173. if($cartorio){
  174. $data['cartorio'] = $cartorio;
  175. }
  176. }else if($data['cartorio']!==''){
  177. $carto['id'] ='';
  178. $carto['nome'] = $data['cartorio'];
  179. $carto['dataCadastro'] = new \DateTime('now');
  180. $cartorios = $this->cartorioService->save($carto);
  181. if (!$cartorios) {
  182. $this->getEm()->rollback();
  183. return false;
  184. }
  185. $data['cartorio'] = $this->cartorioRepository->findOneBy(array('id' => $cartorios->getId()));
  186. }
  187. if (!empty($data['localFalecimentoId'])){
  188. $local = $this->getEm()->getReference('Agencia\Entity\LocalFalecimento', ['id' => $data['localFalecimentoId']]);
  189. if($local){
  190. $data['localFalecimento'] = $local;
  191. }
  192. }else if($data['localFalecimento']!==''){
  193. //print_r($data['localFalecimento']);die;
  194. $data['nomeLocalFalecimento'] = $data['localFalecimento'];
  195. $data['enderecoFalecimento'] = $data['enderecoFalecimento'];
  196. $data['localFalecimento']=null;
  197. $data['horaFalecimento']= $data['hrFalecimento'];
  198. }
  199. if ($data['dataFalecimento']) {
  200. $data['dataFalecimento'] = new \DateTime($this->getDateTimeFormat()->formatUs($data['dataFalecimento']));
  201. } else {
  202. $data['dataFalecimento'] = null;
  203. }
  204. /* insere na tabela transporte***/
  205. if(!empty($data['tipoTransporte'])){
  206. $trans = array();
  207. $trans['id'] ='';
  208. $trans['tipoTransporte'] = $data['tipoTransporte'];
  209. $trans['tipoCarro'] = $data['tipoCarro'];
  210. if(!empty($data['remocao'])){
  211. $trans['localRemocaoFalecimento'] ="S";
  212. $trans['localRemocao'] = "";
  213. $trans['endereco'] = "";
  214. }else{
  215. $trans['localRemocaoFalecimento'] ="N";
  216. $trans['localRemocao'] = $data['localRemocao'];
  217. $trans['endereco'] = $data['enderecoRemocao'];
  218. }
  219. $trans = $this->transporteService->save($trans);
  220. if (!$trans) {
  221. $this->getEm()->rollback();
  222. return false;
  223. }
  224. $data['transporte'] = $this->transporteRepository->findOneBy(array('id' => $trans->getId()));
  225. }
  226. if($data['operacao3']==3){
  227. $data['seraVelado'] = 0;
  228. }else{
  229. if($data['seraVelado']){
  230. if($data['seraVelado']==0){
  231. $data['corpoVelado'] = 'N';
  232. } else if($data['seraVelado']==1){
  233. $data['corpoVelado']='S';
  234. }else if($data['seraVelado']==2){
  235. $data['corpoVelado']='N';
  236. }
  237. }
  238. }
  239. $med = new \Doctrine\Common\Collections\ArrayCollection();
  240. if (!empty($data['crm1'])) {
  241. $crm = $this->medicoRepository->findOneBy(array('crm' => $data['crm1']));
  242. if ($crm) {
  243. $medico = $this->getEm()->getReference('Agencia\Entity\Medico', $crm->getId());
  244. } else {
  245. $medico = new \Agencia\Entity\Medico();
  246. $medico->setNomeMedico($data['medico1']);
  247. $medico->setCrm($data['crm1']);
  248. $medico->setDataCadastro(new \DateTime('now'));
  249. $this->getEm()->persist($medico);
  250. $this->getEm()->flush();
  251. }
  252. if (!$medico) {
  253. $this->getEm()->rollback();
  254. return false;
  255. }
  256. $med->add($medico);
  257. }
  258. if (!empty($data['crm2'])) {
  259. $crm = $this->medicoRepository->findOneBy(array('crm' => $data['crm2']));
  260. if ($crm) {
  261. $medico = $this->getEm()->getReference('Agencia\Entity\Medico', $crm->getId());
  262. } else {
  263. $medico = new \Agencia\Entity\Medico();
  264. $medico->setNomeMedico($data['medico2']);
  265. $medico->setCrm($data['crm2']);
  266. $medico->setDataCadastro(new \DateTime('now'));
  267. $this->getEm()->persist($medico);
  268. $this->getEm()->flush();
  269. }
  270. if (!$medico) {
  271. $this->getEm()->rollback();
  272. return false;
  273. }
  274. $med->add($medico);
  275. }
  276. $data['medico'] = $med;
  277. $obito = parent::save($data);
  278. if (!$obito) {
  279. $this->getEm()->rollback();
  280. return false;
  281. }
  282. /*Sepultamento**/
  283. if($data['tipoDestinoFinal']==1){
  284. if($data['hiddenCemiterio']){
  285. $cemiterios = $this->getEm()->getReference('Admin\Entity\Cemiterio', ['id' => $data['hiddenCemiterio']]);
  286. if($cemiterios){
  287. $data['cemiterio'] = $cemiterios->getId();
  288. $variavel = $cemiterios;
  289. }
  290. }else if($data['cemiterio']!==''){
  291. $cemit = new \Admin\Entity\Cemiterio();
  292. $cemit->setNome($data['cemiterio']);
  293. $cemit->setEndereco($data['endereco']);
  294. $cemit->setTipo($this->getEm()->getReference('Admin\Entity\Tipo', 1));
  295. $cemit->setDataCadastro(new \DateTime('now'));
  296. $cemit->setNumero('');
  297. $cemit->setBairro('');
  298. $cemit->setCep('');
  299. $cemit->setPrimeiroTelefone('');
  300. $cemit->setSegundoTelefone('');
  301. $cemit->setCategoria('');
  302. $cemit->setEmail('');
  303. $cemit->setObservacao('');
  304. $cemit->setAtivo(1);
  305. $this->getEm()->persist($cemit);
  306. $this->getEm()->flush();
  307. $variavel =$cemit;
  308. }
  309. $sepultamento = array();
  310. $sepultamento['cemiterio'] = $variavel;
  311. $sepultamento['id'] = '';
  312. $sepultamento['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', $contratacao->id);
  313. $sepultamento['dataCadastro'] = new \DateTime('now');
  314. $sepultamento['dadosObito'] = $this->getEm()->getReference('Agencia\Entity\DadosObito', $obito->getId());
  315. $sepultamento['dataSepultamento'] = new \DateTime($this->getDateTimeFormat()->formatUs($data['dtSepultamento']));
  316. $sepultamento['horaSepultamento'] = $data['hrSepultamento'];
  317. $this->sepultamentoService->save($sepultamento);
  318. }
  319. /*Cremação**/
  320. if($data['tipoDestinoFinal']==2){
  321. if($data['hiddenCrematorio']){
  322. $crematorios = $this->getEm()->getReference('Admin\Entity\Cemiterio', ['id' => $data['hiddenCrematorio']]);
  323. if($crematorios){
  324. $data['cemiterio'] = $crematorios->getId();
  325. $variavel = $crematorios;
  326. }
  327. }else if($data['crematorio']!==''){
  328. //
  329. $cremat = new \Admin\Entity\Cemiterio();
  330. $cremat->setNome($data['crematorio']);
  331. $cremat->setEndereco($data['endereco']);
  332. $cremat->setTipo($this->getEm()->getReference('Admin\Entity\Tipo', 2));
  333. $cremat->setDataCadastro(new \DateTime('now'));
  334. $cremat->setNumero('');
  335. $cremat->setBairro('');
  336. $cremat->setCep('');
  337. $cremat->setPrimeiroTelefone('');
  338. $cremat->setSegundoTelefone('');
  339. $cremat->setCategoria('');
  340. $cremat->setEmail('');
  341. $cremat->setObservacao('');
  342. $cremat->setAtivo(1);
  343. $this->getEm()->persist($cremat);
  344. $this->getEm()->flush();
  345. $variavel = $cremat;
  346. }
  347. $cremacao = array();
  348. $cremacao['cemiterio'] = $variavel;
  349. $cremacao['id'] = '';
  350. $cremacao['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', $contratacao->id);
  351. $cremacao['dataCadastro'] = new \DateTime('now');
  352. $cremacao['dadosObito'] = $this->getEm()->getReference('Agencia\Entity\DadosObito', $obito->getId());
  353. $cremacao['dataCremacao'] = new \DateTime($this->getDateTimeFormat()->formatUs($data['dtCremacao']));
  354. $cremacao['horaCremacao'] = $data['hrCremacao'];
  355. $cremacao['endereco'] = $data['endereco'];
  356. $cremacao['crematorio'] = $data['crematorio'];
  357. $this->cremacaoService->save($cremacao);
  358. }
  359. if($data['corpoVelado']=='S'){
  360. $velado = array();
  361. $velado['id'] = '';
  362. $velado['dadosObito'] = $this->getEm()->getReference('Agencia\Entity\DadosObito', $obito->getId());
  363. $velado['contratacao'] = $this->getEm()->getReference('Agencia\Entity\Contratacao', $contratacao->id);
  364. $velado['localVelorio'] = $data['localVelorio'];
  365. $velado['dataCadastro'] = new \DateTime('now');
  366. $velado['endereco'] = $data['enderecoVelorio'];
  367. $velado['dataSaida'] = new \DateTime($this->getDateTimeFormat()->formatUs($data['dtSaida']));
  368. $velado['horaSaida'] = $data['hrSaida'];
  369. $velorios = $this->velorioService->save($velado);
  370. }
  371. $this->getEm()->commit();
  372. return true;
  373. } catch (\Exception $ex) {
  374. $this->log->log(\Zend\Log\Logger::ERR, $ex->getMessage());
  375. $this->getEm()->rollback();
  376. return false;
  377. }
  378. }
  379. }