onlineanmeldung-pegnitz/src/Controller/MigrationController.php

156 lines
4.8 KiB
PHP

<?php
namespace App\Controller;
use App\Entity\Beruf;
use App\Entity\Betrieb;
use App\Entity\Schule;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\Persistence\ManagerRegistry;
#[Route(path: '/migration')]
class MigrationController extends AbstractController
{
#[Route(path: '/berufe')]
public function berufe(ManagerRegistry $doctrine)
{
$path = APPLICATION_PATH . '/berufekennungen.json';
$entries = self::parseFile($path);
$entityManager = $doctrine->getManager();
$migrationCount = 0;
foreach ($entries as $entry)
{
$item = json_decode($entry, true);
$beruf = new Beruf();
$beruf->setBezeichnung($item['AB_BEZEICHNG']);
$beruf->setNummer($item['AB_NR']);
$beruf->setKlasse($item['Klasse']);
$entityManager->persist($beruf);
$migrationCount++;
}
$entityManager->flush();
return $this->render('migration/index.html.twig', [
'tabelle' => 'berufe',
'count' => $migrationCount
]);
}
#[Route(path: '/betriebe')]
public function betriebe(ManagerRegistry $doctrine)
{
$path = APPLICATION_PATH . '/betriebedaten.json';
$entries = self::parseFile($path);
$entityManager = $doctrine->getManager();
$migrationCount = 0;
foreach ($entries as $entry)
{
$item = json_decode($entry, true);
$betrieb = new Betrieb();
$betrieb
->setName($item['name1'] . ' ' . $item['name2'] . ' ' . $item['name3'] . ' ' . $item['name4'])
->setStrasse($item['strasse'])
->setHsnr($item['hausnummer'])
->setPlz($item['postleitzahl'])
->setOrt($item['ortsbezeichnung'])
->setTelZentrale($item['telNummer'])
->setTelDurchwahl($item['mobilNummer'])
->setFax($item['faxNummer'])
->setEmail($item['emailAdresse'])
->setGemeindeschluessel($item['gkz'])
->setKuerzel($item['kuerzel'])
->setIstVerifiziert(1)
->setAsvImport(1);
/*
->setName($item['B_NAME1'] . ' ' . $item['B_NAME2'])
->setStrasse($item['B_STRASSE'])
->setPlz($item['B_PLZ'])
->setOrt($item['B_ORT'])
->setTelZentrale($item['B_TELEFON1'])
->setTelDurchwahl($item['B_TELEFON2'])
->setFax($item['B_TELEFON3'])
->setEmail($item['B_E_MAIL'])
->setGemeindeschluessel($item['B_GEMEINDEKZ'])
->setKammer($item['B_BBIG'])
->setAnsprPartner($item['B_NAME4'])
->setKuerzel($item['B_SCHLUESSEL'])
->setIstVerifiziert(true);
*/
$entityManager->persist($betrieb);
$migrationCount++;
}
$entityManager->flush();
return $this->render('migration/index.html.twig', [
'tabelle' => 'betriebe',
'count' => $migrationCount
]);
}
#[Route(path: '/schulen')]
public function schulen(ManagerRegistry $doctrine)
{
$path = APPLICATION_PATH . '/herkunftsschulen.json';
$entries = self::parseFile($path);
$entityManager = $doctrine->getManager();
$migrationCount = 0;
foreach ($entries as $entry)
{
$item = json_decode($entry, true);
$schule = new Schule();
$schule
->setNummer($item['HKS_NUMMER'])
->setName($item['HKS_NAME'])
->setStrasse($item['HKS_STRASSE'])
->setPlz($item['HKS_PLZ'])
->setOrt($item['HKS_ORT'])
->setArt('noch nicht definiert')
->setIstVerifiziert(true);
$entityManager->persist($schule);
$migrationCount++;
}
$entityManager->flush();
return $this->render('migration/index.html.twig', [
'tabelle' => 'schulen',
'count' => $migrationCount
]);
}
private static function parseFile($path)
{
$content = file_get_contents($path);
// Der Export ist kein valides JSON, deshalb das komplizierte Parsing.
$entries = explode('}', $content);
// 1. entry
$entries[0] = $entries[0] . '}';
$entries[0] = substr($entries[0], 1);
// other entries
for($i = 1; $i < sizeof($entries); $i++) {
$entries[$i] = substr($entries[$i], 1);
$entries[$i] = $entries[$i] . '}';
}
// last element is only a square bracket
array_pop($entries);
return $entries;
}
}