nutzwerte wip

This commit is contained in:
salam committed 2025-11-13 12:01:02 +01:00
1 parent c04a856cee
commit a20893d527
10 files changed
+2082 -1745

No files matched your search

@@ -2,66 +2,130 @@
namespace App\Actions\Generate\Tabellen;
use App\Actions\Generate\Tabellen\Nutzwerte\Projekt;
use App\Actions\Generate\Utilities\Html;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class Nutzwertberechnung
{
public static function load($projekte_id)
{
$objekte = ProjektObjekte::with('orientierung')
->where('projekte_id', $projekte_id)
->orderBy('nicht_in_orientierung')
->orderBy('top_nummer')
->get();
$objekte = Projekt::load($projekte_id);
// dd($objekte);
$html = '';
foreach ($objekte as $objekt) {
foreach ($objekte as $methoden) {
$html .= Html::table_header(['Top Nr.', 'Geschoß', 'Orientierung', 'Typ', 'Objekt', 'Fläche', '', '', '', '', '', '', 'Nutzwert']);
$html .= Html::table_header(['Top Nr.', 'Geschoß', 'Orientierung', 'Typ', '', 'Fläche', '', 'Faktor', '', '', 'Nutzwert']);
$elemente = ProjektObjekteImDetail::where('projekt_objekte_id', $objekt->id)
->with('methode')
->get();
$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>';
}
dd($elemente);
$tmp = [];
foreach ($elemente as $key => $element) {
dd($element);
$t = [];
$t['top_nummer'] = $objekt->top_nummer;
$objekt->top_nummer = '';
$t['geschoss'] = (! $key || $element->methode->methode_id != 1) ? $element['geschoss'] : '';
$t['raumart'] = $element['raumart'];
$t['faktor'] = $element['faktor'];
$t['flaeche'] = $element['flaeche'];
$t['nutzwert'] = $element['nutzwert'];
$t['methode_id'] = $element['methode']['methode_id'];
$t['faktor_methode'] = $element['methode']['faktor'];
$t['orientierung'] = $key == 0 && isset($objekt['orientierung']['name']) ? $objekt['orientierung']['name'] : '';
$tmp[] = $t;
}
$order = array_column($tmp, 'methode_id');
array_multisort($tmp, SORT_NUMERIC, SORT_ASC, $order);
foreach ($tmp as $element) {
$faktor = (100 + $komponente['objekt_nutzwert']) / 100;
$html .= '<tr>';
// TOP NUMMER
$html .= Html::td($element['top_nummer'], 'bl bb');
// GESCHOSS
$html .= Html::td($element['geschoss'], 'bl bb');
// ORIENTIERUNG
$html .= Html::td($element['orientierung'], 'bl bb');
$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 = round($flaeche * $faktor);
$html .= Html::td($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'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$summe_nutzwert += $nutzwert;
$html .= '</tr>';
}
}
/**
* 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);
$html .= Html::td($nutzwert, 'center bl bb br');
$summe_nutzwert += $nutzwert;
$html .= '</tr>';
}
}
/**
* 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);
$html .= Html::td($nutzwert, 'center bl bb br');
$summe_nutzwert += $nutzwert;
$html .= '</tr>';
}
}
$html .= Html::table_footer($summe_nutzwert);
$html .= '</table>';
}
return $html;
@@ -0,0 +1,48 @@
<?php
namespace App\Actions\Generate\Tabellen\Nutzwerte;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class Projekt
{
public static function load($projekte_id)
{
$methoden = ProjektMethode::where('projekte_id', $projekte_id)->pluck('methode_id', 'raumart')->toArray();
$objekte = ProjektObjekte::with('orientierung')
->where('projekte_id', $projekte_id)
->orderBy('nicht_in_orientierung')
->orderBy('top_nummer')
->get();
$tmp = [];
foreach ($objekte as $objekt) {
$elemente = ProjektObjekteImDetail::where('projekt_objekte_id', $objekt->id)->get();
foreach ($elemente as $key => $element) {
$methode_id = $methoden[$element['raumart']];
$t = [];
$t['type'] = $objekt->type ?? '';
$t['geschoss'] = $element['geschoss'];
$t['raumart'] = $element['raumart'];
$t['faktor'] = $element['faktor'];
$t['flaeche'] = $element['flaeche'];
$t['nutzwert'] = $element['nutzwert'];
$t['top_nummer'] = ! $key ? $objekt->top_nummer : '';
$t['objekt_nutzwert'] = $objekt->nutzwert;
$t['faktor_methode'] = $element['methode']['faktor'];
$t['orientierung'] = isset($objekt['orientierung']['name']) ? $objekt['orientierung']['name'] : '';
$tmp[$objekt->top_nummer][$methode_id][] = $t;
}
}
// dd($tmp);
return $tmp;
}
}
@@ -70,7 +70,7 @@ class ZuUndAbschlaege
$html .= '<tr>';
$html .= Html::td($objekt['top_nummer'], 'center bl br bb');
$html .= Html::td($geschoss, 'center br bb');
$html .= Html::td($objekt['type'], 'wp20 br bb');
$html .= Html::td($objekt['type'], 'br bb');
// Nutzfläache
$html .= Html::td(Format::dezimal($flaeche, 2).' m&sup2;', 'center br bb w30');
// Loggia
@@ -86,12 +86,12 @@ class ZuUndAbschlaege
$flaeche_loggien = $loggien->sum('flaeche');
if ($flaeche_loggien) {
$html .= Html::td($flaeche_loggien, 'right br bb');
$html .= Html::td(Format::dezimal($flaeche_loggien, 2).' m&sup2;', 'center br bb');
} else {
$html .= Html::td('', 'br bb');
}
$gesammt = $flaeche + $flaeche_loggien;
$html .= Html::td(Format::dezimal($gesammt, 2).' m&sup2;', 'center br bb w30');
$html .= Html::td(Format::dezimal($gesammt, 2).' m&sup2;', 'center br bb');
}
$nutwert = 0;
+10
View File
@@ -16,6 +16,16 @@ class Html
return $html;
}
public static function table_footer($nutzwert_summe)
{
$html = '<tfooter><tr>';
$html .= '<th colspan="10" class="bl bt bb right bg-sky">Nutzwert gerundet</th>';
$html .= '<th class="bl bt br bb center bg-sky">'.$nutzwert_summe.'</th>';
$html .= '</tr></tfooter>';
return $html;
}
public static function table_header_90($header_row)
{
$html = '<table class="table-striped">';