This commit is contained in:
salam committed 2025-11-14 12:33:19 +01:00
1 parent a20893d527
commit 4b79874100
31 files changed
+549 -1535

No files matched your search

+2
View File
@@ -2,6 +2,7 @@
namespace App\Actions\Create;
use App\Actions\Generate\Utilities\Filter;
use App\Models\Projekte;
use App\Models\ProjektInhaltsverzeichnis;
use App\Models\ProjektPlatzhalter;
@@ -19,6 +20,7 @@ class CreatePlatzhalter
}
$_platzhalter = array_unique($_platzhalter);
$_platzhalter = Filter::array_remove($_platzhalter, ['###INTERNER_NAME###', '###ORT###', '###DATUM###']);
ProjektPlatzhalter::where('projekte_id', $record->id)->update(['controll' => true]);
@@ -1,262 +0,0 @@
<?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;
}
}
@@ -1,91 +0,0 @@
<?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;
}
}
@@ -1,141 +0,0 @@
<?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]);
}
}
}
@@ -1,43 +0,0 @@
<?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;
}
}
@@ -1,65 +0,0 @@
<?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;
}
}
+5 -3
View File
@@ -32,6 +32,8 @@ class Pdf
public static $auftraggeber;
public static $zusammenstellung = [];
public static function make($projekte_id, $type, $mode)
{
@@ -138,9 +140,9 @@ class Pdf
case '9':
$html .= Deckblatt::load($inhalt, $textblock, $textblock2);
break;
// case '11':
// $html .= DigitaleSignatur::load($projekte_id);
// break;
case '10':
$html .= DigitaleSignatur::load($projekte_id);
break;
}
if ($inhalt->textblock2 and $inhalt->inhaltselement_id != 9) {
@@ -2,21 +2,28 @@
namespace App\Actions\Generate\Tabellen;
use App\Actions\Generate\Tabellen\Nutzwerte\Projekt;
use App\Actions\Generate\Pdf;
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)
{
$objekte = Projekt::load($projekte_id);
self::$projekte_id = $projekte_id;
// dd($objekte);
$objekte = self::laod_project(false);
$html = '';
foreach ($objekte as $methoden) {
$html .= Html::table_header(['Top Nr.', 'Geschoß', 'Orientierung', 'Typ', '', 'Fläche', '', 'Faktor', '', '', 'Nutzwert']);
$html .= Html::table_header(['Top Nummer', 'Geschoß', 'Orientierung', 'Typ', '', 'Fläche', '', 'Faktor', '', '', 'Nutzwert'], 'page-break-inside:avoid');
$summe_nutzwert = 0;
/**
@@ -26,7 +33,7 @@ class Nutzwertberechnung
$flaeche = 0;
foreach ($methoden[1] as $komponente) {
$html .= '<tr>';
$html .= Html::td($komponente['top_nummer'], 'bl bb');
$html .= Html::td($komponente['top_nummer'], 'bold bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td($komponente['orientierung'], 'bl bb');
$html .= Html::td($komponente['type'], 'bl bb');
@@ -46,8 +53,8 @@ class Nutzwertberechnung
$html .= Html::td(number_format($faktor, 3, ',', '.'), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$html .= Html::td(number_format($flaeche * $faktor, 3, ',', '.'), 'right bl bb');
$summe_nutzwert = round($flaeche * $faktor);
$html .= Html::td($summe_nutzwert, 'center bl bb br');
$summe_nutzwert = $flaeche * $faktor;
$html .= Html::td(round($summe_nutzwert), 'center bl bb br');
$html .= '</tr>';
}
@@ -68,12 +75,19 @@ class Nutzwertberechnung
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$summe_nutzwert += $nutzwert;
$html .= Html::td('', 'center bl bb br');
$html .= '</tr>';
}
$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 .= '</tr>';
$summe_nutzwert += $nutzwert;
}
$summe_nutzwert = round($summe_nutzwert);
/**
* Terasse, Balkon
@@ -92,10 +106,11 @@ class Nutzwertberechnung
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert);
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$summe_nutzwert += $nutzwert;
$html .= '</tr>';
$summe_nutzwert += $nutzwert;
}
}
@@ -116,18 +131,113 @@ class Nutzwertberechnung
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert);
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$summe_nutzwert += $nutzwert;
$html .= '</tr>';
$summe_nutzwert += $nutzwert;
}
}
$html .= Html::table_footer($summe_nutzwert);
$html .= '</table>';
Pdf::$zusammenstellung[$komponente['id']] = $summe_nutzwert;
}
$objekte = self::laod_project(true);
foreach ($objekte as $methoden) {
/**
* Stellplätze
*/
$html .= Html::table_header(['Top Nummer', 'Geschoß', '', 'Fläche', '', 'Faktor', '', '', 'Nutzwert'], 'page-break-inside:avoid');
$nutzwert = 0;
if (isset($methoden[5])) {
foreach ($methoden[5] as $komponente) {
$html .= '<tr>';
$html .= Html::td($komponente['top_nummer'], 'bl bb');
$html .= Html::td($komponente['geschoss'], 'bl bb');
$html .= Html::td($komponente['raumart'], 'bl bb');
$html .= Html::td(number_format($komponente['flaeche'], 2, ',', '.').' m&sup2;', 'right bl bb');
$html .= Html::td('x', 'center bl bb');
$html .= Html::td(number_format($komponente['faktor'], 3), 'center bl bb');
$html .= Html::td('=', 'center bl bb');
$nutzwert = $komponente['flaeche'] * $komponente['faktor'];
$html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl bb');
$nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert);
$html .= Html::td($nutzwert, 'center bl bb br');
$html .= '</tr>';
}
}
$html .= Html::table_footer($nutzwert, 8);
$html .= '</table>';
Pdf::$zusammenstellung[$komponente['id']] = $nutzwert;
}
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__);
}
}
@@ -1,48 +0,0 @@
<?php
namespace App\Actions\Generate\Tabellen\Nutzwerte;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class Projekt
{
public static function load($projekte_id)
{
$methoden = ProjektMethode::where('projekte_id', $projekte_id)->pluck('methode_id', 'raumart')->toArray();
$objekte = ProjektObjekte::with('orientierung')
->where('projekte_id', $projekte_id)
->orderBy('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_id = $methoden[$element['raumart']];
$t = [];
$t['type'] = $objekt->type ?? '';
$t['geschoss'] = $element['geschoss'];
$t['raumart'] = $element['raumart'];
$t['faktor'] = $element['faktor'];
$t['flaeche'] = $element['flaeche'];
$t['nutzwert'] = $element['nutzwert'];
$t['top_nummer'] = ! $key ? $objekt->top_nummer : '';
$t['objekt_nutzwert'] = $objekt->nutzwert;
$t['faktor_methode'] = $element['methode']['faktor'];
$t['orientierung'] = isset($objekt['orientierung']['name']) ? $objekt['orientierung']['name'] : '';
$tmp[$objekt->top_nummer][$methode_id][] = $t;
}
}
// dd($tmp);
return $tmp;
}
}
@@ -7,14 +7,12 @@ use App\Actions\Generate\Utilities\Html;
use App\Models\ProjektMerkmale;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
use DB;
class ZuUndAbschlaege
{
public static function load(int $projekte_id)
{
$objekte = ProjektObjekte::select()
->with('orientierung')
->where('projekte_id', $projekte_id)
@@ -43,18 +41,12 @@ class ZuUndAbschlaege
foreach ($objekte as $objekt) {
// $detail = ProjektObjekteImDetail::join('projekt_methodes', 'projekt_objekte_im_details.raumart', '=', 'projekt_methodes.name')
// ->where('projekt_methodes.projekte_id', $projekte_id)
// ->where('projekt_objekte_im_details.projekt_objekte_id', $objekt->id)
// ->get();
// dd($detail);
$detail = DB::table('projekt_objekte_im_details')
->join('projekt_methodes', 'projekt_objekte_im_details.raumart', '=', 'projekt_methodes.raumart')
->select(
'projekt_methodes.faktor',
'projekt_objekte_im_details.geschoss',
'projekt_objekte_im_details.raumart',
'projekt_objekte_im_details.faktor',
'projekt_objekte_im_details.flaeche',
'projekt_objekte_im_details.nutzwert',
)
@@ -71,7 +63,7 @@ class ZuUndAbschlaege
$html .= Html::td($objekt['top_nummer'], 'center bl br bb');
$html .= Html::td($geschoss, 'center br bb');
$html .= Html::td($objekt['type'], 'br bb');
// Nutzfläache
// Nutzfläche
$html .= Html::td(Format::dezimal($flaeche, 2).' m&sup2;', 'center br bb w30');
// Loggia
if ($has_loggien) {
@@ -2,10 +2,10 @@
namespace App\Actions\Generate\Tabellen;
use App\Actions\Generate\Pdf;
use App\Actions\Generate\Utilities\Format;
use App\Actions\Generate\Utilities\Html;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
class Zusammenstellung
{
@@ -15,12 +15,13 @@ class Zusammenstellung
$summe_prozent = [];
$summe_nutzwert = [];
$html = Html::table_header(['Top', 'Geschoß', 'Orientierung', 'Typ', 'Nutzwert', 'x2 *', '%']);
$nutzwert_gesammt = array_sum(Pdf::$zusammenstellung);
$nutzwert_gesammt = ProjektObjekteImDetail::where('projekte_id', $projekte_id)->sum('nutzwert');
$html = Html::table_header(['Top', 'Geschoß', 'Orientierung', 'Typ', 'Nutzwert', 'x2 *', '%']);
$objekte = ProjektObjekte::select()
->with('orientierung')
->with('projektobjekteimdetail')
->where('projekte_id', $projekte_id)
->orderBy('nicht_in_orientierung', 'ASC')
->orderBy('top_nummer', 'ASC')
@@ -28,29 +29,23 @@ class Zusammenstellung
foreach ($objekte as $objekt) {
$objektimdetail = ProjektObjekteImDetail::where('projekt_objekte_id', $objekt->id)->get();
$nutzwert = $objektimdetail->sum('nutzwert');
$tmp = 0;
$str = '';
if ($nutzwert > 0) {
$str = $nutzwert * 2 .' / '.$nutzwert_gesammt * 2 .' tel Anteil =';
$tmp = ($nutzwert * 2) / ($nutzwert_gesammt * 2) * 100;
$prozent = Format::dezimal($tmp, 3).'%';
}
$summe_prozent[] = $tmp;
$summe_nutzwert[] = $nutzwert;
$html .= '<tr>';
$html .= Html::td($objekt->top_nummer, 'bl bb br');
$html .= Html::td($objektimdetail->first()->geschoss, 'center br bb');
$html .= Html::td($objekt->projektobjekteimdetail->first()->geschoss, 'center br bb');
$html .= Html::td($objekt->orientierung?->name, 'center br bb');
$html .= Html::td($objekt?->type, 'center br bb');
$nutzwert = Pdf::$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>';
}
+12
View File
@@ -16,6 +16,18 @@ class Filter
return $return;
}
public static function array_remove($array, $filters = [])
{
$return = [];
foreach ($array as $value) {
if (! in_array($value, $filters)) {
$return[] = $value;
}
}
return $return;
}
public static function get_separator($row)
{
if (substr_count($row, '|') == 3) {
+5 -4
View File
@@ -4,9 +4,10 @@ namespace App\Actions\Generate\Utilities;
class Html
{
public static function table_header($header_row)
public static function table_header($header_row, $style = '')
{
$html = '<table class="table-striped">';
$style = " style=\" $style\"" ?? '';
$html = '<table autosize="1" class="table-striped" '.$style.'>';
$html .= '<thead><tr>';
foreach ($header_row as $value) {
$html .= '<th class="bl bt br bb center bg-sky">'.$value.'</th>';
@@ -16,10 +17,10 @@ class Html
return $html;
}
public static function table_footer($nutzwert_summe)
public static function table_footer($nutzwert_summe, $colspan = 10)
{
$html = '<tfooter><tr>';
$html .= '<th colspan="10" class="bl bt bb right bg-sky">Nutzwert gerundet</th>';
$html .= '<th colspan="'.$colspan.'" class="bl bt bb right bg-sky">Nutzwert gerundet</th>';
$html .= '<th class="bl bt br bb center bg-sky">'.$nutzwert_summe.'</th>';
$html .= '</tr></tfooter>';
+3 -28
View File
@@ -146,9 +146,7 @@ class GutachtenValidation
foreach ($res as $value) {
$raeume = $value->projektobjekteimdetail->toArray();
if (! count($raeume)) {
if (! count($value->projektobjekteimdetail)) {
Notification::make()
->title('Tabelle Objekte')
->info()
@@ -170,18 +168,7 @@ class GutachtenValidation
return false;
}
if (! $raeume['geschoss']) {
Notification::make()
->title('Tabelle Objekte im Detail')
->info()
->icon('heroicon-o-exclamation-triangle')
->duration(10000)
->body('Beim Objekt Top Nummer <b>'.$value->top_nummer.'</b> fehlt die Angabe des <u>Geschoßes</u>.')
->send();
return false;
}
if (! $raeume['raumart']) {
if (! $value->projektobjekteimdetail->first()->raumart) {
Notification::make()
->title('Tabelle Objekte im Detail')
->info()
@@ -192,7 +179,7 @@ class GutachtenValidation
return false;
}
if (! $raeume['flaeche']) {
if (! $value->projektobjekteimdetail->first()->flaeche) {
Notification::make()
->title('Tabelle Objekte im Detail')
->info()
@@ -232,18 +219,6 @@ class GutachtenValidation
return false;
}
// KANN 0 SEIN
// if ($value->faktor == 0) {
// Notification::make()
// ->title('Tabelle Räume Methoden')
// ->info()
// ->icon('heroicon-o-exclamation-triangle')
// ->duration(10000)
// ->body('Für den Raum <b>'.$value->raumart.'</b> fehlt die Angabe des <u>Faktors</u>.')
// ->send();
// return false;
// }
}
/**
@@ -5,6 +5,7 @@ namespace App\Filament\Resources\Projektes\RelationManagers;
use App\Actions\Create\CreateProjektMethoden;
use App\Models\Methode;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekteImDetail;
use Filament\Actions\Action;
use Filament\Actions\BulkAction;
use Filament\Actions\BulkActionGroup;
@@ -59,8 +60,12 @@ class ProjektMethodesRelationManager extends RelationManager
->width('1rem')
->rules(['required', 'faktor' => 'decimal:0,2'])
->searchable()
->afterStateUpdated(function (Component $livewire) {
$livewire->dispatch('refreshMethods');
->afterStateUpdated(function ($record) {
$objects = ProjektObjekteImDetail::where('projekte_id', $record['projekte_id'])->where('raumart', $record['raumart'])->get();
foreach ($objects as $value) {
$nutzwert = round($record['faktor'] * $value->flaeche, 2);
ProjektObjekteImDetail::where('id', $value->id)->update(['nutzwert' => $nutzwert]);
}
})->validationMessages([
'required' => 'Die Eingabe eines Faktors ist erforderlich.',
'decimal' => 'Für den Faktors sind zwei Dezimalstellen erforderlich.',
@@ -130,6 +135,7 @@ class ProjektMethodesRelationManager extends RelationManager
->icon('phosphor-function')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
/** @var object $record */
ProjektMethode::where('id', '=', $record->id)
->update(
['faktor' => $data['faktor']]
@@ -151,6 +157,7 @@ class ProjektMethodesRelationManager extends RelationManager
->icon('phosphor-calculator')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
/** @var object $record */
ProjektMethode::where('id', '=', $record->id)
->update(
['methode_id' => $data['methode_id']]
@@ -3,7 +3,6 @@
namespace App\Filament\Resources\Projektes\RelationManagers;
use App\Models\ProjektObjekteImDetail;
use Filament\Actions\BulkAction;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\CreateAction;
use Filament\Actions\DeleteAction;
@@ -20,7 +19,6 @@ use Filament\Tables\Columns\TextInputColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\HtmlString;
use Livewire\Component;
@@ -44,17 +42,14 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
Select::make('projekt_objekte_id')
->relationship('top_nummer', 'top_nummer', fn (Builder $query) => $query->where('projekte_id', $this->getOwnerRecord()->id))
->required()
->searchable()
->columnSpan(3),
->searchable(),
TextInput::make('raumart')
->required()
->maxLength(255)
->columnSpan(3),
->maxLength(255),
TextInput::make('geschoss')
->required()
->maxLength(255)
->suffixIcon('phosphor-building')
->columnSpan(2),
->suffixIcon('phosphor-building'),
TextInput::make('flaeche')
->suffix(new HtmlString(' m&sup2;'))
->rules(['required'])
@@ -65,18 +60,8 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
])
->afterStateUpdated(function (Component $livewire) {
$livewire->dispatch('refreshProjektAllgemeinflaechen');
})
->columnSpan(2),
TextInput::make('faktor')
->suffixIcon('phosphor-function')
->afterStateUpdated(function (Component $livewire) {
$livewire->dispatch('refreshProjektObjekteImDetail');
})->validationMessages([
'required' => 'Die Eingabe eines Faktors ist erforderlich.',
'decimal' => 'Für den Faktors sind zwei Dezimalstellen erforderlich.',
])
->columnSpan(2),
])->columns(6);
}),
]);
}
public function table(Table $table): Table
@@ -87,29 +72,16 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
->recordTitleAttribute('top_nummer')
->columns([
TextColumn::make('top_nummer.top_nummer')
->sortable()
->extraAttributes(['pointer-events' => 'none'])
->searchable()
->label('Top'),
TextColumn::make('geschoss')->searchable(),
TextColumn::make('raumart')->searchable(),
TextInputColumn::make('faktor')
->extraInputAttributes(['onClick' => 'this.select()'])
->suffixIcon('phosphor-function')
->width('1rem')
->rules(['required'])
TextColumn::make('raumart')->searchable()->sortable(),
TextColumn::make('methode.faktor')
->icon('phosphor-function')
->searchable()
->afterStateUpdated(function ($record, Component $livewire) {
$object = ProjektObjekteImDetail::find($record['id']);
$object->nutzwert = round($object->faktor * $object->flaeche, 2);
$object->save();
$livewire->dispatch('refreshProjektObjekteImDetail');
})->validationMessages([
'required' => 'Die Eingabe eines Faktors ist erforderlich.',
'decimal' => 'Für den Faktors sind zwei Dezimalstellen erforderlich.',
]),
->label('Faktor'),
TextInputColumn::make('flaeche')
->extraInputAttributes(['onClick' => 'this.select()'])
->summarize(Sum::make()->label('Gesammt')->numeric(
@@ -122,9 +94,8 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
->label('Fläche')
->searchable()
->afterStateUpdated(function ($record, Component $livewire) {
$object = ProjektObjekteImDetail::find($record['id']);
$object->nutzwert = round($object->faktor * $object->flaeche, 2);
$object->nutzwert = round($record->methode->faktor * $object->flaeche, 2);
$object->save();
$livewire->dispatch('refreshProjektObjekteImDetail');
@@ -176,30 +147,6 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
])
->toolbarActions([
BulkActionGroup::make([
BulkAction::make('faktor')
->color('primary')
->label('Faktor zuweisen')
->schema([
TextInput::make('faktor')
->prefixIcon('phosphor-calculator')
->numeric()
->required(),
])
->icon('phosphor-calculator')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = round($data['faktor'] * $record->flaeche);
ProjektObjekteImDetail::where('id', '=', $record->id)
->update(
[
'faktor' => $data['faktor'],
'nutzwert' => $nutzwert,
]
);
}
})->after(function (Component $livewire) {
$livewire->dispatch('refreshProjektObjekteImDetail');
}),
DeleteBulkAction::make()->after(function (Component $livewire) {
$livewire->dispatch('refreshProjektObjekteImDetail');
}),
@@ -65,6 +65,7 @@ class ProjektObjekteRelationManager extends RelationManager
->columns([
TextColumn::make('top_nummer')
->alignCenter()
->sortable()
->label('Top Nummer')
->searchable()
->extraHeaderAttributes([
@@ -92,7 +93,6 @@ class ProjektObjekteRelationManager extends RelationManager
->toggleable()
->width('2rem')
->label('Orientierung')
->selectablePlaceholder(true)
->options(Orientierung::pluck('name', 'id'))
->selectablePlaceholder(false)
->disableOptionWhen(fn (string $value): bool => in_array($value, [2, 11, 24, 33, 36]))
@@ -232,6 +232,7 @@ class ProjektObjekteRelationManager extends RelationManager
->default(0)
->label('Objekte "Nicht in Orientierung" anzeigen'),
])
->deferFilters(false)
->recordActions([
EditAction::make()->iconButton()
->mutateDataUsing(function (array $data): array {
@@ -275,6 +276,7 @@ class ProjektObjekteRelationManager extends RelationManager
->icon('phosphor-align-center-horizontal-simple')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->where('nicht_in_orientierung', '=', false)
->update(
@@ -299,6 +301,7 @@ class ProjektObjekteRelationManager extends RelationManager
->icon('phosphor-compass')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
['orientierung_id' => $data['methode_id']]
@@ -323,6 +326,7 @@ class ProjektObjekteRelationManager extends RelationManager
->icon('phosphor-check-square')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
['nicht_in_orientierung' => 1]
@@ -344,6 +348,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('a', $data['a'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -367,6 +372,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('b', $data['b'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -390,6 +396,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('c', $data['c'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -413,6 +420,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('d', $data['d'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -436,6 +444,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('e', $data['e'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -459,6 +468,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('f', $data['f'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -482,6 +492,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('g', $data['g'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -505,6 +516,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('h', $data['h'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -528,6 +540,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('i', $data['i'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -551,6 +564,7 @@ class ProjektObjekteRelationManager extends RelationManager
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
$nutzwert = $this->sum_nutzwerte('j', $data['j'], $record);
/** @var object $record */
ProjektObjekte::where('id', '=', $record->id)
->update(
[
@@ -4,6 +4,7 @@ namespace App\Filament\Resources\Projektes\Schemas;
use App\Enums\ProjektStatus;
use App\Models\Projekte;
use Filament\Actions\Action;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Radio;
use Filament\Forms\Components\RichEditor;
@@ -32,25 +33,41 @@ class ProjekteForm
->schema([
TextInput::make('offizieller_name')
->label('Offizieller Name')
->required()
->suffixAction(
Action::make('copy')
->tooltip('Kopieren')
->icon('heroicon-s-clipboard-document-check')
->action(function ($livewire, $state) {
$livewire->js('window.navigator.clipboard.writeText("'.$state.'");');
})
)
->belowContent([
'Kann mit "###OFFIZIELLER_NAME###" im Text verwendet werden.',
]),
'Als Platzhalter "###OFFIZIELLER_NAME###"',
])
->required(),
TextInput::make('interner_name')
->label('Interner Name')
->required()
->suffixAction(
Action::make('copy')
->tooltip('Kopieren')
->icon('heroicon-s-clipboard-document-check')
->action(function ($livewire, $state) {
$livewire->js('window.navigator.clipboard.writeText("'.$state.'");');
})
)
->belowContent([
'Kann mit "###INTERNER_NAME###" im Text verwendet werden.',
]),
'Als Platzhalter "###INTERNER_NAME###"',
])
->required(),
TextInput::make('ort')->required()->suffix('am')
->belowContent([
'Kann mit "###ORT###" im Text verwendet werden.',
'Als Platzhalter "###ORT###"',
]),
DatePicker::make('erstellung')
->label('Datum der Erstellung')
->required()
->belowContent([
'Kann mit "###DATUM###" im Text verwendet werden.',
'Als Platzhalter "###DATUM###"',
]),
])->columns(2),
Tab::make('Zuordnung')
@@ -77,11 +77,12 @@ class TextblockForm
->schema([
TextInput::make('hilfe_titel')
->aboveLabel([
'Dieser Inhalt wird dem Benutzer an entsprechender Stelle bei der Bearbeitung des Gutachtens angezeigt.',
'Wird dem Benutzer bei der Bearbeitung dieses Inhaltselements angezeigt.',
])
->label('Überschrift')
->columnSpanFull(),
Textarea::make('hilfe_description'),
Textarea::make('hilfe_description')
->label('Text'),
FileUpload::make('hilfe_image')
->image()
->label('Bild')
+1 -1
View File
@@ -42,6 +42,6 @@ class ProjektObjekteImDetail extends Model
public function methode()
{
return $this->hasOne(ProjektMethode::class, 'raumart', 'raumart');
return $this->belongsTo(ProjektMethode::class, 'raumart', 'raumart');
}
}