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

263 lines
12 KiB
PHP

<?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;
}
}