excel nutzfläche ok

This commit is contained in:
salam committed 2025-11-17 12:16:09 +01:00
1 parent b3e720983a
commit ebb51923a6
9 files changed
+572 -4588

No files matched your search

@@ -0,0 +1,72 @@
<?php
namespace App\Actions\Generate\Tabellen;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class LadeProjekt
{
public static $methoden = [];
public static function project($projekte_id, $nicht_in_orientierung)
{
$objekte = ProjektObjekte::with('orientierung')
->where('projekte_id', $projekte_id)
->where('nicht_in_orientierung', $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 = self::laod_methode($projekte_id, $element['raumart']);
$methode_id = $methode['methode_id'];
$methode_faktor = $methode['faktor'];
$orientierung = $objekt['orientierung']['name'] ?? '';
if ($key > 0 && $methode_id == 1) {
$orientierung = '';
}
$geschoss = $element['geschoss'] ?? '';
if ($key > 0 && $methode_id <= 1) {
$geschoss = '';
}
$t = [];
$t['id'] = $objekt->id;
$t['type'] = ! $key ? $objekt->type : '';
$t['geschoss'] = $geschoss;
$t['orientierung'] = $orientierung;
$t['raumart'] = $element['raumart'];
$t['flaeche'] = $element['flaeche'];
$t['nutzwert'] = $element['nutzwert'];
$t['top_nummer'] = ! $key ? $objekt->top_nummer : '';
$t['objekt_nutzwert'] = $objekt->nutzwert;
$t['faktor'] = $methode_faktor;
$tmp[$objekt->top_nummer][$methode_id][] = $t;
}
}
return $tmp;
}
public static function laod_methode($projekte_id, $raumart)
{
if (! count(self::$methoden)) {
self::$methoden = ProjektMethode::where('projekte_id', $projekte_id)->get();
}
foreach (self::$methoden as $methode) {
if ($methode->raumart == $raumart) {
return $methode;
}
}
dd('Model ProjektMethode "raumart" '.$raumart.' missing'.__FILE__);
}
}
@@ -4,21 +4,16 @@ namespace App\Actions\Generate\Tabellen;
use App\Actions\Generate\PdfGenerator;
use App\Actions\Generate\Utilities\Html;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class Nutzwertberechnung
{
public static $methoden = [];
public static $projekte_id = 0;
public static function load($projekte_id)
{
self::$projekte_id = $projekte_id;
$objekte = self::laod_project(false);
$objekte = LadeProjekt::project($projekte_id, false);
$html = '';
foreach ($objekte as $methoden) {
@@ -74,6 +69,7 @@ class Nutzwertberechnung
$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>';
@@ -81,11 +77,9 @@ class Nutzwertberechnung
$html .= '<tr>';
$html .= Html::td('', 'bl bb', 9);
$html .= Html::td(number_format($summe_nutzwert + $nutzwert, 3, ',', '.'), 'right bl bb');
$html .= Html::td(round($summe_nutzwert + $nutzwert), 'center bl bb');
$html .= Html::td(number_format($summe_nutzwert, 3, ',', '.'), 'right bl bb');
$html .= Html::td(round($summe_nutzwert), 'center bl bb');
$html .= '</tr>';
$summe_nutzwert += $nutzwert;
}
$summe_nutzwert = round($summe_nutzwert);
@@ -145,7 +139,7 @@ class Nutzwertberechnung
PdfGenerator::$zusammenstellung[$komponente['id']] = $summe_nutzwert;
}
$objekte = self::laod_project(true);
$objekte = LadeProjekt::project($projekte_id, true);
foreach ($objekte as $methoden) {
/**
@@ -180,64 +174,4 @@ class Nutzwertberechnung
return $html;
}
public static function laod_project($nicht_in_orientierung)
{
$objekte = ProjektObjekte::with('orientierung')
->where('projekte_id', self::$projekte_id)
->where('nicht_in_orientierung', $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 = self::laod_methode($element['raumart']);
$methode_id = $methode['methode_id'];
$methode_faktor = $methode['faktor'];
$orientierung = $objekt['orientierung']['name'] ?? '';
if ($key > 0 && $methode_id == 1) {
$orientierung = '';
}
$geschoss = $element['geschoss'] ?? '';
if ($key > 0 && $methode_id <= 1) {
$geschoss = '';
}
$t = [];
$t['id'] = $objekt->id;
$t['type'] = ! $key ? $objekt->type : '';
$t['geschoss'] = $geschoss;
$t['orientierung'] = $orientierung;
$t['raumart'] = $element['raumart'];
$t['flaeche'] = $element['flaeche'];
$t['nutzwert'] = $element['nutzwert'];
$t['top_nummer'] = ! $key ? $objekt->top_nummer : '';
$t['objekt_nutzwert'] = $objekt->nutzwert;
$t['faktor'] = $methode_faktor;
$tmp[$objekt->top_nummer][$methode_id][] = $t;
}
}
return $tmp;
}
public static function laod_methode($raumart)
{
if (! count(self::$methoden)) {
self::$methoden = ProjektMethode::where('projekte_id', self::$projekte_id)->get();
}
foreach (self::$methoden as $methode) {
if ($methode->raumart == $raumart) {
return $methode;
}
}
dd('Model ProjektMethode "raumart" '.$raumart.' missing'.__FILE__);
}
}