Exemplo n.º 1
0
 /**
  * Load data fixtures with the passed EntityManager
  *
  * @param ObjectManager $manager
  */
 function load(ObjectManager $manager)
 {
     $empresas = $manager->getRepository('SisesApplicationBundle:Empresa')->findAll();
     $empresa = $empresas[0];
     $contratante = $empresas[1];
     $contrato = new Contrato();
     $contrato->setEmpresa($empresa);
     $contrato->setContratante($contratante);
     $contrato->setNombre("Contrato de alimentos de {$empresa->getNombre()}");
     $contrato->setDescripcion($contrato->getNombre());
     $contrato->setResolucion("Resolucion 00" . uniqid() . " de 2014");
     $contrato->setFechaInicio(new \DateTime());
     $contrato->setFechaCierre((new \DateTime())->add(new \DateInterval('P70D')));
     $contrato->setValor(1500000);
     $manager->persist($contrato);
     $servicio = new ServicioContratado();
     $servicio->setNombre("Almuerzos");
     $servicio->setDiasContratados(100);
     $servicio->setUnidadesDiarias(1500);
     $servicio->setValorUnitario(2560);
     $servicio->setCostoUnitario(1850);
     $contrato->addServicio($servicio);
     $servicio2 = new ServicioContratado();
     $servicio2->setNombre("Desayunos");
     $servicio2->setDiasContratados(100);
     $servicio2->setUnidadesDiarias(1500);
     $servicio2->setValorUnitario(2560);
     $servicio2->setCostoUnitario(1850);
     $contrato->addServicio($servicio2);
     // Crea el coordinador
     $persona = new Persona();
     $persona->setNombre("Juancho");
     $persona->setApellidos("Pedrozo");
     $persona->setDocumento(uniqid());
     $manager->persist($persona);
     $coordinador = new Coordinador();
     $coordinador->setPersona($persona);
     $coordinador->setContrato($contrato);
     $manager->persist($coordinador);
     // Crea el director
     $director = new Director();
     $director->setPersona($persona);
     $director->addEmpresa($contrato->getEmpresa());
     $manager->persist($director);
     $manager->flush();
 }
 /**
  * @VirtualProperty()
  * @SerializedName("servicio")
  * @Groups({"details"})
  */
 public function getServicioId()
 {
     return $this->servicio->getId();
 }
 private function loadData(ServicioContratado $servicio)
 {
     $manager = $this->manager;
     $bag =& $this->bag;
     /** @var EntityRepository $repo */
     $repo = $this->manager->getRepository('SisesApplicationBundle:Ubicacion\\CentroPoblado');
     $repoLugar = $this->manager->getRepository('SisesApplicationBundle:LugarEntrega');
     $findLugar = function ($columns) use($repo, $repoLugar, &$bag, $manager) {
         $nombre = $columns[self::COL_NOM_LUGAR];
         $codigoUbicacion = $columns[self::COL_CODIGO_UBICACION];
         if (!isset($bag[self::BAG_LUGAR][$nombre])) {
             $bag[self::BAG_LUGAR][$nombre] = $repoLugar->findOneBy(array('nombre' => $nombre));
         }
         if (!$bag[self::BAG_LUGAR][$nombre]) {
             if (!isset($bag[self::BAG_UBICACION][$codigoUbicacion])) {
                 $bag[self::BAG_UBICACION][$codigoUbicacion] = $repo->findOneBy(array('codigoDane' => "{$codigoUbicacion}000"));
             }
             if (!$bag[self::BAG_UBICACION][$codigoUbicacion]) {
                 throw new \Exception("No se encontro el municipio para codigo {$codigoUbicacion}");
             }
             $lugar = new LugarEntrega();
             $lugar->setUbicacion($bag[self::BAG_UBICACION][$codigoUbicacion]);
             $lugar->setNombre($nombre);
             $manager->persist($lugar);
             $bag[self::BAG_LUGAR][$nombre] = $lugar;
         }
         return $bag[self::BAG_LUGAR][$nombre];
     };
     /** @var EntityRepository $repo2 */
     $repo2 = $this->manager->getRepository('SisesApplicationBundle:Persona');
     $findPersona = function ($column) use($repo2, &$bag, $manager) {
         $documento = $column[self::COL_DOCUMENTO];
         // Busca la persona en la base d datos
         if (!isset($bag[self::BAG_PERSONA][$documento])) {
             $bag[self::BAG_PERSONA][$documento] = $repo2->findOneBy(array('documento' => $documento));
         }
         // Crea la persona
         if (!$bag[self::BAG_PERSONA][$documento]) {
             $persona = new Persona();
             $persona->setNombre(trim("{$column[self::COL_1_NOM]} {$column[self::COL_2_NOM]}"));
             $persona->setApellidos(trim("{$column[self::COL_1_APE]} {$column[self::COL_2_APE]}"));
             $persona->setDocumento($documento);
             $manager->persist($persona);
             $bag[self::BAG_PERSONA][$documento] = $persona;
         }
         return $bag[self::BAG_PERSONA][$documento];
     };
     $interpreter = new CSV\Interpreter();
     $interpreter->addObserver(function (array $columns) use($bag, $findLugar, $findPersona, $servicio, $manager) {
         if ($columns[0] == "AÑO") {
             return;
         }
         $beneficiario = new Beneficiario();
         $beneficiario->setPersona($findPersona($columns));
         $beneficiario->setContrato($servicio->getContrato());
         $beneficio = new Beneficio();
         $beneficio->setBeneficiario($beneficiario);
         $beneficio->setLugar($findLugar($columns));
         $beneficio->setServicio($servicio);
         $manager->persist($beneficiario);
         $manager->persist($beneficio);
     });
     $this->lexer->parse($this->file, $interpreter);
     ksort($bag['ubicacion']);
     $manager->flush();
 }
Exemplo n.º 4
0
 public function loadBeneficio(ServicioContratado $servicio)
 {
     $file = sprintf(__DIR__ . '/../../Resources/files/%s.csv', $servicio->getNombre() == "Desayunos" ? '100' : '200');
     $config = new LexerConfig();
     $config->setDelimiter(',')->setEnclosure('"')->setFromCharset('UTF-8')->setToCharset('UTF-8');
     $lexer = new Lexer($config);
     $manager = $this->manager;
     $bag =& $this->bag;
     $repo = $this->manager->getRepository('SisesApplicationBundle:Ubicacion\\CentroPoblado');
     $findLugar = function ($columns) use($repo, &$bag, $manager) {
         $nombre = $columns[LoadBeneficiarios::COL_NOM_LUGAR];
         $codigoLugar = $columns[LoadBeneficiarios::COL_CODIGO_UBICACION];
         if (!isset($bag[LoadBeneficiarios::BAG_UBICACION][$nombre])) {
             if (!isset($bag[LoadBeneficiarios::BAG_LUGAR][$codigoLugar])) {
                 $bag[LoadBeneficiarios::BAG_LUGAR][$codigoLugar] = $repo->findOneBy(array('codigoDane' => "{$codigoLugar}000"));
             }
             $lugar = new LugarEntrega();
             $lugar->setUbicacion($bag[LoadBeneficiarios::BAG_LUGAR][$codigoLugar]);
             $lugar->setNombre($nombre);
             $manager->persist($lugar);
             $bag[LoadBeneficiarios::BAG_UBICACION][$nombre] = $lugar;
         }
         return $bag[LoadBeneficiarios::BAG_UBICACION][$nombre];
     };
     $repo2 = $this->manager->getRepository('SisesApplicationBundle:Persona');
     $findPersona = function ($column) use($repo2, &$bag, $manager) {
         $documento = $column[LoadBeneficiarios::COL_DOCUMENTO];
         // Busca la persona en la base d datos
         if (!isset($bag[LoadBeneficiarios::BAG_PERSONA][$documento])) {
             $bag[LoadBeneficiarios::BAG_PERSONA][$documento] = $repo2->findOneBy(array('documento' => $documento));
         }
         // Crea la persona
         if (!isset($bag[LoadBeneficiarios::BAG_PERSONA][$documento])) {
             $persona = new Persona();
             $persona->setNombre(trim("{$column[LoadBeneficiarios::COL_1_NOM]} {$column[LoadBeneficiarios::COL_2_NOM]}"));
             $persona->setApellidos(trim("{$column[LoadBeneficiarios::COL_1_APE]} {$column[LoadBeneficiarios::COL_2_APE]}"));
             $persona->setDocumento($documento);
             $manager->persist($persona);
             $bag[LoadBeneficiarios::BAG_PERSONA][$documento] = $persona;
         }
         return $bag[LoadBeneficiarios::BAG_PERSONA][$documento];
     };
     $interpreter = new Interpreter();
     $interpreter->addObserver(function (array $columns) use($bag, $findLugar, $findPersona, $servicio, $manager) {
         if ($columns[0] == "AÑO") {
             return;
         }
         $beneficiario = new Beneficiario();
         $beneficiario->setPersona($findPersona($columns));
         $beneficiario->setContrato($servicio->getContrato());
         $beneficio = new Beneficio();
         $beneficio->setBeneficiario($beneficiario);
         $beneficio->setLugar($findLugar($columns));
         $beneficio->setServicio($servicio);
         $manager->persist($beneficiario);
         $manager->persist($beneficio);
     });
     $lexer->parse($file, $interpreter);
     ksort($bag['ubicacion']);
     $manager->flush();
 }