Files
nutzwerte_fi4/app/Actions/Generate/Tabellen/Nutzwertberechnung.php
T
2025-11-17 12:16:09 +01:00

178 lines
7.9 KiB
PHP

<?php
namespace App\Actions\Generate\Tabellen;
use App\Actions\Generate\PdfGenerator;
use App\Actions\Generate\Utilities\Html;
class Nutzwertberechnung
{
public static $projekte_id = 0;
public static function load($projekte_id)
{
self::$projekte_id = $projekte_id;
$objekte = LadeProjekt::project($projekte_id, false);
$html = '';
foreach ($objekte as $methoden) {
$html .= Html::table_header(['Top Nummer', 'Geschoß', 'Orientierung', 'Typ', '', 'Fläche', '', 'Faktor', '', '', 'Nutzwert'], 'page-break-inside:avoid');
$summe_nutzwert = 0;
/**
* Normale Wohnnutzflächen
*/
if (isset($methoden[1])) {
$flaeche = 0;
foreach ($methoden[1] as $komponente) {
$html .= '<tr>';
$html .= Html::td($komponente['top_nummer'], 'bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td($komponente['orientierung'], 'bl bb');
$html .= Html::td($komponente['type'], 'bl bb');
$html .= Html::td($komponente['raumart'], 'bl bb');
$html .= Html::td(number_format($komponente['flaeche'], 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('', 'bl bb br', 5);
$flaeche += $komponente['flaeche'];
$html .= '</tr>';
}
$faktor = (100 + $komponente['objekt_nutzwert']) / 100;
$html .= '<tr>';
$html .= Html::td('', 'bl bb', 5);
$html .= Html::td(number_format($flaeche, 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('x', 'center bl bb');
$html .= Html::td(number_format($faktor, 3, ',', '.'), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$html .= Html::td(number_format($flaeche * $faktor, 3, ',', '.'), 'right bl bb');
$summe_nutzwert = $flaeche * $faktor;
$html .= Html::td(round($summe_nutzwert), 'center bl bb br');
$html .= '</tr>';
}
/**
* Wintergarten, Loggien, unter Stiegen
*/
if (isset($methoden[2])) {
foreach ($methoden[2] as $komponente) {
$html .= '<tr>';
$html .= Html::td('', 'bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td('', 'bl bb');
$html .= Html::td('', 'bl bb');
$html .= Html::td($komponente['raumart'], 'bl bb');
$html .= Html::td(number_format($komponente['flaeche'], 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('x', 'center bl bb');
$html .= Html::td(number_format($komponente['faktor'], 3), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$summe_nutzwert += $nutzwert;
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$html .= Html::td('', 'center bl bb br');
$html .= '</tr>';
}
$html .= '<tr>';
$html .= Html::td('', 'bl bb', 9);
$html .= Html::td(number_format($summe_nutzwert, 3, ',', '.'), 'right bl bb');
$html .= Html::td(round($summe_nutzwert), 'center bl bb');
$html .= '</tr>';
}
$summe_nutzwert = round($summe_nutzwert);
/**
* Terasse, Balkon
*/
if (isset($methoden[3])) {
foreach ($methoden[3] as $komponente) {
$html .= '<tr>';
$html .= Html::td('', 'bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td('', 'bl bb');
$html .= Html::td('', 'bl bb');
$html .= Html::td($komponente['raumart'], 'bl bb');
$html .= Html::td(number_format($komponente['flaeche'], 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('x', 'center bl bb');
$html .= Html::td(number_format($komponente['faktor'], 3), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$html .= '</tr>';
$summe_nutzwert += $nutzwert;
}
}
/**
* Keller, Garten
*/
if (isset($methoden[4])) {
foreach ($methoden[4] as $komponente) {
$html .= '<tr>';
$html .= Html::td('', 'bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td('', 'bl bb');
$html .= Html::td('Zubehör', 'bl bb');
$html .= Html::td($komponente['raumart'], 'bl bb');
$html .= Html::td(number_format($komponente['flaeche'], 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('x', 'center bl bb');
$html .= Html::td(number_format($komponente['faktor'], 3), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$html .= '</tr>';
$summe_nutzwert += $nutzwert;
}
}
$html .= Html::table_footer($summe_nutzwert);
$html .= '</table>';
PdfGenerator::$zusammenstellung[$komponente['id']] = $summe_nutzwert;
}
$objekte = LadeProjekt::project($projekte_id, true);
foreach ($objekte as $methoden) {
/**
* Stellplätze
*/
$html .= Html::table_header(['Top Nummer', 'Geschoß', '', 'Fläche', '', 'Faktor', '', '', 'Nutzwert'], 'page-break-inside:avoid');
$nutzwert = 0;
if (isset($methoden[5])) {
foreach ($methoden[5] as $komponente) {
$html .= '<tr>';
$html .= Html::td($komponente['top_nummer'], 'bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td($komponente['raumart'], 'bl bb');
$html .= Html::td(number_format($komponente['flaeche'], 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('x', 'center bl bb');
$html .= Html::td(number_format($komponente['faktor'], 3), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$html .= '</tr>';
}
}
$html .= Html::table_footer($nutzwert, 8);
$html .= '</table>';
PdfGenerator::$zusammenstellung[$komponente['id']] = $nutzwert;
}
return $html;
}
}