Ejemplo n.º 1
0
 /**
  * @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;
 }