/** * @return */ public function newStatusSolicitacao(\Core_Dto_Search $dto) { $entStatusSolicitacao = $this->_getRepository('app:StatusSolicitacao')->findBy(array('sqSolicitacao' => $dto->getSqSolicitacao(), 'sqPessoaTriagem' => $dto->getSqPessoaTriagem(), 'sqTipoStatusSolicitacao' => $dto->getSqTipoStatusSolicitacao(), 'txComentario' => $dto->getTxComentario())); if (count($entStatusSolicitacao)) { throw new \Core_Exception_ServiceLayer('Requisição enviada mais de uma vez. Já existe uma solicitação com essa situação.'); } $entStatusSolicitacao = $this->_newEntity('app:StatusSolicitacao'); $entTipoStatusSolicitacao = $this->getEntityManager()->getPartialReference('app:TipoStatusSolicitacao', $dto->getSqTipoStatusSolicitacao()); $entStatusSolicitacao->setSqTipoStatusSolicitacao($entTipoStatusSolicitacao); $entSolicitacao = null; if ($dto->getSqSolicitacao() instanceof \Sgdoce\Model\Entity\Solicitacao) { $entStatusSolicitacao->setSqSolicitacao($dto->getSqSolicitacao()); $entSolicitacao = $dto->getSqSolicitacao(); } else { $entSolicitacao = $this->getEntityManager()->find('app:Solicitacao', $dto->getSqSolicitacao()); $entStatusSolicitacao->setSqSolicitacao($entSolicitacao); } if ($dto->getSqPessoaTriagem() != '') { $sqPessoaTriagem = $dto->getSqPessoaTriagem(); $entPessoaTriagem = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoaTriagem); $entStatusSolicitacao->setSqPessoaTriagem($entPessoaTriagem); } if ($dto->getSqPessoaResponsavel() != '') { $sqPessoaResponsavel = $dto->getSqPessoaResponsavel(); $entPessoaResponsavel = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoaResponsavel); $entStatusSolicitacao->setSqPessoaResponsavel($entPessoaResponsavel); } if ($dto->getTxComentario() != '') { $entStatusSolicitacao->setTxComentario($dto->getTxComentario()); } $entStatusSolicitacao->setDtOperacao(\Zend_Date::now()); $this->getEntityManager()->persist($entStatusSolicitacao); $this->getEntityManager()->flush(); if ($entSolicitacao->getSqArtefato() instanceof \Sgdoce\Model\Entity\Artefato) { $entSolicitacao->setSqArtefato($this->getEntityManager()->find('app:Artefato', $entSolicitacao->getSqArtefato()->getSqArtefato())); } if (isset($entSolicitacao)) { if ($entStatusSolicitacao->getSqTipoStatusSolicitacao()->getSqTipoStatusSolicitacao() != \Core_Configuration::getSgdoceTipoStatusSolicitacaoDevolvidaTriagem()) { $this->_sendStatus($entSolicitacao, $dto->getTxComentario()); } } return $entStatusSolicitacao; }