public function saveEmprestimo(\Core_Dto_Search $dto) { try { $filter = new \Zend_Filter(); $filter->addFilter(new \Zend_Filter_StringTrim())->addFilter(new \Zend_Filter_StripTags()); $validate = new \Zend_Validate_StringLength(array('max' => 250, 'encoding' => 'UTF-8')); $tipo = $dto->getDestinoInterno(); $txMotivo = $filter->filter($dto->getTxMotivo()); $noPessoaEntregue = $filter->filter($dto->getNoPessoaEntregue()); if (!$validate->isValid($txMotivo)) { throw new \Core_Exception_ServiceLayer_Verification('Texto muito logo para o motivo'); } if (!$validate->isValid($noPessoaEntregue)) { throw new \Core_Exception_ServiceLayer_Verification('Texto muito logo para o nome da pessoa a quem serĂ¡ entregue o artefato'); } $dtOperacao = \Zend_Date::now(); $sqTipoHistorico = \Core_Configuration::getSgdoceTipoHistoricoArquivoEmprestado(); if ($tipo == 'externo') { $sqPessoa = $dto->getSqPessoa(); } else { $sqPessoa = $dto->getSqPessoaIcmbioDestino(); } foreach ($dto->getSqArtefato()->getApi() as $method) { $entityArtefato = $this->_getRepository('app:Artefato')->find($dto->getSqArtefato()->{$method}()); $entityCaixaArtefato = $this->_getRepository('app:CaixaArtefato')->findOneBy(array('sqArtefato' => $entityArtefato->getSqArtefato())); //gerar historico arquivo com o tipo 8 \Core_Configuration::getSgdoceTipoHistoricoArquivoEmprestado() $entityCaixaHistorico = $this->getServiceLocator()->getService('CaixaArtefato')->insertHistorico($entityCaixaArtefato, $dtOperacao, $sqTipoHistorico); //registrar o emprestimo $entityEmprestimo = $this->_newEntity('app:Emprestimo'); $entityEmprestimo->setSqCaixaHistorico($entityCaixaHistorico)->setSqPessoaEmprestimo($this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoa))->setTxMotivo($txMotivo)->setNoPessoaEntregue($noPessoaEntregue); $this->getEntityManager()->persist($entityEmprestimo); } $this->getEntityManager()->flush(); } catch (\Exception $e) { throw $e; } }