public function getHistoricoTitulo(TituloTesouro $objTituloTesouro, $interval = 0) { $query = $this->getEntityManager()->createQueryBuilder()->select('titulo_historico')->from('RafaelSantiagoTesouroDiretoBundle:TituloHistorico', 'titulo_historico')->where('titulo_historico.titulo = :titulo_id')->orderBy('titulo_historico.data', 'DESC'); if ($interval > 0) { $query->setMaxResults($interval); } $query->setParameter('titulo_id', $objTituloTesouro->getId()); $arrHistorico = $query->getQuery()->execute(); $valores = array(); foreach ($arrHistorico as $objTituloHistorico) { array_unshift($valores, $objTituloHistorico->getValorVenda()); } return implode(',', $valores); }
protected function execute(InputInterface $input, OutputInterface $output) { $objDataAtual = new \DateTime(); $objDataAtual->setTime(0, 0, 0); $doctrine = $this->getContainer()->get('doctrine'); $em = $doctrine->getManager(); $tituloRepo = $em->getRepository('RafaelSantiagoTesouroDiretoBundle:TituloTesouro'); $tituloHistoricoRepo = $em->getRepository('RafaelSantiagoTesouroDiretoBundle:TituloHistorico'); $html = file_get_contents('http://www.tesouro.fazenda.gov.br/tesouro-direto-precos-e-taxas-dos-titulos'); $crawler = new Crawler($html); $arrTitulos = $crawler->filter('tr.camposTesouroDireto'); foreach ($arrTitulos as $htmlTitulo) { $htmlTitulo = $crawler = new Crawler($htmlTitulo); $dadosTitulo = array(); foreach ($htmlTitulo->filter('td') as $htmlTd) { /** @var $htmlTd \DOMElement */ $dadosTitulo[] = $htmlTd->nodeValue; } $objTitulo = $tituloRepo->findOneBy(array('descricao' => $dadosTitulo[0])); if (!$objTitulo instanceof TituloTesouro) { $objTitulo = new TituloTesouro(); } $objDataVencimento = \DateTime::createFromFormat('d/m/Y H:i:s', $dadosTitulo[1] . '00:00:00'); $objTitulo->setDescricao($dadosTitulo[0]); $objTitulo->setDataVencimento($objDataVencimento); $objTitulo->setTaxaCompra($this->formataValor($dadosTitulo[2])); $objTitulo->setTaxaVenda($this->formataValor($dadosTitulo[3])); $objTitulo->setValorCompra($this->formataValor($dadosTitulo[4])); $objTitulo->setValorVenda($this->formataValor($dadosTitulo[5])); $em->persist($objTitulo); $em->flush(); // Grava o historico do título $objTituloHistorico = $tituloHistoricoRepo->findOneBy(array('data' => $objDataAtual, 'titulo' => $objTitulo->getId())); if (!$objTituloHistorico instanceof TituloHistorico) { $objTituloHistorico = new TituloHistorico(); $objTituloHistorico->setTitulo($objTitulo); $objTituloHistorico->setData($objDataAtual); $objTituloHistorico->setTaxaCompra($this->formataValor($dadosTitulo[2])); $objTituloHistorico->setTaxaVenda($this->formataValor($dadosTitulo[3])); $objTituloHistorico->setValorCompra($this->formataValor($dadosTitulo[4])); $objTituloHistorico->setValorVenda($this->formataValor($dadosTitulo[5])); $em->persist($objTituloHistorico); $em->flush(); } } }