263 lines
12 KiB
PHP
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;
|
|
}
|
|
}
|