/** * @Route("badabum/") * @Template("YacareMunirgBundle:Importar:importar.html.twig") */ public function importarBadabumAction(Request $request) { $desde = (int) $request->query->get('desde'); $cant = 500; mb_internal_encoding('UTF-8'); ini_set('display_errors', 1); set_time_limit(600); ini_set('memory_limit', '2048M'); $em = $this->getDoctrine()->getManager(); $ArchivoCsv = fopen('badaum.csv', 'r'); $importar_importados = 0; $importar_actualizados = 0; $importar_procesados = 0; $log = array(); for ($i = 0; $i < $desde; $i++) { fgetcsv($ArchivoCsv); } while (!feof($ArchivoCsv)) { $Row = fgetcsv($ArchivoCsv); if ($Row && count($Row) > 1 && $Row[0]) { $Persona = $em->getRepository('YacareBaseBundle:Persona')->findOneBy(array('DocumentoNumero' => trim($Row[0]))); if (!$Persona) { $Persona = new \Yacare\BaseBundle\Entity\Persona(); $Persona->setDocumentoNumero($Row[0]); $Persona->setDocumentoTipo(1); $ApellidoYNombres = StringHelper::ObtenerApellidoYNombres($Row[1]); $Persona->setApellido(StringHelper::Desoraclizar($ApellidoYNombres[0])); $Persona->setNombre(StringHelper::Desoraclizar($ApellidoYNombres[1])); $log[] = 'Creando persona: DNI ' . $Row[0] . ', ' . $Row[1]; $importar_importados++; } else { $importar_actualizados++; } $PartesDomicilio = StringHelper::ObtenerCalleYNumero($Row[2]); /* * $Calle = $em->getRepository ( 'YacareCatastroBundle:Calle' )->findOneBy ( array ( * 'Nombre' => $this->ArreglarNombreCalle ( $PartesDomicilio [0] ) * ) ); */ $Calles = $em->getRepository('YacareCatastroBundle:Calle')->createQueryBuilder('c')->where('c.Nombre LIKE :nombre')->setParameter('nombre', $this->ArreglarNombreCalle($PartesDomicilio[0]))->getQuery()->getResult(); if (count($Calles) == 1) { $Calle = $Calles[0]; $PartesDomicilio[0] = $Calle->getNombre(); } else { $Calle = null; } if ($Row[3]) { $PartesDomicilio[1] = $Row[3]; } if ($Row[4]) { $PartesDomicilio[2] = $Row[4]; } if (!$Calle) { $log[] = 'No existe la calle ' . $PartesDomicilio[0]; } $Persona->setDomicilioCalle($Calle); $Persona->setDomicilioCalleNombre($PartesDomicilio[0]); $Persona->setDomicilioNumero($PartesDomicilio[1]); if (count($PartesDomicilio) > 2) { $Persona->setDomicilioPuerta($PartesDomicilio[2]); } if (!$Persona->getTelefonoNumero()) { $Persona->setTelefonoNumero(trim($Row[6])); } else { $Persona->setTelefonoNumero($Persona->getTelefonoNumero() . ', ' . trim($Row[6])); } if (!$Persona->getFechaNacimiento() && $Row[7]) { $fecha = \DateTime::createFromFormat('d/m/Y', $Row[7]); if ($fecha) { $Persona->setFechaNacimiento($fecha); } } // Si no está en el grupo, lo agrego if ($Row[8]) { $Grupo = $em->getRepository('YacareBaseBundle:PersonaGrupo')->find($Row[8]); if ($Persona->getGrupos()->contains($Grupo) == false) { $Persona->getGrupos()->add($Grupo); } } $em->persist($Persona); $em->flush(); $importar_procesados++; $log[] = $Row[0] . ': ' . (string) $Persona; } if ($importar_procesados >= $cant) { break; } } fclose($ArchivoCsv); return array('importar_importados' => $importar_importados, 'importar_actualizados' => $importar_actualizados, 'importar_procesados' => $importar_procesados, 'redir_desde' => $importar_procesados == $cant ? $desde + $cant : 0, 'log' => $log); }