<?php
/**
* Erstellt die Moduspezifischen Amtsblattinhalte, welche gerendert abgelegt werden
*
* User: bruno.ziegler
* Date: 17.12.13 10:51
*/
namespace App\Model;
use App\Entity\Amtsblatt;
use App\Entity\Baugesuch;
use App\Entity\Baugesuchausnahmebewilligung;
use App\Entity\Einbuergerungsgesuch;
use App\Entity\Erdsonde;
use App\Entity\Gestaltungsplan;
use App\Entity\Konzessionsbewilligung;
use App\Entity\Konzessionsgesuch;
use App\Entity\KonzessionsgesuchGewaesser;
use App\Entity\KonzessionsgesuchUmwelt;
use App\Entity\Nutzungsplanung;
use App\Entity\Rodungsgesuch;
use App\Entity\Schutzzonenplan;
use App\Event\FilterBaugesuchausnahmebewilligungEvent;
use App\Event\FilterBaugesuchEvent;
use App\Event\FilterEinbuergerungsgesuchEvent;
use App\Event\FilterErdsondeEvent;
use App\Event\FilterGestaltungsplanEvent;
use App\Event\FilterKonzessionsbewilligungEvent;
use App\Event\FilterKonzessionsgesuchEvent;
use App\Event\FilterKonzessionsgesuchGewaesserEvent;
use App\Event\FilterKonzessionsgesuchUmweltEvent;
use App\Event\FilterNutzungsplanungEvent;
use App\Event\FilterRodungsgesuchEvent;
use App\Event\FilterSchutzzonenplanEvent;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\KernelInterface;
class BackupManager
{
public function __construct(
protected EntityManagerInterface $em,
protected KernelInterface $kernel
)
{
}
/**
* Sichert die Baugesuche (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onBaugesuchChange(FilterBaugesuchEvent $event): void
{
$baugesuch = $event->getBaugesuch();
$amtsblatt = $baugesuch->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Baugesuch::MODULE_CODE . '.txt';
// BACKUP ALLE BAUGESUCHE --------------------------------------------------------------------------------------
$strBackup = '';
$baugesuche = $this->em->getRepository(Baugesuch::class)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Baugesuch::STATUS_ENTWURF, Baugesuch::STATUS_ERFASST, Baugesuch::STATUS_REDIGIERT]
);
if ($baugesuche) {
foreach ($baugesuche as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
$strBackup .= $baugesuche[0]->formatFooter('text', 'kanton');
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Baugesuche', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE BAUGESUCHE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Baugesuchausnahmebewilligungen (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onBaugesuchausnahmebewilligungChange(FilterBaugesuchausnahmebewilligungEvent $event): void
{
$baugesuchausnahmebewilligung = $event->getBaugesuchausnahmebewilligung();
$amtsblatt = $baugesuchausnahmebewilligung->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Baugesuchausnahmebewilligung::MODULE_CODE . '.txt';
// BACKUP ALLE BAUGESUCHAUSNAHMEBEWILLIGUNGEN -------------------------------------------------------------------------
$strBackup = '';
$baugesuchausnahmebewilligungen = $this->em->getRepository(Baugesuchausnahmebewilligung::class)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Baugesuchausnahmebewilligung::STATUS_ENTWURF, Baugesuchausnahmebewilligung::STATUS_ERFASST, Baugesuchausnahmebewilligung::STATUS_REDIGIERT]
);
if ($baugesuchausnahmebewilligungen) {
foreach ($baugesuchausnahmebewilligungen as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
$strBackup .= $baugesuchausnahmebewilligungen[0]->formatFooter('text');
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Ausnahmebewilligungen Baugesuche', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE BAUGESUCHAUSNAHMEBEWILLIGUNGEN --------------------------------------------------------------------
}
/**
* Sichert die Rodungsgesuch (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onRodungsgesuchChange(FilterRodungsgesuchEvent $event): void
{
$rodungsgesuch = $event->getRodungsgesuch();
$amtsblatt = $rodungsgesuch->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Rodungsgesuch::MODULE_CODE . '.txt';
// BACKUP ALLE RODUNGSGESUCHE --------------------------------------------------------------------------------------
$strBackup = '';
$rodungsgesuche = $this->em->getRepository(Rodungsgesuch::class)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Rodungsgesuch::STATUS_ENTWURF, Rodungsgesuch::STATUS_ERFASST, Rodungsgesuch::STATUS_REDIGIERT]
);
if ($rodungsgesuche) {
foreach ($rodungsgesuche as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Rodungsgesuche', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE RODUNGSGESUCHE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Einbuergerungsgesuche (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onEinbuergerungsgesuchChange(FilterEinbuergerungsgesuchEvent $event): void
{
$einbuergerungsgesuch = $event->getEinbuergerungsgesuch();
$amtsblatt = $einbuergerungsgesuch->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Einbuergerungsgesuch::MODULE_CODE . '.txt';
// BACKUP ALLE EINBUERGERUNGSGESUCHE --------------------------------------------------------------------------------------
$strBackup = '';
$einbuergerungsgesuche = $this->em->getRepository(
Einbuergerungsgesuch::class
)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Einbuergerungsgesuch::STATUS_ENTWURF, Einbuergerungsgesuch::STATUS_ERFASST, Einbuergerungsgesuch::STATUS_REDIGIERT]
);
if ($einbuergerungsgesuche) {
$strBackup .= $einbuergerungsgesuche[0]->formatTitel('text') . "\n\n";
foreach ($einbuergerungsgesuche as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
$strBackup .= "\n" . $einbuergerungsgesuche[0]->formatFooter('text');
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Einbürgerungsgesuche', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE EINBUERGERUNGSGESUCHE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Schutzzonenplaene (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onSchutzzonenplanChange(FilterSchutzzonenplanEvent $event): void
{
$schutzzonenplan = $event->getSchutzzonenplan();
$amtsblatt = $schutzzonenplan->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Schutzzonenplan::MODULE_CODE . '.txt';
// BACKUP ALLE SCHUTZZONENPLAENE --------------------------------------------------------------------------------------
$strBackup = '';
$schutzzonenplaene = $this->em->getRepository(
Schutzzonenplan::class
)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Schutzzonenplan::STATUS_ENTWURF, Schutzzonenplan::STATUS_ERFASST, Schutzzonenplan::STATUS_REDIGIERT]
);
if ($schutzzonenplaene) {
foreach ($schutzzonenplaene as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Schutzzonenpläne', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE SCHUTZZONENPLAENE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Gestaltungsplaene (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onGestaltungsplanChange(FilterGestaltungsplanEvent $event): void
{
$gestaltungsplan = $event->getGestaltungsplan();
$amtsblatt = $gestaltungsplan->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Gestaltungsplan::MODULE_CODE . '.txt';
// BACKUP ALLE GESTALTUNGSPLAENE --------------------------------------------------------------------------------------
$strBackup = '';
$gestaltungsplaene = $this->em->getRepository(
Gestaltungsplan::class
)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Gestaltungsplan::STATUS_ENTWURF, Gestaltungsplan::STATUS_ERFASST, Gestaltungsplan::STATUS_REDIGIERT]
);
if ($gestaltungsplaene) {
foreach ($gestaltungsplaene as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Gestaltungspläne', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE GESTALTUNGSPLAENE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Nutzungsplanung (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onNutzungsplanungChange(FilterNutzungsplanungEvent $event): void
{
$nutzungsplanung = $event->getNutzungsplanung();
$amtsblatt = $nutzungsplanung->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Nutzungsplanung::MODULE_CODE . '.txt';
// BACKUP ALLE NUTZUNGSPLANUNG --------------------------------------------------------------------------------------
$strBackup = '';
$nutzungsplanungen = $this->em->getRepository(Nutzungsplanung::class)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Nutzungsplanung::STATUS_ENTWURF, Nutzungsplanung::STATUS_ERFASST, Nutzungsplanung::STATUS_REDIGIERT]
);
if ($nutzungsplanungen) {
foreach ($nutzungsplanungen as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Nutzungsplanungen', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE NUTZUNGSPLANUNG ----------------------------------------------------------------------------------------
}
/**
* Sichert die Erdsonde (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onErdsondeChange(FilterErdsondeEvent $event): void
{
$erdsonde = $event->getErdsonde();
$amtsblatt = $erdsonde->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Erdsonde::MODULE_CODE . '.txt';
// BACKUP ALLE ERDSONDEN --------------------------------------------------------------------------------------
$strBackup = '';
$erdsonden = $this->em->getRepository(Erdsonde::class)->findAllByAmtsblattAndGemeinde(
$amtsblatt,
null,
[Erdsonde::STATUS_ENTWURF, Erdsonde::STATUS_ERFASST, Erdsonde::STATUS_REDIGIERT]
);
if ($erdsonden) {
$strBackup .= $erdsonden[0]->formatTitel('text') . "\n\n";
foreach ($erdsonden as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
$strBackup .= $row->getDataText(false) . "\n\n";
}
$strBackup .= $erdsonden[0]->formatFooter('text');
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Erdsonden', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE ERDSONDEN ----------------------------------------------------------------------------------------
}
/**
* Sichert die Konzessionsgesuch (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onKonzessionsgesuchChange(FilterKonzessionsgesuchEvent $event): void
{
$konzessionsgesuch = $event->getKonzessionsgesuch();
$amtsblatt = $konzessionsgesuch->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Konzessionsgesuch::MODULE_CODE . '.txt';
// BACKUP ALLE KONZESSIONSGESUCHE --------------------------------------------------------------------------------------
$strBackup = '';
$konzessionsgesuche = $this->em->getRepository(Konzessionsgesuch::class)->findAllByAmtsblatt(
$amtsblatt,
[Konzessionsgesuch::STATUS_ENTWURF, Konzessionsgesuch::STATUS_ERFASST, Konzessionsgesuch::STATUS_REDIGIERT]
);
if ($konzessionsgesuche) {
foreach ($konzessionsgesuche as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . "]\n";
$strBackup .= $row->getDataText() . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsgesuche', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE KONZESSIONSGESUCHE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Konzessionsgesuch (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onKonzessionsgesuchGewaesserChange(FilterKonzessionsgesuchGewaesserEvent $event): void
{
$konzessionsgesuch = $event->getKonzessionsgesuchGewaesser();
$amtsblatt = $konzessionsgesuch->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . KonzessionsgesuchGewaesser::MODULE_CODE . '.txt';
// BACKUP ALLE KONZESSIONSGESUCHE --------------------------------------------------------------------------------------
$strBackup = '';
$konzessionsgesuche = $this->em->getRepository(KonzessionsgesuchGewaesser::class)->findAllByAmtsblatt(
$amtsblatt,
[KonzessionsgesuchGewaesser::STATUS_ENTWURF, KonzessionsgesuchGewaesser::STATUS_ERFASST, KonzessionsgesuchGewaesser::STATUS_REDIGIERT]
);
if ($konzessionsgesuche) {
foreach ($konzessionsgesuche as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . "]\n";
$strBackup .= $row->getDataText() . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsgesuche AFG', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE KONZESSIONSGESUCHE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Konzessionsgesuch (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onKonzessionsgesuchUmweltChange(FilterKonzessionsgesuchUmweltEvent $event): void
{
$konzessionsgesuch = $event->getKonzessionsgesuchUmwelt();
$amtsblatt = $konzessionsgesuch->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . KonzessionsgesuchUmwelt::MODULE_CODE . '.txt';
// BACKUP ALLE KONZESSIONSGESUCHE --------------------------------------------------------------------------------------
$strBackup = '';
$konzessionsgesuche = $this->em->getRepository(KonzessionsgesuchUmwelt::class)->findAllByAmtsblatt(
$amtsblatt,
[KonzessionsgesuchUmwelt::STATUS_ENTWURF, KonzessionsgesuchUmwelt::STATUS_ERFASST, KonzessionsgesuchUmwelt::STATUS_REDIGIERT]
);
if ($konzessionsgesuche) {
foreach ($konzessionsgesuche as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . "]\n";
$strBackup .= $row->getDataText() . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsgesuche AFU', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE KONZESSIONSGESUCHE ----------------------------------------------------------------------------------------
}
/**
* Sichert die Konzessionsbewilligung (mit allen Staten) in eine Backupdatei
*
* ACHTUNG:
* Listener Klasse (wird automatisch aufgerufen)
* @throws \Exception
*/
public function onKonzessionsbewilligungChange(FilterKonzessionsbewilligungEvent $event): void
{
$konzessionsbewilligung = $event->getKonzessionsbewilligung();
$amtsblatt = $konzessionsbewilligung->getAmtsblatt();
$backupFilePath = $this->kernel->getProjectDir(
) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
) . '_' . $amtsblatt->getAusgabeNr() . '_' . Konzessionsbewilligung::MODULE_CODE . '.txt';
// BACKUP ALLE KONZESSIONSBEWILLIGUNG --------------------------------------------------------------------------------------
$strBackup = '';
$konzessionsbewilligungen = $this->em->getRepository(Konzessionsbewilligung::class)->findAllByAmtsblatt(
$amtsblatt,
[Konzessionsbewilligung::STATUS_ENTWURF, Konzessionsbewilligung::STATUS_ERFASST, Konzessionsbewilligung::STATUS_REDIGIERT]
);
if ($konzessionsbewilligungen) {
foreach ($konzessionsbewilligungen as $row) {
if ($row->isStatusEntwurf()) {
$status = 'Entwurf';
} elseif ($row->isStatusErfasst()) {
$status = 'Erfasst';
} elseif ($row->isStatusRedigiert()) {
$status = 'Redigiert';
} else {
$status = '???';
}
$strBackup .= '[Status: ' . $status . "]\n";
$strBackup .= $row->getDataText() . "\n\n";
}
}
$strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsbewilligung', $strBackup, $amtsblatt);
// Write backup file directly without atomic operation to avoid temp file suffix issues
if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
}
// Ende BACKUP ALLE KONZESSIONSBEWILLIGUNG ----------------------------------------------------------------------------------------
}
/**
* Fügt dem Filecontent die erste und letzte Zeile hinzu.
* @throws \Exception
*/
protected function addBackupFileHeaderFooterInfo(string $title, $content, Amtsblatt $amtsblatt): string
{
$now = new \DateTime('now');
if (!$content){
$content = '[--- keine Einträge vorhanden ---]';
}
$content = '[' . $title . ', ' . $amtsblatt->getBezeichnung(3) . "]\n\n\n"
. rtrim((string) $content, "\n") . "\n\n\n"
. '[Backupdatei generiert am ' . $now->format('d.m.Y H:i') . ']';
return $content;
}
}