src/Model/BackupManager.php line 606

Open in your IDE?
  1. <?php
  2. /**
  3. * Erstellt die Moduspezifischen Amtsblattinhalte, welche gerendert abgelegt werden
  4. *
  5. * User: bruno.ziegler
  6. * Date: 17.12.13 10:51
  7. */
  8. namespace App\Model;
  9. use App\Entity\Amtsblatt;
  10. use App\Entity\Baugesuch;
  11. use App\Entity\Baugesuchausnahmebewilligung;
  12. use App\Entity\Einbuergerungsgesuch;
  13. use App\Entity\Erdsonde;
  14. use App\Entity\Gestaltungsplan;
  15. use App\Entity\Konzessionsbewilligung;
  16. use App\Entity\Konzessionsgesuch;
  17. use App\Entity\KonzessionsgesuchGewaesser;
  18. use App\Entity\KonzessionsgesuchUmwelt;
  19. use App\Entity\Nutzungsplanung;
  20. use App\Entity\Rodungsgesuch;
  21. use App\Entity\Schutzzonenplan;
  22. use App\Event\FilterBaugesuchausnahmebewilligungEvent;
  23. use App\Event\FilterBaugesuchEvent;
  24. use App\Event\FilterEinbuergerungsgesuchEvent;
  25. use App\Event\FilterErdsondeEvent;
  26. use App\Event\FilterGestaltungsplanEvent;
  27. use App\Event\FilterKonzessionsbewilligungEvent;
  28. use App\Event\FilterKonzessionsgesuchEvent;
  29. use App\Event\FilterKonzessionsgesuchGewaesserEvent;
  30. use App\Event\FilterKonzessionsgesuchUmweltEvent;
  31. use App\Event\FilterNutzungsplanungEvent;
  32. use App\Event\FilterRodungsgesuchEvent;
  33. use App\Event\FilterSchutzzonenplanEvent;
  34. use Doctrine\ORM\EntityManagerInterface;
  35. use Symfony\Component\HttpKernel\KernelInterface;
  36. class BackupManager
  37. {
  38. public function __construct(
  39. protected EntityManagerInterface $em,
  40. protected KernelInterface $kernel
  41. )
  42. {
  43. }
  44. /**
  45. * Sichert die Baugesuche (mit allen Staten) in eine Backupdatei
  46. *
  47. * ACHTUNG:
  48. * Listener Klasse (wird automatisch aufgerufen)
  49. * @throws \Exception
  50. */
  51. public function onBaugesuchChange(FilterBaugesuchEvent $event): void
  52. {
  53. $baugesuch = $event->getBaugesuch();
  54. $amtsblatt = $baugesuch->getAmtsblatt();
  55. $backupFilePath = $this->kernel->getProjectDir(
  56. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  57. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Baugesuch::MODULE_CODE . '.txt';
  58. // BACKUP ALLE BAUGESUCHE --------------------------------------------------------------------------------------
  59. $strBackup = '';
  60. $baugesuche = $this->em->getRepository(Baugesuch::class)->findAllByAmtsblattAndGemeinde(
  61. $amtsblatt,
  62. null,
  63. [Baugesuch::STATUS_ENTWURF, Baugesuch::STATUS_ERFASST, Baugesuch::STATUS_REDIGIERT]
  64. );
  65. if ($baugesuche) {
  66. foreach ($baugesuche as $row) {
  67. if ($row->isStatusEntwurf()) {
  68. $status = 'Entwurf';
  69. } elseif ($row->isStatusErfasst()) {
  70. $status = 'Erfasst';
  71. } elseif ($row->isStatusRedigiert()) {
  72. $status = 'Redigiert';
  73. } else {
  74. $status = '???';
  75. }
  76. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  77. $strBackup .= $row->getDataText(false) . "\n\n";
  78. }
  79. $strBackup .= $baugesuche[0]->formatFooter('text', 'kanton');
  80. }
  81. $strBackup = $this->addBackupFileHeaderFooterInfo('Baugesuche', $strBackup, $amtsblatt);
  82. // Write backup file directly without atomic operation to avoid temp file suffix issues
  83. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  84. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  85. }
  86. // Ende BACKUP ALLE BAUGESUCHE ----------------------------------------------------------------------------------------
  87. }
  88. /**
  89. * Sichert die Baugesuchausnahmebewilligungen (mit allen Staten) in eine Backupdatei
  90. *
  91. * ACHTUNG:
  92. * Listener Klasse (wird automatisch aufgerufen)
  93. * @throws \Exception
  94. */
  95. public function onBaugesuchausnahmebewilligungChange(FilterBaugesuchausnahmebewilligungEvent $event): void
  96. {
  97. $baugesuchausnahmebewilligung = $event->getBaugesuchausnahmebewilligung();
  98. $amtsblatt = $baugesuchausnahmebewilligung->getAmtsblatt();
  99. $backupFilePath = $this->kernel->getProjectDir(
  100. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  101. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Baugesuchausnahmebewilligung::MODULE_CODE . '.txt';
  102. // BACKUP ALLE BAUGESUCHAUSNAHMEBEWILLIGUNGEN -------------------------------------------------------------------------
  103. $strBackup = '';
  104. $baugesuchausnahmebewilligungen = $this->em->getRepository(Baugesuchausnahmebewilligung::class)->findAllByAmtsblattAndGemeinde(
  105. $amtsblatt,
  106. null,
  107. [Baugesuchausnahmebewilligung::STATUS_ENTWURF, Baugesuchausnahmebewilligung::STATUS_ERFASST, Baugesuchausnahmebewilligung::STATUS_REDIGIERT]
  108. );
  109. if ($baugesuchausnahmebewilligungen) {
  110. foreach ($baugesuchausnahmebewilligungen as $row) {
  111. if ($row->isStatusEntwurf()) {
  112. $status = 'Entwurf';
  113. } elseif ($row->isStatusErfasst()) {
  114. $status = 'Erfasst';
  115. } elseif ($row->isStatusRedigiert()) {
  116. $status = 'Redigiert';
  117. } else {
  118. $status = '???';
  119. }
  120. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  121. $strBackup .= $row->getDataText(false) . "\n\n";
  122. }
  123. $strBackup .= $baugesuchausnahmebewilligungen[0]->formatFooter('text');
  124. }
  125. $strBackup = $this->addBackupFileHeaderFooterInfo('Ausnahmebewilligungen Baugesuche', $strBackup, $amtsblatt);
  126. // Write backup file directly without atomic operation to avoid temp file suffix issues
  127. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  128. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  129. }
  130. // Ende BACKUP ALLE BAUGESUCHAUSNAHMEBEWILLIGUNGEN --------------------------------------------------------------------
  131. }
  132. /**
  133. * Sichert die Rodungsgesuch (mit allen Staten) in eine Backupdatei
  134. *
  135. * ACHTUNG:
  136. * Listener Klasse (wird automatisch aufgerufen)
  137. * @throws \Exception
  138. */
  139. public function onRodungsgesuchChange(FilterRodungsgesuchEvent $event): void
  140. {
  141. $rodungsgesuch = $event->getRodungsgesuch();
  142. $amtsblatt = $rodungsgesuch->getAmtsblatt();
  143. $backupFilePath = $this->kernel->getProjectDir(
  144. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  145. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Rodungsgesuch::MODULE_CODE . '.txt';
  146. // BACKUP ALLE RODUNGSGESUCHE --------------------------------------------------------------------------------------
  147. $strBackup = '';
  148. $rodungsgesuche = $this->em->getRepository(Rodungsgesuch::class)->findAllByAmtsblattAndGemeinde(
  149. $amtsblatt,
  150. null,
  151. [Rodungsgesuch::STATUS_ENTWURF, Rodungsgesuch::STATUS_ERFASST, Rodungsgesuch::STATUS_REDIGIERT]
  152. );
  153. if ($rodungsgesuche) {
  154. foreach ($rodungsgesuche as $row) {
  155. if ($row->isStatusEntwurf()) {
  156. $status = 'Entwurf';
  157. } elseif ($row->isStatusErfasst()) {
  158. $status = 'Erfasst';
  159. } elseif ($row->isStatusRedigiert()) {
  160. $status = 'Redigiert';
  161. } else {
  162. $status = '???';
  163. }
  164. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  165. $strBackup .= $row->getDataText(false) . "\n\n";
  166. }
  167. }
  168. $strBackup = $this->addBackupFileHeaderFooterInfo('Rodungsgesuche', $strBackup, $amtsblatt);
  169. // Write backup file directly without atomic operation to avoid temp file suffix issues
  170. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  171. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  172. }
  173. // Ende BACKUP ALLE RODUNGSGESUCHE ----------------------------------------------------------------------------------------
  174. }
  175. /**
  176. * Sichert die Einbuergerungsgesuche (mit allen Staten) in eine Backupdatei
  177. *
  178. * ACHTUNG:
  179. * Listener Klasse (wird automatisch aufgerufen)
  180. * @throws \Exception
  181. */
  182. public function onEinbuergerungsgesuchChange(FilterEinbuergerungsgesuchEvent $event): void
  183. {
  184. $einbuergerungsgesuch = $event->getEinbuergerungsgesuch();
  185. $amtsblatt = $einbuergerungsgesuch->getAmtsblatt();
  186. $backupFilePath = $this->kernel->getProjectDir(
  187. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  188. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Einbuergerungsgesuch::MODULE_CODE . '.txt';
  189. // BACKUP ALLE EINBUERGERUNGSGESUCHE --------------------------------------------------------------------------------------
  190. $strBackup = '';
  191. $einbuergerungsgesuche = $this->em->getRepository(
  192. Einbuergerungsgesuch::class
  193. )->findAllByAmtsblattAndGemeinde(
  194. $amtsblatt,
  195. null,
  196. [Einbuergerungsgesuch::STATUS_ENTWURF, Einbuergerungsgesuch::STATUS_ERFASST, Einbuergerungsgesuch::STATUS_REDIGIERT]
  197. );
  198. if ($einbuergerungsgesuche) {
  199. $strBackup .= $einbuergerungsgesuche[0]->formatTitel('text') . "\n\n";
  200. foreach ($einbuergerungsgesuche as $row) {
  201. if ($row->isStatusEntwurf()) {
  202. $status = 'Entwurf';
  203. } elseif ($row->isStatusErfasst()) {
  204. $status = 'Erfasst';
  205. } elseif ($row->isStatusRedigiert()) {
  206. $status = 'Redigiert';
  207. } else {
  208. $status = '???';
  209. }
  210. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  211. $strBackup .= $row->getDataText(false) . "\n\n";
  212. }
  213. $strBackup .= "\n" . $einbuergerungsgesuche[0]->formatFooter('text');
  214. }
  215. $strBackup = $this->addBackupFileHeaderFooterInfo('Einbürgerungsgesuche', $strBackup, $amtsblatt);
  216. // Write backup file directly without atomic operation to avoid temp file suffix issues
  217. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  218. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  219. }
  220. // Ende BACKUP ALLE EINBUERGERUNGSGESUCHE ----------------------------------------------------------------------------------------
  221. }
  222. /**
  223. * Sichert die Schutzzonenplaene (mit allen Staten) in eine Backupdatei
  224. *
  225. * ACHTUNG:
  226. * Listener Klasse (wird automatisch aufgerufen)
  227. * @throws \Exception
  228. */
  229. public function onSchutzzonenplanChange(FilterSchutzzonenplanEvent $event): void
  230. {
  231. $schutzzonenplan = $event->getSchutzzonenplan();
  232. $amtsblatt = $schutzzonenplan->getAmtsblatt();
  233. $backupFilePath = $this->kernel->getProjectDir(
  234. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  235. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Schutzzonenplan::MODULE_CODE . '.txt';
  236. // BACKUP ALLE SCHUTZZONENPLAENE --------------------------------------------------------------------------------------
  237. $strBackup = '';
  238. $schutzzonenplaene = $this->em->getRepository(
  239. Schutzzonenplan::class
  240. )->findAllByAmtsblattAndGemeinde(
  241. $amtsblatt,
  242. null,
  243. [Schutzzonenplan::STATUS_ENTWURF, Schutzzonenplan::STATUS_ERFASST, Schutzzonenplan::STATUS_REDIGIERT]
  244. );
  245. if ($schutzzonenplaene) {
  246. foreach ($schutzzonenplaene as $row) {
  247. if ($row->isStatusEntwurf()) {
  248. $status = 'Entwurf';
  249. } elseif ($row->isStatusErfasst()) {
  250. $status = 'Erfasst';
  251. } elseif ($row->isStatusRedigiert()) {
  252. $status = 'Redigiert';
  253. } else {
  254. $status = '???';
  255. }
  256. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  257. $strBackup .= $row->getDataText(false) . "\n\n";
  258. }
  259. }
  260. $strBackup = $this->addBackupFileHeaderFooterInfo('Schutzzonenpläne', $strBackup, $amtsblatt);
  261. // Write backup file directly without atomic operation to avoid temp file suffix issues
  262. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  263. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  264. }
  265. // Ende BACKUP ALLE SCHUTZZONENPLAENE ----------------------------------------------------------------------------------------
  266. }
  267. /**
  268. * Sichert die Gestaltungsplaene (mit allen Staten) in eine Backupdatei
  269. *
  270. * ACHTUNG:
  271. * Listener Klasse (wird automatisch aufgerufen)
  272. * @throws \Exception
  273. */
  274. public function onGestaltungsplanChange(FilterGestaltungsplanEvent $event): void
  275. {
  276. $gestaltungsplan = $event->getGestaltungsplan();
  277. $amtsblatt = $gestaltungsplan->getAmtsblatt();
  278. $backupFilePath = $this->kernel->getProjectDir(
  279. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  280. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Gestaltungsplan::MODULE_CODE . '.txt';
  281. // BACKUP ALLE GESTALTUNGSPLAENE --------------------------------------------------------------------------------------
  282. $strBackup = '';
  283. $gestaltungsplaene = $this->em->getRepository(
  284. Gestaltungsplan::class
  285. )->findAllByAmtsblattAndGemeinde(
  286. $amtsblatt,
  287. null,
  288. [Gestaltungsplan::STATUS_ENTWURF, Gestaltungsplan::STATUS_ERFASST, Gestaltungsplan::STATUS_REDIGIERT]
  289. );
  290. if ($gestaltungsplaene) {
  291. foreach ($gestaltungsplaene as $row) {
  292. if ($row->isStatusEntwurf()) {
  293. $status = 'Entwurf';
  294. } elseif ($row->isStatusErfasst()) {
  295. $status = 'Erfasst';
  296. } elseif ($row->isStatusRedigiert()) {
  297. $status = 'Redigiert';
  298. } else {
  299. $status = '???';
  300. }
  301. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  302. $strBackup .= $row->getDataText(false) . "\n\n";
  303. }
  304. }
  305. $strBackup = $this->addBackupFileHeaderFooterInfo('Gestaltungspläne', $strBackup, $amtsblatt);
  306. // Write backup file directly without atomic operation to avoid temp file suffix issues
  307. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  308. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  309. }
  310. // Ende BACKUP ALLE GESTALTUNGSPLAENE ----------------------------------------------------------------------------------------
  311. }
  312. /**
  313. * Sichert die Nutzungsplanung (mit allen Staten) in eine Backupdatei
  314. *
  315. * ACHTUNG:
  316. * Listener Klasse (wird automatisch aufgerufen)
  317. * @throws \Exception
  318. */
  319. public function onNutzungsplanungChange(FilterNutzungsplanungEvent $event): void
  320. {
  321. $nutzungsplanung = $event->getNutzungsplanung();
  322. $amtsblatt = $nutzungsplanung->getAmtsblatt();
  323. $backupFilePath = $this->kernel->getProjectDir(
  324. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  325. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Nutzungsplanung::MODULE_CODE . '.txt';
  326. // BACKUP ALLE NUTZUNGSPLANUNG --------------------------------------------------------------------------------------
  327. $strBackup = '';
  328. $nutzungsplanungen = $this->em->getRepository(Nutzungsplanung::class)->findAllByAmtsblattAndGemeinde(
  329. $amtsblatt,
  330. null,
  331. [Nutzungsplanung::STATUS_ENTWURF, Nutzungsplanung::STATUS_ERFASST, Nutzungsplanung::STATUS_REDIGIERT]
  332. );
  333. if ($nutzungsplanungen) {
  334. foreach ($nutzungsplanungen as $row) {
  335. if ($row->isStatusEntwurf()) {
  336. $status = 'Entwurf';
  337. } elseif ($row->isStatusErfasst()) {
  338. $status = 'Erfasst';
  339. } elseif ($row->isStatusRedigiert()) {
  340. $status = 'Redigiert';
  341. } else {
  342. $status = '???';
  343. }
  344. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  345. $strBackup .= $row->getDataText(false) . "\n\n";
  346. }
  347. }
  348. $strBackup = $this->addBackupFileHeaderFooterInfo('Nutzungsplanungen', $strBackup, $amtsblatt);
  349. // Write backup file directly without atomic operation to avoid temp file suffix issues
  350. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  351. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  352. }
  353. // Ende BACKUP ALLE NUTZUNGSPLANUNG ----------------------------------------------------------------------------------------
  354. }
  355. /**
  356. * Sichert die Erdsonde (mit allen Staten) in eine Backupdatei
  357. *
  358. * ACHTUNG:
  359. * Listener Klasse (wird automatisch aufgerufen)
  360. * @throws \Exception
  361. */
  362. public function onErdsondeChange(FilterErdsondeEvent $event): void
  363. {
  364. $erdsonde = $event->getErdsonde();
  365. $amtsblatt = $erdsonde->getAmtsblatt();
  366. $backupFilePath = $this->kernel->getProjectDir(
  367. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  368. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Erdsonde::MODULE_CODE . '.txt';
  369. // BACKUP ALLE ERDSONDEN --------------------------------------------------------------------------------------
  370. $strBackup = '';
  371. $erdsonden = $this->em->getRepository(Erdsonde::class)->findAllByAmtsblattAndGemeinde(
  372. $amtsblatt,
  373. null,
  374. [Erdsonde::STATUS_ENTWURF, Erdsonde::STATUS_ERFASST, Erdsonde::STATUS_REDIGIERT]
  375. );
  376. if ($erdsonden) {
  377. $strBackup .= $erdsonden[0]->formatTitel('text') . "\n\n";
  378. foreach ($erdsonden as $row) {
  379. if ($row->isStatusEntwurf()) {
  380. $status = 'Entwurf';
  381. } elseif ($row->isStatusErfasst()) {
  382. $status = 'Erfasst';
  383. } elseif ($row->isStatusRedigiert()) {
  384. $status = 'Redigiert';
  385. } else {
  386. $status = '???';
  387. }
  388. $strBackup .= '[Status: ' . $status . ', ' . $row->getGemeinde()->getName() . "]\n";
  389. $strBackup .= $row->getDataText(false) . "\n\n";
  390. }
  391. $strBackup .= $erdsonden[0]->formatFooter('text');
  392. }
  393. $strBackup = $this->addBackupFileHeaderFooterInfo('Erdsonden', $strBackup, $amtsblatt);
  394. // Write backup file directly without atomic operation to avoid temp file suffix issues
  395. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  396. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  397. }
  398. // Ende BACKUP ALLE ERDSONDEN ----------------------------------------------------------------------------------------
  399. }
  400. /**
  401. * Sichert die Konzessionsgesuch (mit allen Staten) in eine Backupdatei
  402. *
  403. * ACHTUNG:
  404. * Listener Klasse (wird automatisch aufgerufen)
  405. * @throws \Exception
  406. */
  407. public function onKonzessionsgesuchChange(FilterKonzessionsgesuchEvent $event): void
  408. {
  409. $konzessionsgesuch = $event->getKonzessionsgesuch();
  410. $amtsblatt = $konzessionsgesuch->getAmtsblatt();
  411. $backupFilePath = $this->kernel->getProjectDir(
  412. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  413. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Konzessionsgesuch::MODULE_CODE . '.txt';
  414. // BACKUP ALLE KONZESSIONSGESUCHE --------------------------------------------------------------------------------------
  415. $strBackup = '';
  416. $konzessionsgesuche = $this->em->getRepository(Konzessionsgesuch::class)->findAllByAmtsblatt(
  417. $amtsblatt,
  418. [Konzessionsgesuch::STATUS_ENTWURF, Konzessionsgesuch::STATUS_ERFASST, Konzessionsgesuch::STATUS_REDIGIERT]
  419. );
  420. if ($konzessionsgesuche) {
  421. foreach ($konzessionsgesuche as $row) {
  422. if ($row->isStatusEntwurf()) {
  423. $status = 'Entwurf';
  424. } elseif ($row->isStatusErfasst()) {
  425. $status = 'Erfasst';
  426. } elseif ($row->isStatusRedigiert()) {
  427. $status = 'Redigiert';
  428. } else {
  429. $status = '???';
  430. }
  431. $strBackup .= '[Status: ' . $status . "]\n";
  432. $strBackup .= $row->getDataText() . "\n\n";
  433. }
  434. }
  435. $strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsgesuche', $strBackup, $amtsblatt);
  436. // Write backup file directly without atomic operation to avoid temp file suffix issues
  437. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  438. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  439. }
  440. // Ende BACKUP ALLE KONZESSIONSGESUCHE ----------------------------------------------------------------------------------------
  441. }
  442. /**
  443. * Sichert die Konzessionsgesuch (mit allen Staten) in eine Backupdatei
  444. *
  445. * ACHTUNG:
  446. * Listener Klasse (wird automatisch aufgerufen)
  447. * @throws \Exception
  448. */
  449. public function onKonzessionsgesuchGewaesserChange(FilterKonzessionsgesuchGewaesserEvent $event): void
  450. {
  451. $konzessionsgesuch = $event->getKonzessionsgesuchGewaesser();
  452. $amtsblatt = $konzessionsgesuch->getAmtsblatt();
  453. $backupFilePath = $this->kernel->getProjectDir(
  454. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  455. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . KonzessionsgesuchGewaesser::MODULE_CODE . '.txt';
  456. // BACKUP ALLE KONZESSIONSGESUCHE --------------------------------------------------------------------------------------
  457. $strBackup = '';
  458. $konzessionsgesuche = $this->em->getRepository(KonzessionsgesuchGewaesser::class)->findAllByAmtsblatt(
  459. $amtsblatt,
  460. [KonzessionsgesuchGewaesser::STATUS_ENTWURF, KonzessionsgesuchGewaesser::STATUS_ERFASST, KonzessionsgesuchGewaesser::STATUS_REDIGIERT]
  461. );
  462. if ($konzessionsgesuche) {
  463. foreach ($konzessionsgesuche as $row) {
  464. if ($row->isStatusEntwurf()) {
  465. $status = 'Entwurf';
  466. } elseif ($row->isStatusErfasst()) {
  467. $status = 'Erfasst';
  468. } elseif ($row->isStatusRedigiert()) {
  469. $status = 'Redigiert';
  470. } else {
  471. $status = '???';
  472. }
  473. $strBackup .= '[Status: ' . $status . "]\n";
  474. $strBackup .= $row->getDataText() . "\n\n";
  475. }
  476. }
  477. $strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsgesuche AFG', $strBackup, $amtsblatt);
  478. // Write backup file directly without atomic operation to avoid temp file suffix issues
  479. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  480. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  481. }
  482. // Ende BACKUP ALLE KONZESSIONSGESUCHE ----------------------------------------------------------------------------------------
  483. }
  484. /**
  485. * Sichert die Konzessionsgesuch (mit allen Staten) in eine Backupdatei
  486. *
  487. * ACHTUNG:
  488. * Listener Klasse (wird automatisch aufgerufen)
  489. * @throws \Exception
  490. */
  491. public function onKonzessionsgesuchUmweltChange(FilterKonzessionsgesuchUmweltEvent $event): void
  492. {
  493. $konzessionsgesuch = $event->getKonzessionsgesuchUmwelt();
  494. $amtsblatt = $konzessionsgesuch->getAmtsblatt();
  495. $backupFilePath = $this->kernel->getProjectDir(
  496. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  497. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . KonzessionsgesuchUmwelt::MODULE_CODE . '.txt';
  498. // BACKUP ALLE KONZESSIONSGESUCHE --------------------------------------------------------------------------------------
  499. $strBackup = '';
  500. $konzessionsgesuche = $this->em->getRepository(KonzessionsgesuchUmwelt::class)->findAllByAmtsblatt(
  501. $amtsblatt,
  502. [KonzessionsgesuchUmwelt::STATUS_ENTWURF, KonzessionsgesuchUmwelt::STATUS_ERFASST, KonzessionsgesuchUmwelt::STATUS_REDIGIERT]
  503. );
  504. if ($konzessionsgesuche) {
  505. foreach ($konzessionsgesuche as $row) {
  506. if ($row->isStatusEntwurf()) {
  507. $status = 'Entwurf';
  508. } elseif ($row->isStatusErfasst()) {
  509. $status = 'Erfasst';
  510. } elseif ($row->isStatusRedigiert()) {
  511. $status = 'Redigiert';
  512. } else {
  513. $status = '???';
  514. }
  515. $strBackup .= '[Status: ' . $status . "]\n";
  516. $strBackup .= $row->getDataText() . "\n\n";
  517. }
  518. }
  519. $strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsgesuche AFU', $strBackup, $amtsblatt);
  520. // Write backup file directly without atomic operation to avoid temp file suffix issues
  521. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  522. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  523. }
  524. // Ende BACKUP ALLE KONZESSIONSGESUCHE ----------------------------------------------------------------------------------------
  525. }
  526. /**
  527. * Sichert die Konzessionsbewilligung (mit allen Staten) in eine Backupdatei
  528. *
  529. * ACHTUNG:
  530. * Listener Klasse (wird automatisch aufgerufen)
  531. * @throws \Exception
  532. */
  533. public function onKonzessionsbewilligungChange(FilterKonzessionsbewilligungEvent $event): void
  534. {
  535. $konzessionsbewilligung = $event->getKonzessionsbewilligung();
  536. $amtsblatt = $konzessionsbewilligung->getAmtsblatt();
  537. $backupFilePath = $this->kernel->getProjectDir(
  538. ) . '/data/backup-transfer/backup_amtsblatt_' . $amtsblatt->getAusgabeJahr(
  539. ) . '_' . $amtsblatt->getAusgabeNr() . '_' . Konzessionsbewilligung::MODULE_CODE . '.txt';
  540. // BACKUP ALLE KONZESSIONSBEWILLIGUNG --------------------------------------------------------------------------------------
  541. $strBackup = '';
  542. $konzessionsbewilligungen = $this->em->getRepository(Konzessionsbewilligung::class)->findAllByAmtsblatt(
  543. $amtsblatt,
  544. [Konzessionsbewilligung::STATUS_ENTWURF, Konzessionsbewilligung::STATUS_ERFASST, Konzessionsbewilligung::STATUS_REDIGIERT]
  545. );
  546. if ($konzessionsbewilligungen) {
  547. foreach ($konzessionsbewilligungen as $row) {
  548. if ($row->isStatusEntwurf()) {
  549. $status = 'Entwurf';
  550. } elseif ($row->isStatusErfasst()) {
  551. $status = 'Erfasst';
  552. } elseif ($row->isStatusRedigiert()) {
  553. $status = 'Redigiert';
  554. } else {
  555. $status = '???';
  556. }
  557. $strBackup .= '[Status: ' . $status . "]\n";
  558. $strBackup .= $row->getDataText() . "\n\n";
  559. }
  560. }
  561. $strBackup = $this->addBackupFileHeaderFooterInfo('Konzessionsbewilligung', $strBackup, $amtsblatt);
  562. // Write backup file directly without atomic operation to avoid temp file suffix issues
  563. if (false === file_put_contents($backupFilePath, Util::convertLineFeedFromUnixToWin($strBackup))) {
  564. throw new \RuntimeException(sprintf('Failed to write backup file "%s"', $backupFilePath));
  565. }
  566. // Ende BACKUP ALLE KONZESSIONSBEWILLIGUNG ----------------------------------------------------------------------------------------
  567. }
  568. /**
  569. * Fügt dem Filecontent die erste und letzte Zeile hinzu.
  570. * @throws \Exception
  571. */
  572. protected function addBackupFileHeaderFooterInfo(string $title, $content, Amtsblatt $amtsblatt): string
  573. {
  574. $now = new \DateTime('now');
  575. if (!$content){
  576. $content = '[--- keine Einträge vorhanden ---]';
  577. }
  578. $content = '[' . $title . ', ' . $amtsblatt->getBezeichnung(3) . "]\n\n\n"
  579. . rtrim((string) $content, "\n") . "\n\n\n"
  580. . '[Backupdatei generiert am ' . $now->format('d.m.Y H:i') . ']';
  581. return $content;
  582. }
  583. }