LandValueFixtures.php 1,88 ko
Newer Older
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
<?php

namespace App\DataFixtures;

use App\Entity\LandValue;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;

class LandValueFixtures extends Fixture
{
    public function load(ObjectManager $manager)
    {
        $dataFile = fopen('%kernel.root_dir%/../data/valeursfoncieres-2021.txt',  'r');
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
        $regionFile = fopen('%kernel.root_dir%/../data/departements-region.txt',  'r');
        $numberLine = 0;
        while (($lineRegion = fgets($regionFile)) !== false)
        {
            if ($numberLine !== 0)
            {
                $values = explode(',', $lineRegion);
                $regionMapping[strval($values[0])] = str_replace("\r\n", "", $values[2]);
            }
            $numberLine++;
        }
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
        $numberItems = 0;
        $numberLine = 0;
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
        while (($lineData = fgets($dataFile)) !== false)
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
        {
            if ($numberLine !== 0)
            {
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
                $values = explode('|',  $lineData);
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
                $land_value = new LandValue();
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
                $land_value->setMutationDate(\DateTime::createFromFormat('d/m/Y',  $values[8]));
                $land_value->setMutationType($values[9]);
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
                $land_value->setLandValue(floatval(str_replace(', ',  '.',  $values[10])));
                $land_value->setLocalType($values[36]);
                $land_value->setActualBuiltUpArea(intval($values[38]));
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
                $land_value->setRegion($regionMapping[strval($values[18])]);
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
                $manager->persist($land_value);
                $numberItems++;
                if ($numberItems === 1000)
                {
                    $numberItems = 0;
                    $manager->flush();
                    $manager->clear();
                }
            }
            $numberLine++;
        }
        $manager->flush();
        $manager->clear();
Jérémy Aubourg's avatar
Jérémy Aubourg a validé
        fclose($dataFile);
        fclose($regionFile);