Files
nutzwerte_fi4/app/Actions/Generate/Tabellen/Zusammenstellung.php
T
2026-08-24 09:55:13 +02:00

133 lines
5.2 KiB
PHP

<?php
namespace App\Actions\Generate\Tabellen;
use App\Actions\Generate\PdfGenerator;
use App\Actions\Generate\Utilities\Format;
use App\Actions\Generate\Utilities\Html;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class Zusammenstellung
{
public static function load(int $projekte_id)
{
$summe_prozent = [];
$summe_nutzwert = [];
$nutzwert_gesammt = array_sum(PdfGenerator::$zusammenstellung);
$html = Html::table_header(['Top', 'Geschoß', 'Orientierung', 'Typ', 'Nutzwert', 'x2 *', '%']);
$geschosse = self::loadGeschosse($projekte_id);
$objekte = ProjektObjekte::select()
->with('orientierung')
->with('projektobjekteimdetail')
->where('projekte_id', $projekte_id)
// ->where('nicht_in_orientierung', 0)
->orderBy('nicht_in_orientierung', 'ASC')
->orderBy('top_nummer', 'ASC')
->get();
foreach ($objekte as $objekt) {
if (isset($geschosse[$objekt->id])) {
$html .= '<tr>';
$html .= Html::td($objekt->top_nummer, 'bl bb br');
$html .= Html::td($geschosse[$objekt->id], 'center br bb');
$html .= Html::td($objekt->orientierung?->name, 'center br bb');
$html .= Html::td($objekt?->type, 'center br bb');
$nutzwert = PdfGenerator::$zusammenstellung[$objekt->id];
$summe_nutzwert[] = $nutzwert;
$html .= Html::td(round($nutzwert), 'center bb br');
$str = $nutzwert * 2 . ' / ' . $nutzwert_gesammt * 2 . ' tel Anteil =';
$html .= Html::td($str, 'center bb br');
$prozent = ($nutzwert * 2) / ($nutzwert_gesammt * 2) * 100;
$summe_prozent[] = $prozent;
$prozent = Format::dezimal($prozent, 3) . '%';
$html .= Html::td($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_gesammt) * 2 . ' tel Anteil =', 'head center bb');
$html .= Html::td(round(array_sum($summe_prozent)) . '%', 'head center bb br');
$html .= '</tr>';
$html .= '<tr style="background-color: #fff !important;">';
$html .= Html::td('* Die Anteile wurden verdoppelt, sodaß die Mindestanteile jederzeit durch zwei geteilt werden können.', 'right small', 7, 'background-color: #fff !important;');
$html .= '</tr>';
$html .= '</table>';
// $html .= '<p class="small">* Die Anteile wurden verdoppelt, sodaß die Mindestanteile jederzeit durch zwei geteilt werden können.';
return $html;
// $_obj = Zusammenstellung_Methode5::load($projekte_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;
}
public static function loadGeschosse(int $projekte_id)
{
$objekte = ProjektObjekteImDetail::where('projekte_id', $projekte_id)->get();
$arr = [];
foreach ($objekte as $objekt) {
if (!isset($arr[$objekt->projekt_objekte_id]))
$arr[$objekt->projekt_objekte_id] = $objekt->geschoss;
}
// $arr = [];
// foreach ($objekte as $objekt) {
// $arr[$objekt->projekt_objekte_id][] = $objekt->geschoss;
// }
// foreach ($arr as $key => $value) {
// $value = array_unique($value);
// if (count($value) > 1) {
// $arr[$key] = implode('/', $value);
// } else {
// $arr[$key] = (string) array_first($value);
// }
// }
return $arr;
}
}