Files
nutzwerte_fi4/app/Actions/Generate/GenerateStandardTexte.php
T
2025-10-13 07:35:09 +02:00

251 lines
11 KiB
PHP

<?php
namespace App\Actions\Generate;
use App\Actions\Generate\StandardTexte\AllgemeinTabelle;
use App\Actions\Generate\StandardTexte\Deckblatt;
use App\Actions\Generate\StandardTexte\Inhalt;
use App\Actions\Generate\StandardTexte\Paragraph6Tabelle;
use App\Actions\Generate\StandardTexte\Standardtext;
use App\Actions\Generate\StandardTexte\Tabelle;
use App\Models\Auftraggeber;
use App\Models\Gutachter;
use App\Models\Inhaltsverzeichnis;
use App\Models\Platzhalter;
use App\Models\Projekt;
use Mpdf\HTMLParserMode;
use Mpdf\Mpdf;
class GenerateStandardTexte
{
public static $projekt;
public static $gutachter;
public static $auftraggeber;
public static $platzhalter = [];
public static function generate($filepath, $projekts_id)
{
self::$projekt = Projekt::where('id', $projekts_id)->get()->first();
self::$gutachter = Gutachter::where('id', self::$projekt->gutachters_id)->get()->first();
self::$auftraggeber = Auftraggeber::where('id', self::$projekt->auftraggebers_id)->get()->first();
self::$platzhalter = Platzhalter::where('projekts_id', $projekts_id)->pluck('platzhaltertext', 'platzhalter')->toArray();
$mpdf = new Mpdf(
[
'debug' => true,
'mode' => 'utf-8',
'format' => 'A4-P',
'margin_left' => 10,
'margin_right' => 10,
'margin_top' => 12,
'margin_bottom' => 20,
'margin_header' => 0,
'margin_footer' => 0,
]
);
$stylesheet = file_get_contents(__DIR__.'/../../../resources/css/pdf-download.css');
$mpdf->WriteHTML($stylesheet, HTMLParserMode::HEADER_CSS);
$mpdf->SetTitle('Nutzwertgutachen '.self::$projekt->name);
$mpdf->SetTitle('Standardtexte '.self::$projekt->name);
$mpdf->SetCreator('www.nutzwertgutachten.at');
$mpdf->SetAuthor(self::$gutachter->adressenblock);
$inhalte = Inhaltsverzeichnis::where('projekts_id', $projekts_id)->where('is_active', 1)->orderBy('pos')->get();
if (count($inhalte) == 0) {
exit;
}
foreach ($inhalte as $inhalt) {
$standardtext = Standardtext::replace($inhalt['standardtext']);
switch ($inhalt['kennung']) {
case 'deckblatt':
$html = Deckblatt::load($standardtext);
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'inhalt':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
}
$html = Inhalt::load($standardtext);
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
break;
case 'allgemeineangaben':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'auftraggeber':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= trim(self::$auftraggeber->adressenblock);
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'zweck':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'ortsbesichtigung':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'unterlagen':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'befund':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'grundbuchstand':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= Tabelle::load($standardtext);
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'beschreibung':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'paragraph_6_teil_1':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'paragraph_6_tabelle':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
}
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html = Paragraph6Tabelle::load($projekts_id);
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'paragraph_6_teil_2':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'allgemeinflaechen_nach_p6':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">ALLGEMEINFLÄCHEN</div>';
$html .= AllgemeinTabelle::load($projekts_id);
$html .= '<br><br><br><br><br><br><br>';
$html .= '<table class="inhalt"><tr>';
$html .= '<td>'.self::$projekt->erstellung.'</td>';
$html .= '<td class="right">'.self::$gutachter->kennung.'</td>';
$html .= '</tr></table>';
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'gutachten':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
}
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'allgemeine-grundsaetze':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'allgemeine-bewertungen':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['index'].' - '.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
case 'zubehoer':
if ($inhalt['neue_seite']) {
$mpdf->AddPage();
$mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$inhalt['titel'].'</div>';
$html .= $standardtext;
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
break;
}
}
ob_clean();
$mpdf->Output($filepath, 'F');
}
}