/** * * Tela de importação de arquivo CSV com registros de Computadores */ public function importarcsvAction(Request $request) { $form = $this->createFormBuilder()->add('arquivocsv', 'file', array('label' => 'Arquivo', 'attr' => array('accept' => '.csv')))->getForm(); if ($request->isMethod('POST')) { $form->bindRequest($request); if ($form['arquivocsv']->getData() instanceof \Symfony\Component\HttpFoundation\File\UploadedFile) { // Executa a importação do arquivo - grava no diretório web/upload/migracao $dirMigracao = realpath(dirname(__FILE__) . '/../../../../web/upload/migracao/'); $fileName = 'Comp_U' . $this->getUser()->getIdUsuario() . 'T' . time() . '.csv'; $form['arquivocsv']->getData()->move($dirMigracao, $fileName); $em = $this->getDoctrine()->getManager(); // Abre o arquivo salvo e começa a rotina de importação dos dados do CSV $csv = file($dirMigracao . '/' . $fileName); foreach ($csv as $k => $v) { // Valida a linha $v = explode(';', trim(str_replace(array('"', '\\N'), '', $v))); if (count($v) != 13) { continue; } $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->find((int) $v[1]); $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->findOneByTeIpRede($v[2]); $comp = new Computador(); if ($so) { $comp->setIdSo($so); } if ($rede) { $comp->setIdRede($rede); } $comp->setTeNodeAddress($v[0]); $comp->setTePalavraChave($v[3]); $comp->setTeIpComputador($v[4]); $comp->setDtHrInclusao($v[5] ? new \Datetime($v[5]) : null); $comp->setDtHrUltAcesso($v[6] ? new \Datetime($v[6]) : null); $comp->setTeVersaoCacic($v[7]); $comp->setTeVersaoGercols($v[8]); $comp->setDtHrColetaForcadaEstacao($v[9] ? new \Datetime($v[9]) : null); $comp->setTeNomesCurtosModulos($v[10]); $comp->setIdConta($v[11]); $comp->setNmComputador($v[12]); $em->persist($comp); } $em->flush(); // Persiste os dados dos Computadores $this->get('session')->getFlashBag()->add('success', 'Importação realizada com sucesso!'); } else { $this->get('session')->getFlashBag()->add('error', 'Arquivo CSV inválido!'); } return $this->redirect($this->generateUrl('cacic_migracao_computador')); } return $this->render('CacicCommonBundle:Computador:importarcsv.html.twig', array('form' => $form->createView())); }