dowload wip

This commit is contained in:
salam committed 2025-10-13 07:35:09 +02:00
1 parent b004542988
commit 8971b8b948
41 files changed
+2103 -243

No files matched your search

@@ -0,0 +1,47 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Allgemeinflaechen;
use App\Utilities\Format;
use App\Utilities\Html;
class Allgemeinflaechens
{
public static function load(int $projekts_id)
{
$html = '<table>';
$html .= '<thead><tr class="head">';
$html .= Html::td('Top', 'head bl bt bb');
$html .= Html::td('Raumart', 'head bl bt bb');
$html .= Html::td('Fläche', 'head center bl bt bb');
$html .= Html::td('', 'bl');
$html .= Html::td('Top', 'head bb bt bl');
$html .= Html::td('Type', 'head bt bl bb');
$html .= Html::td('Fläche', 'head center bl bt bb br');
$html .= '</tr></thead>';
$res = Allgemeinflaechen::select('geschoss', 'raumart', 'qm')->where('projekts_id', $projekts_id)->orderBy('geschoss')->orderBy('raumart')->get();
foreach ($res as $key => $allg) {
$bg = ($key % 4 == 2 || $key % 4 == 3) ? 'hellgrau' : '';
if ($key % 2 == 0) {
$html .= '<tr>';
$html .= Html::td($allg->geschoss, "bl bb br $bg");
$html .= Html::td($allg->raumart, "bb br $bg");
$html .= Html::td(Format::numeric($allg->qm, 2), "center bb br $bg");
$html .= Html::td('');
} else {
$html .= Html::td($allg->geschoss, "bl bb br $bg");
$html .= Html::td($allg->raumart, "bb br $bg");
$html .= Html::td(Format::numeric($allg->qm, 2), "center bb br $bg");
$html .= '</tr>';
}
}
$html .= '</table>';
return $html;
}
}
@@ -0,0 +1,262 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Orientierung;
use App\Models\Raumalles;
use App\Models\Raumorientierung;
use App\Utilities\Format;
use App\Utilities\Html;
class BerechnungM1M4
{
public static function load(int $projekts_id)
{
$orientierung = Orientierung::map();
$orientierung[1] = '';
$html = '';
$res = Raumorientierung::where('projekts_id', $projekts_id)
->where('nicht_in_orientierung', 0)
->orderBy('top_nr')
->get();
foreach ($res as $key => $_objekte) {
$raumorientierung_id = $_objekte->id;
$_raume_m1 = Raumalles::where('projekts_id', $projekts_id)->where('raumorientierung_id', $raumorientierung_id)->where('methodes_id', 1)->orderBy('raum')->get();
$_raume_m2 = Raumalles::where('projekts_id', $projekts_id)->where('raumorientierung_id', $raumorientierung_id)->whereIn('methodes_id', [2, 8])->get();
$_raume_m3 = Raumalles::where('projekts_id', $projekts_id)->where('raumorientierung_id', $raumorientierung_id)->whereIn('methodes_id', [3, 7])->get();
$pagebrake = \count($_raume_m1) + \count($_raume_m2) + \count($_raume_m3);
if ($pagebrake > 45) {
$html .= '<table class="text-75">';
} else {
$html .= '<table class="text-75" style="page-break-inside:avoid;">';
}
$html .= '<tr>';
$html .= Html::td('Top Nr.', 'head center bl bt w10p');
$html .= Html::td('Geschoß', 'head bt bb');
$html .= Html::td('Orientierung', 'head bt bb');
$html .= Html::td('Type', 'head bt bb');
$html .= Html::td('Raum', 'head bt bb');
$html .= Html::td('qm', 'head right bt bb');
$html .= Html::td('', 'head bt bb');
$html .= Html::td('Faktor', 'head bt bb');
$html .= Html::td('', 'head bt bb');
$html .= Html::td('Faktor', 'head bt bb');
$html .= Html::td('', 'head bt bb');
$html .= Html::td('Nw', 'head bt bb');
$html .= Html::td('Nw', 'head bt bb br');
$html .= '</tr>';
/********************************************************
METHODE 1
********************************************************/
foreach ($_raume_m1 as $key => $_raum) {
if ($key > 0) {
$_objekte['top_nr'] = '';
$_raum['geschoss'] = '';
$_objekte['orientierung'] = '';
$_objekte['type'] = '';
} else {
$oid = $_objekte['orientierungs_id'];
$_objekte['orientierung'] = $orientierung[$oid];
}
$html .= '<tr>';
$html .= Html::td($_objekte['top_nr'], 'head center bl br');
$html .= Html::td($_raum['geschoss'], 'br');
$html .= Html::td($_objekte['orientierung'], 'br');
$html .= Html::td($_objekte['type'], 'br');
$html .= Html::td($_raum['raum'], 'br');
$html .= Html::td(Format::numeric($_raum->qm, 2), 'right br');
$html .= Html::td('', 'br', 7);
$html .= '</tr>';
}
$nutzwert_summe = 0;
/********************************************************
METHODE 2 + 2b
********************************************************/
if (\count($_raume_m2) > 0) {
$html .= '<tr>';
$html .= Html::td('', 'head bl br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td(Format::numeric($_objekte->qm_m1, 2), 'right bt br bb');
$html .= Html::td('', 'bt br bb');
$html .= Html::td('', 'bt br bb');
$html .= Html::td('x', 'center bt br bb');
$html .= Html::td(Format::numeric($_objekte->factor, 3), 'right bt br bb');
$html .= Html::td('=', 'center bt br bb');
$nutzwert = $_objekte->qm_m1 * $_objekte->factor;
$html .= Html::td(Format::numeric($nutzwert, 3), 'right bt br bb');
$html .= Html::td(round($nutzwert), 'right center bt br bb');
$html .= '</tr>';
$factor_summe = 0;
// $zunutzwert = 0;
foreach ($_raume_m2 as $key => $_raum) {
$html .= '<tr>';
$html .= Html::td('', 'head bl br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td($_raum->raum, 'br');
$html .= Html::td(Format::numeric($_raum->qm, 2), 'right br bb');
$html .= Html::td('x', 'center br bb');
$html .= Html::td(Format::numeric($_raum->factor, 3), 'right br bb');
if ($_raum['tt_raumart_id'] == 2) {
// Methode 2 (2)
$html .= Html::td('x', 'center br bb');
$html .= Html::td(Format::numeric($_objekte->factor, 3), 'right br bb');
$html .= Html::td('=', 'center br bb');
$factor_summe += $_raum->qm * $_raum->factor * $_objekte->factor;
$html .= Html::td(Format::numeric($factor_summe, 3), 'right br bb');
} else {
// Methode 2b (8) )
$html .= Html::td('', 'br bb');
$html .= Html::td('', 'br bb');
$html .= Html::td('=', 'center br bb');
$factor_summe += $_raum->qm * $_raum->factor;
$html .= Html::td(Format::numeric($factor_summe, 3), 'right br bb');
}
$html .= Html::td('', 'br bb');
$html .= '</tr>';
}
$ungerundet = $nutzwert + $factor_summe;
$nutzwert_summe = round($ungerundet);
// if ($zunutzwert) {
// $zunutzwert = $zunutzwert + $_objekte->qm_m1;
$html .= '<tr>';
$html .= Html::td('', 'head bl br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
// $html .= '<td>Gesamtnutzfläche</td>';
// $html .= '<td class="right">'.Format::numeric($zunutzwert, 2).'</td>';
$html .= Html::td('', 'br');
$html .= Html::td('', 'br bb');
$html .= Html::td('', 'br bb');
$html .= Html::td('', 'br bb');
$html .= Html::td('', 'br bb');
$html .= Html::td('', 'br bb');
$html .= Html::td('', 'br bb');
$html .= Html::td(Format::numeric($ungerundet, 3), 'right br bb');
$html .= Html::td($nutzwert_summe, 'right br bb');
$html .= '</tr>';
} else {
$ungerundet = $_objekte->qm_m1 * $_objekte->factor;
$nutzwert_summe = round($ungerundet);
$html .= '<tr>';
$html .= Html::td('', 'head bl br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td(Format::numeric($_objekte->qm_m1, 2), 'right bt br bb');
$html .= Html::td('x', 'center bt br');
$html .= Html::td(Format::numeric($_objekte->factor, 3), 'right bt br');
$html .= Html::td('', 'bt br');
$html .= Html::td('', 'bt br');
$html .= Html::td('=', 'center bt br');
$html .= Html::td(Format::numeric($ungerundet, 3), 'right bt br');
$html .= Html::td($nutzwert_summe, 'right bt br');
$html .= '</tr>';
}
/********************************************************
METHODE 3 + 3b (3b wie Methode 3 aber ohne Wohnungsfactor)
********************************************************/
if (\count($_raume_m3) > 0) {
foreach ($_raume_m3 as $key => $_raum) {
$html .= '<tr>';
$html .= Html::td('', 'head bl br');
$html .= Html::td($_raum->geschoss, 'br');
$html .= Html::td('', 'br');
$html .= Html::td('', 'br');
$html .= Html::td($_raum->raum, 'br');
$html .= Html::td(Format::numeric($_raum->qm, 2), 'right br');
// Methode 3
if ($_raum->methodes_id == 3) {
$html .= Html::td('x', 'center bt br');
$html .= Html::td(Format::numeric($_objekte->factor, 3), 'right bt br');
$html .= Html::td('x', 'center bt br');
$html .= Html::td(Format::numeric($_raum->factor, 3), 'right bt br');
$html .= Html::td('=', 'center bt br');
$nutzwert = $_raum->qm * $_raum->factor * $_objekte->factor;
$html .= Html::td(Format::numeric($nutzwert, 3), 'right bt br');
} else {
$html .= Html::td('', 'bt br');
$html .= Html::td('', 'bt br');
$html .= Html::td('x', 'center bt br');
$html .= Html::td(Format::numeric($_raum->factor, 3), 'right bt br');
$html .= Html::td('=', 'center bt br');
$nutzwert = $_raum->qm * $_raum->factor;
$html .= Html::td(Format::numeric($nutzwert, 3), 'right bt br');
}
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'right bt br');
$html .= '</tr>';
$nutzwert_summe += $nutzwert;
}
}
/********************************************************
METHODE 4
********************************************************/
$_raume_m4 = Raumalles::where('projekts_id', $projekts_id)->where('raumorientierung_id', $raumorientierung_id)->where('methodes_id', 4)->get();
if (\count($_raume_m4) > 0) {
foreach ($_raume_m4 as $key => $_raum) {
$ungerunded = $_raum->qm * $_raum->factor;
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$nutzwert_summe += $nutzwert;
$html .= '<tr>';
$html .= Html::td('', 'head bl bl br');
$html .= Html::td($_raum->geschoss, 'br');
$html .= Html::td('', 'br');
$html .= Html::td('Zubehör', 'br');
$html .= Html::td($_raum->raum, 'br');
$html .= Html::td(Format::numeric($_raum->qm, 2), 'right br');
$html .= Html::td('', 'bt br');
$html .= Html::td('', 'bt br');
$html .= Html::td('x', 'center bt br');
$html .= Html::td(Format::numeric($_raum->factor, 3), 'right bt br');
$html .= Html::td('=', 'center bt br');
$html .= Html::td(Format::numeric($ungerunded, 3), 'right bt br');
$html .= Html::td($nutzwert, 'right bt br');
$html .= '</tr>';
}
}
// Fuß Zeile
$html .= '<tr>';
$html .= Html::td('', 'head bl bb');
$html .= Html::td('Nutzwert gerundet', 'head right bt bb', 11);
$html .= Html::td($nutzwert_summe, 'head right bt br bb');
$html .= '</tr>';
// dd($raumorientierung_id, $nutzwert_summe);
Raumorientierung::where('id', $raumorientierung_id)->update(['nutzwert_summe' => $nutzwert_summe]);
$html .= '</table>';
}
return $html;
}
}
@@ -0,0 +1,91 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Raumalles;
use App\Models\Raumorientierung;
use App\Utilities\Format;
use App\Utilities\Html;
class BerechnungM5
{
public static function load(int $projekts_id)
{
$html = '';
$result = Raumorientierung::where('projekts_id', $projekts_id)
->where('nicht_in_orientierung', 1)
->orderBy('top_nr')
->get();
if ($result->isEmpty()) {
return;
}
foreach ($result as $key => $_objekte) {
$raumorientierung_id = $_objekte->id;
$_raume_m5 = Raumalles::where('projekts_id', $projekts_id)->where('raumorientierung_id', $raumorientierung_id)->whereIn('methodes_id', [5, 6, 9])->get();
$summe_nutzwert = 0;
if (\count($_raume_m5) > 0) {
$html .= '<table class="text-75" style="page-break-inside:avoid;">';
$html .= '<tr>';
$html .= Html::td('Top', 'head bl bt w10p');
$html .= Html::td('Geschoß', 'head bt bb');
$html .= Html::td('Type', 'head bt bb');
$html .= Html::td('qm', 'head center bt bb');
$html .= Html::td('', 'head bt bb');
$html .= Html::td('Faktor', 'head center bt bb');
$html .= Html::td('', 'head bt bb');
$html .= Html::td('', 'head bt bb');
$html .= Html::td('Nw', 'center head bt bb br');
$html .= '</tr>';
// Methode 5
foreach ($_raume_m5 as $key => $_raum) {
if ($key > 0) {
$_objekte->top_nr = '';
$_raum->geschoss = '';
$_objekte->typ = '';
}
$html .= '<tr>';
$html .= Html::td($_objekte->top_nr, 'head center bl br');
$html .= Html::td($_raum->geschoss, 'br');
$html .= Html::td($_raum->raum, 'br');
$html .= Html::td(Format::numeric($_raum->qm, 2), 'center br');
$html .= Html::td('x', 'center br');
$html .= Html::td(Format::numeric($_raum->factor, 3), 'center br');
$html .= Html::td('=', 'center br');
$nutzwert = $_raum->qm * $_raum->factor;
$html .= Html::td(Format::numeric($nutzwert, 3), 'center br');
if ($_raum->methodes_id != 9) {
$html .= Html::td($nutzwert, 'center br');
} else {
$html .= Html::td('', 'br');
}
$html .= '</tr>';
$summe_nutzwert += $nutzwert;
}
$summe_nutzwert = $summe_nutzwert < 1 ? 1 : round($summe_nutzwert);
$html .= '<tr>';
$html .= Html::td('', 'head bl bb');
$html .= Html::td('Nutzwert gerundet', 'head right bt bb', 7);
$html .= Html::td($summe_nutzwert, 'head right grau bt br bb');
$html .= '</tr>';
$html .= '</table>';
}
}
return $html;
}
}
@@ -0,0 +1,141 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Raumalles;
use App\Models\Raumorientierung;
use Illuminate\Support\Facades\DB;
class BerechnungNutzwerte
{
public static function berechnen($projekts_id)
{
// 5
// Stellplätze berechnet nur mit Absolutem Faktor multipliziert,
// wird aber nicht in Orientierung aufgeführt und im PDF als eigenes Objekt ausgegeben.
// 6
// Zubehör zu Objekt der Methode 5
// (z.b ein Kellerabteil, das zu einem Stellplatz gehört, aber räumlich getrennt ist)
// Wird wie bei Methode 4 im PDF einzeln aufgelistet und
// nur mit Absolutem Faktor multipliziert, dann gerundet und der Nutzwert als ganze Zahl angeführt.
// Vor dem Objekt steht "Zubehör"
// 9
// Zubehör zu Objekt der Methode 5
// (ist direkt verbunden mit dem Objekt, zB. das Kellerabteil hinter dem Stellplatz,
// oder eine eigene Zufahrt nur zu einem Stellplatz).
// Wird mit Absolutem Faktor multipliziert und ungerundet zum Objekt der Methode 5 dazugezählt,
// dann erst die Summe des NW gerundet
// METHODEN 5, 6 ,9
// METHODEN 4
// METHODE 3 & 3b
$_raumorientierung = Raumorientierung::where('projekts_id', $projekts_id)
// ->where('nicht_in_orientierung', 0)
->get();
foreach ($_raumorientierung as $raumorientierung) {
$_raumalles = Raumalles::where('raumorientierung_id', $raumorientierung->id)
->where('projekts_id', $projekts_id)
->whereIn('methodes_id', [3, 4, 5, 6, 7, 9])
->get();
foreach ($_raumalles as $raumalle) {
$nutzwert_ungerundet = $raumalle->qm * $raumalle->factor;
switch ($raumalle->methodes_id) {
case '9':
Raumalles::where('id', $raumalle->id)
->where('methodes_id', 9)
->update(['nutzwert_ungerundet' => $nutzwert_ungerundet]);
break;
case '3':
$nutzwert_gerundet = round($raumalle->qm * $raumalle->factor * $raumorientierung->factor);
Raumalles::where('id', $raumalle->id)
->where('methodes_id', 3)
->update(['nutzwert_gerundet' => $nutzwert_ungerundet]);
break;
default:
$nutzwert_gerundet = round($raumalle->qm * $raumalle->factor);
Raumalles::where('id', $raumalle->id)
->where('methodes_id', $raumalle->methodes_id)
->update(['nutzwert_gerundet' => $nutzwert_gerundet]);
break;
}
Raumorientierung::where('id', $raumorientierung->id)
->where('nutzwert_summe', 0)
->update(['nutzwert_summe' => 1]);
$t1 = Raumalles::select('nutzwert_gerundet')
->where('raumorientierung_id', $raumorientierung->id)
->whereIn('methodes_id', [5, 6])
->get()
->sum('nutzwert_gerundet');
$t2 = Raumalles::select('nutzwert_ungerundet')
->where('raumorientierung_id', $raumorientierung->id)
->where('methodes_id', 9)
->get()
->sum('nutzwert_ungerundet');
$nutzwert_summe = round($t1 + $t2);
Raumorientierung::where('id', $raumorientierung->id)
->update(['nutzwert_summe' => $nutzwert_summe]);
}
}
// METHODEN 1, 2, 2b , 3, 3b, 4
$_raumorientierung = Raumorientierung::where('projekts_id', $projekts_id)
->where('nicht_in_orientierung', 0)
->get();
foreach ($_raumorientierung as $raumorientierung) {
// METHODE 1
$qm_m1 = Raumalles::select('qm')
->where('projekts_id', $projekts_id)
->where('raumorientierung_id', $raumorientierung->id)
->where('methodes_id', 1)
->get()
->sum('qm');
if ($qm_m1) {
Raumorientierung::where('id', $raumorientierung->id)
->where('projekts_id', $projekts_id)
->update(['qm_m1' => $qm_m1]);
}
// METHODE 1 & METHODE 2
$nw_m2 = Raumalles::select(DB::raw('sum(qm * factor) as total'))
->where('projekts_id', $projekts_id)
->where('raumorientierung_id', $raumorientierung->id)
->where('methodes_id', 2)
->get()
->sum('total');
$nw_m8 = Raumalles::select(DB::raw('sum(qm * factor) as total'))
->where('projekts_id', $projekts_id)
->where('raumorientierung_id', $raumorientierung->id)
->where('methodes_id', 8)
->get()
->sum('total');
$nw_m1_m2 = round((($qm_m1 + $nw_m2) * $raumorientierung->factor) + $nw_m8);
$nw_m3_m4 = Raumalles::select('nutzwert_gerundet')
->where('projekts_id', $projekts_id)
->where('raumorientierung_id', $raumorientierung->id)
->whereIn('methodes_id', [3, 4, 7])
->get()
->sum('nutzwert_gerundet');
$nutzwert_summe = $nw_m1_m2 + $nw_m3_m4;
Raumorientierung::where('id', $raumorientierung->id)
->update(['nutzwert_summe' => $nutzwert_summe]);
}
}
}
@@ -0,0 +1,64 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Merkmale;
use App\Models\Raumalles;
use App\Models\Raumorientierung;
use App\Utilities\Format;
use App\Utilities\Html;
class ZuUndAbschlaege
{
public static function load(int $projekts_id)
{
Raumorientierung::where('projekts_id', $projekts_id)->where('top_nr', '')->delete();
Raumorientierung::where('projekts_id', $projekts_id)->where('top_nr', 'like', '%---%')->delete();
// 3.21 Zu und Abschläge
$header_row = ['Top', 'Geschoß', 'Typ', 'Nutzfläche', 'Loggia / sonst. Zusatzflächen', 'Gesamtnutzfläche'];
$merkmale = Merkmale::merkmale($projekts_id);
$markmale_col = [];
foreach ($merkmale as $value) {
$markmale_col[] = $value['col'];
$header_row[] = $value['name'];
}
$header_row[] = 'Summe Merkmale';
$header_row[] = 'Wohnungsbewertung';
$html = Html::table_header_90($header_row);
$res = Raumalles::select('raumorientierung_id', 'geschoss')->where('projekts_id', $projekts_id)->where('methodes_id', 1)->get();
$geschoss = [];
foreach ($res as $value) {
$id = $value->raumorientierung_id;
$geschoss[$id] = $value['geschoss'];
}
$res = Raumorientierung::select()->where('projekts_id', $projekts_id)->where('nicht_in_orientierung', 0)->whereNotNull('top_nr')->orderBy('top_nr')->get();
foreach ($res as $value) {
$id = $value->id;
$html .= '<tr>';
$html .= Html::td($value->top_nr, 'left bl br bb');
$html .= Html::td($geschoss[$value['id']], 'center br bb');
$html .= Html::td($value->type, 'wp20 br bb');
// Nutzfläache
$html .= Html::td(Format::numeric($value->qm_m1, 2), 'right br bb');
// Loggia
$loggia = Raumalles::loggia($id);
$gesnutzfl = $loggia + $value->qm_m1;
$loggia = $loggia != 0 ? $loggia : '';
$html .= Html::td($loggia, 'right br bb');
// Gesammtnutzfläche = Nutzfläache + Loggia
$html .= Html::td(Format::numeric($gesnutzfl, 2), 'right br bb');
foreach ($markmale_col as $col) {
$tmp = (float) $value[$col] != 0 ? $value[$col] : '';
$html .= Html::td(Format::numeric($tmp, 2), 'right br bb');
}
$html .= Html::td(Format::numeric($value->summe_az, 2), 'right br bb');
$html .= Html::td(Format::numeric($value->bewertung, 2), 'right br bb');
$html .= '</tr>';
}
return $html;
}
}
@@ -0,0 +1,91 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Raumorientierung;
use App\Utilities\Format;
use App\Utilities\Html;
class Zusammenstellung
{
public static function load(int $projekts_id)
{
$html = '';
$res = Raumorientierung::select('nutzwert_summe')->where('projekts_id', $projekts_id);
$nutzwert_summe = $res->sum('nutzwert_summe');
$summe_prozent = [];
$summe_nutzwert = [];
$html .= '<table class="text-75 table-striped">';
$html .= '<thead><tr>';
$html .= Html::td('Top', 'head bl bt bb');
$html .= Html::td('Geschoß', 'head bt bb');
$html .= Html::td('Orientierung', 'head bt bb');
$html .= Html::td('Type', 'head bt bb');
$html .= Html::td('NW', 'head center bt bb');
$html .= Html::td('x2 *', 'head center bt bb');
$html .= Html::td('%', 'head center bt bb br');
$html .= '</tr></thead>';
$res = Zusammenstellung_Methode1::load($projekts_id);
foreach ($res as $row) {
$str = '';
$prozent = '';
if ($nutzwert_summe > 0) {
$str = $row['nutzwert_summe'] * 2 .' / '.$nutzwert_summe * 2 .' tel Anteil =';
$tmp = ($row['nutzwert_summe'] * 2) / ($nutzwert_summe * 2) * 100;
$prozent = Format::numeric($tmp, 3).'%';
}
$summe_prozent[] = $tmp;
$summe_nutzwert[] = $row['nutzwert_summe'];
$html .= '<tr>';
$html .= Html::td($row['top_nr'], 'bl bb br');
$html .= Html::td($row['geschoss'], 'bb br');
$html .= Html::td($row['orientierung'], 'center bb br');
$html .= Html::td($row['type'], 'bb br');
$html .= Html::td(round($row['nutzwert_summe']), 'center bb br');
$html .= Html::td($str, 'center bb br');
$html .= Html::td($prozent, 'center bb br');
$html .= '</tr>';
}
$_obj = Zusammenstellung_Methode5::load($projekts_id);
foreach ($_obj as $row) {
$row['nutzwert_summe2'] = $row['nutzwert_summe'] * 2 .' / '.$nutzwert_summe * 2 .' tel Anteil =';
$tmp = ($row['nutzwert_summe'] * 2) / ($nutzwert_summe * 2) * 100;
$row['prozent'] = Format::numeric($tmp, 3).'%';
$summe_prozent[] = $tmp;
$summe_nutzwert[] = $row['nutzwert_summe'];
$html .= '<tr>';
$html .= Html::td($row['top_nr'], 'bl bb br');
$html .= Html::td($row['geschoss'], 'bb br');
$html .= Html::td($row['orientierung'], 'center bb br');
$html .= Html::td($row['type'], 'bb br');
$html .= Html::td(round($row['nutzwert_summe']), 'center bb br');
$html .= Html::td($row['nutzwert_summe2'], 'center bb br');
$html .= Html::td($row['prozent'], 'center bb br');
$html .= '</tr>';
}
$html .= '<tr>';
$html .= Html::td('', 'head bl bb', 4);
$html .= Html::td(array_sum($summe_nutzwert), 'head center bb');
$html .= Html::td(array_sum($summe_nutzwert) * 2 .'/'.round($nutzwert_summe) * 2 .' tel Anteil =', 'head center bb');
$html .= Html::td(round(array_sum($summe_prozent)).'%', 'head center bb br');
$html .= '</tr>';
$html .= '</table>';
$html .= '<p class="text-small">* Die Anteile wurden verdoppelt, sodaß die Mindestanteile jederzeit durch zwei geteilt werden können.';
return $html;
}
}
@@ -0,0 +1,43 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Orientierung;
use App\Models\Raumalles;
use App\Models\Raumorientierung;
class Zusammenstellung_Methode1
{
public static function load($projekts_id)
{
$res = Raumalles::select('raumorientierung_id', 'geschoss')->where('projekts_id', $projekts_id)->where('methodes_id', '1')->groupBy('raumorientierung_id', 'geschoss')->get();
$geschoss = [];
$raumorientierung_ids = [];
foreach ($res as $value) {
$geschoss[$value->raumorientierung_id][] = $value->geschoss;
$raumorientierung_ids[] = $value->raumorientierung_id;
}
$orientierung = Orientierung::map();
$orientierung[1] = '';
$res = Raumorientierung::where('projekts_id', $projekts_id)->whereIn('id', $raumorientierung_ids)->orderBy('top_nr')->get();
$return = [];
foreach ($res as $value) {
$tmp = [];
$tmp['id'] = $value->id;
$tmp['top_nr'] = $value->top_nr;
$tmp['type'] = $value->type;
$tmp['nutzwert_summe'] = $value->nutzwert_summe;
$tmp['orientierung'] = $orientierung[$value->orientierungs_id];
$tmp['geschoss'] = '';
if (isset($geschoss[$value['id']])) {
$tmp['geschoss'] = implode(',', $geschoss[$value->id]);
}
$return[] = $tmp;
}
return $return;
}
}
@@ -0,0 +1,65 @@
<?php
namespace App\Actions\Generate\Nutzwerte;
use App\Models\Raumalles;
use App\Models\Raumorientierung;
class Zusammenstellung_Methode5
{
public static function load($projekts_id)
{
// 5
// Stellplätze berechnet nur mit Absolutem Faktor multipliziert,
// wird aber nicht in Orientierung aufgeführt und im PDF als eigenes Objekt ausgegeben.
// 6
// Zubehör zu Objekt der Methode 5
// (z.b ein Kellerabteil, das zu einem Stellplatz gehört, aber räumlich getrennt ist)
// Wird wie bei Methode 4 im PDF einzeln aufgelistet und
// nur mit Absolutem Faktor multipliziert, dann gerundet und der Nutzwert als ganze Zahl angeführt.
// Vor dem Objekt steht "Zubehör"
// 9
// Zubehör zu Objekt der Methode 5
// (ist direkt verbunden mit dem Objekt, zB. das Kellerabteil hinter dem Stellplatz,
// oder eine eigene Zufahrt nur zu einem Stellplatz).
// Wird mit Absolutem Faktor multipliziert und ungerundet zum Objekt der Methode 5 dazugezählt,
// dann erst die Summe des NW gerundet
$res = Raumalles::select('raumorientierung_id', 'geschoss')->where('projekts_id', $projekts_id)->whereIn('methodes_id', [5, 9])->groupBy('raumorientierung_id', 'geschoss')->get();
$geschoss = [];
$raumorientierung_ids = [];
foreach ($res as $value) {
$geschoss[$value->raumorientierung_id][] = $value->geschoss;
$raumorientierung_ids[] = $value->raumorientierung_id;
}
$res = Raumalles::select('raumorientierung_id', 'raum')->where('projekts_id', $projekts_id)->whereIn('methodes_id', [5, 9])->get();
$type = [];
foreach ($res as $value) {
$type[$value->raumorientierung_id] = $value->raum;
}
$res = Raumorientierung::where('projekts_id', $projekts_id)->whereIn('id', $raumorientierung_ids)->orderBy('top_nr')->get();
$return = [];
foreach ($res as $value) {
$tmp = [];
$tmp['id'] = $value->id;
$tmp['top_nr'] = $value->top_nr;
$tmp['type'] = '';
if (isset($type[$value->id])) {
$tmp['type'] = $type[$value->id];
}
$tmp['nutzwert_summe'] = $value->nutzwert_summe;
$tmp['orientierung'] = '';
$tmp['geschoss'] = '';
if (isset($geschoss[$value['id']])) {
$tmp['geschoss'] = implode(',', $geschoss[$value->id]);
}
$return[] = $tmp;
}
return $return;
}
}