Example #1
0
 /**
  * @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);
 }