, * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ namespace Chill\MainBundle\DataFixtures\ORM; use Chill\MainBundle\Doctrine\Model\Point; use Chill\MainBundle\Entity\Country; use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\OrderedFixtureInterface; use Doctrine\Persistence\ObjectManager; use Chill\MainBundle\Entity\PostalCode; /** * Description of LoadPostalCodes * * @author Julien Fastré * @author Champs Libres */ class LoadPostalCodes extends AbstractFixture implements OrderedFixtureInterface { public function getOrder() { return 50; } public static $refs = []; public function load(ObjectManager $manager) { echo "loading postal codes... \n"; $this->loadPostalCodeCSV($manager, self::$postalCodeBelgium, 'BE'); $this->loadPostalCodeCSV($manager, self::$postalCodeFrance, 'FR'); } private function loadPostalCodeCSV(ObjectManager $manager, string $csv, string $countryCode) { $lines = str_getcsv($csv, "\n"); $country = $manager->getRepository(Country::class) ->findOneBy(['countryCode' => $countryCode]); foreach($lines as $line) { $code = str_getcsv($line); $c = new PostalCode(); $c->setCountry($country) ->setCode($code[0]) ->setName(\ucwords(\strtolower($code[1]))) ; if (NULL != $code[3]){ $c->setRefPostalCodeId($code[3]); } if (NULL != $code[4] & NULL != $code[5]){ $c->setCenter(Point::fromLonLat((float) $code[5], (float) $code[4])); } if (NULL != $code[6]){ $c->setPostalCodeSource($code[6]); } $manager->persist($c); $ref = 'postal_code_'.$code[0]; if (! $this->hasReference($ref)) { $this->addReference($ref, $c); self::$refs[] = $ref; } } $manager->flush(); } private static $postalCodeBelgium = <<