diff --git a/app/Actions/Cloning/CloneProjekt.php b/app/Actions/Cloning/CloneProjekt.php index 2d4f40a..aaac6c3 100644 --- a/app/Actions/Cloning/CloneProjekt.php +++ b/app/Actions/Cloning/CloneProjekt.php @@ -32,7 +32,7 @@ class CloneProjekt $news_project->cloned_from_id = $record->id; $news_project->save(); - ProjektUser::create(['user_id' => Auth::user()->id, 'projekte_id' => $news_project->id]); + ProjektUser::create(['user_id' => Auth::user()->id, 'projekte_id' => $news_project->id, 'evaluation_gutachten' => 0]); $res = ProjektObjekte::where('projekte_id', $record->id)->get(); foreach ($res as $row) { diff --git a/app/Actions/Cloning/CloneValidation.php b/app/Actions/Cloning/Reparieren.php similarity index 65% rename from app/Actions/Cloning/CloneValidation.php rename to app/Actions/Cloning/Reparieren.php index 0fffcf9..e7b024d 100644 --- a/app/Actions/Cloning/CloneValidation.php +++ b/app/Actions/Cloning/Reparieren.php @@ -11,9 +11,9 @@ use App\Models\ProjektObjekte; use App\Models\ProjektObjekteImDetail; use App\Models\ProjektPlatzhalter; -class CloneValidation +class Reparieren { - public static function validate(Projekte $record) + public static function run(Projekte $record) { /** * projektes @@ -29,29 +29,33 @@ class CloneValidation $ORIGINAL = $record->cloned_from_id; $GEKLONT = $record->id; - // $originals = ProjektObjekte::where('projekte_id', $ORIGINAL)->get(); - // foreach ($originals as $original) { - // $check = ProjektObjekte::where('projekte_id', $GEKLONT)->where('top_nummer', $original->top_nummer)->first(); - // if (! $check) { - // /** - // * Im original dazugekommen - // */ - // $new = $original->replicate(); - // $new->projekte_id = $GEKLONT; - // $new->save(); + if($ORIGINAL){ + // überprüfe geklontes Projekt! + $originals = ProjektObjekte::where('projekte_id', $ORIGINAL)->get(); + foreach ($originals as $original) { + $check = ProjektObjekte::where('projekte_id', $GEKLONT)->where('top_nummer', $original->top_nummer)->get(); + dd($check); + if (! $check) { + /** + * Im original dazugekommen + */ + $new = $original->replicate(); + $new->projekte_id = $GEKLONT; + $new->save(); - // $res2 = ProjektObjekteImDetail::where('projekte_id', $ORIGINAL)->where('projekt_objekte_id', $original->id)->get(); - // foreach ($res2 as $row2) { - // $check = ProjektObjekteImDetail::where('projekte_id', $GEKLONT)->where('raumart', $row2->raumart)->first(); - // if (! $check) { - // $new2 = $row2->replicate(); - // $new2->projekte_id = $GEKLONT; - // $new2->projekt_objekte_id = $new->id; - // $new2->save(); - // } - // } - // } - // } + $res2 = ProjektObjekteImDetail::where('projekte_id', $ORIGINAL)->where('projekt_objekte_id', $original->id)->get(); + foreach ($res2 as $row2) { + $check = ProjektObjekteImDetail::where('projekte_id', $GEKLONT)->where('raumart', $row2->raumart)->first(); + if (! $check) { + $new2 = $row2->replicate(); + $new2->projekte_id = $GEKLONT; + $new2->projekt_objekte_id = $new->id; + $new2->save(); + } + } + } + } + } // $res = ProjektAllgemeinflaechen::where('projekte_id', $original_id)->get(); // foreach ($res as $row) { diff --git a/app/Actions/Generate/ExcelAufstellung.php b/app/Actions/Generate/ExcelAufstellung.php index ae458f5..110c5b1 100644 --- a/app/Actions/Generate/ExcelAufstellung.php +++ b/app/Actions/Generate/ExcelAufstellung.php @@ -19,7 +19,7 @@ use PhpOffice\PhpSpreadsheet\Style\Fill; class ExcelAufstellung { - public static function make($projekte_id) + public static function make(int $projekte_id) { $black = 'ff62748e'; $blue = 'ff2b7fff'; diff --git a/app/Actions/Generate/PdfGenerator.php b/app/Actions/Generate/PdfGenerator.php index d76b33f..e823774 100644 --- a/app/Actions/Generate/PdfGenerator.php +++ b/app/Actions/Generate/PdfGenerator.php @@ -26,15 +26,15 @@ use Mpdf\Mpdf; class PdfGenerator { - public static $projekt; + public static Projekte $projekt; - public static $gutachter; + public static Gutachter $gutachter; - public static $auftraggeber; + public static Auftraggeber $auftraggeber; - public static $zusammenstellung = []; + public static array $zusammenstellung = []; - public static function make($projekte_id, $part) + public static function make(int $projekte_id,string $part) { self::$projekt = Projekte::where('id', $projekte_id)->first(); @@ -114,6 +114,7 @@ class PdfGenerator $html = ''; $html = Ueberschrift::load($inhalt); $textblock = ''; + $textblock2 = ''; if ($inhalt->textblock) { $textblock = Platzhalter::replace($platzhalter, $inhalt->textblock); diff --git a/app/Actions/Validation/GutachtenValidation.php b/app/Actions/Validation/GutachtenValidation.php index eb566f0..764027b 100644 --- a/app/Actions/Validation/GutachtenValidation.php +++ b/app/Actions/Validation/GutachtenValidation.php @@ -9,12 +9,12 @@ use App\Models\ProjektInhaltsverzeichnis; use App\Models\ProjektMethode; use App\Models\ProjektObjekte; use App\Models\ProjektObjekteImDetail; -use App\Models\ProjektPlatzhalter; +// use App\Models\ProjektPlatzhalter; use Filament\Notifications\Notification; class GutachtenValidation { - public static function controll($record) + public static function run(Projekte $record) { /** * Projekt @@ -49,7 +49,7 @@ class GutachtenValidation ->duration(10000) ->body('Die Tabelle der Allgemeinflächen ist leer.') ->send(); - + return false; } foreach ($res as $value) { @@ -61,7 +61,7 @@ class GutachtenValidation ->duration(10000) ->body('Für die Allgemeinfläche '.$value->raumart.' fehlt die Angabe des Geschoßes.') ->send(); - + return false; } if (! $value->raumart) { @@ -83,21 +83,73 @@ class GutachtenValidation ->duration(10000) ->body('Für die Allgemeinfläche '.$value->raumart.' fehlt die Angabe der Fläche.') ->send(); - + return false; } } + /** + * jedes objekt hat mindestens ein objekt im detail + */ + $res = ProjektObjekte::where('projekte_id', $record->id)->get(); + $collect = []; + foreach ($res as $value) { + $res2 = ProjektObjekteImDetail::where('projekte_id', $record->id)->where('projekt_objekte_id', $value->id)->first(); + if(!$res2){ + $collect[] = $value->top_nummer; + } + } + if($collect){ + Notification::make() + ->title('Fehler bei Verbindungen von Objekt zu Objekt im Detail') + ->body('Für die Objekte:
'.implode(', ', $collect).'
fehlen die Objekte im Detail. Daten können nochmals hochladen werden.') + ->icon('heroicon-o-exclamation-triangle') + ->duration(10000) + ->danger() + ->send(); + + return false; + } + + /** + * jedes objekt im detail hat eine Verbindung zu einem objekt + */ + $res = ProjektObjekteImDetail::where('projekte_id', $record->id)->get(); + $collect=[]; + foreach ($res as $value) { + $res2 = ProjektObjekte::where('projekte_id', $record->id)->where('id', $value->projekt_objekte_id)->first(); + if(!$res2){ + $collect[] = $value->geschoss .' '.$value->raumart; + } + } + if($collect){ + Notification::make() + ->title('Fehler bei Verbindungen von Objekt im Detail zu Objekt') + ->body('Für die Objekte im Detail:
'.implode(', ', $collect).'
fehlt dasObjekte. Daten können nochmals hochladen werden.') + ->icon('heroicon-o-exclamation-triangle') + ->duration(10000) + ->danger() + ->send(); + + return false; + } + + /** * ProjektObjekteImDetail + raumart * -> cosistent * ProjektMethode + raumart */ + + $raumarts_oid = ProjektObjekteImDetail::where('projekte_id', $record->id)->groupBy('raumart')->pluck('raumart')->toArray(); $raumarts_meth = ProjektMethode::where('projekte_id', $record->id)->pluck('raumart')->toArray(); + $extra_oid = array_diff($raumarts_oid, $raumarts_meth); $extra_meth = array_diff($raumarts_meth, $raumarts_oid); + + // dd($extra_oid, $raumarts_meth); if ($extra_oid) { $titel = \count($extra_oid) == 1 ? 'Für diese "Raumart" aus "Objekte im Detail" ist keine "Raum Methode" definiert' : 'Für diese "Raumarten" aus "Objekte im Detail" sind keine "Raum Methoden" definiert'; @@ -202,7 +254,7 @@ class GutachtenValidation ->duration(10000) ->body('Für den Raum mit der ID '.$value->id.' fehlt die Angabe der Top Nummer.') ->send(); - + return false; } if (! $value->projektobjekteimdetail->first()->raumart) { @@ -281,7 +333,7 @@ class GutachtenValidation ->body('Inhaltsverzeichnis fehlt!') ->duration(10000) ->send(); - + return false; } @@ -309,5 +361,7 @@ class GutachtenValidation ->send(); Projekte::where('id', $record->id)->update(['evaluation_gutachten' => 1]); + + return true; } } diff --git a/app/Filament/Imports/ImportAllgemeinDirect.php b/app/Filament/Imports/ImportAllgemeinDirect.php index fcd0c50..6c35674 100644 --- a/app/Filament/Imports/ImportAllgemeinDirect.php +++ b/app/Filament/Imports/ImportAllgemeinDirect.php @@ -4,10 +4,11 @@ namespace App\Filament\Imports; use App\Models\ProjektAllgemeinflaechen; use Filament\Notifications\Notification; +use Illuminate\Support\Facades\Auth; class ImportAllgemeinDirect { - public static function run($data, $projekte_id) + public static function run(array $data, int $projekte_id) { $data = explode(PHP_EOL, $data['upload_data']); @@ -38,21 +39,20 @@ class ImportAllgemeinDirect } } - $recipient = auth()->user(); if ($error) { Notification::make() ->title('Fehlerbeim Import') ->body('Daten konnten nicht in vier Spalten aufgeteilt werden. Falscher Separator?') ->danger() ->send() - ->sendToDatabase($recipient); + ->sendToDatabase(Auth::user()); } else { Notification::make() ->title('Allgemeinflächen wurden erfolgreich importiert') ->body('Es wurden '.$new.' Flächen hinzugefügt') ->success() ->send() - ->sendToDatabase($recipient); + ->sendToDatabase(Auth::user()); } } } diff --git a/app/Filament/Resources/Projektes/Pages/EditProjekte.php b/app/Filament/Resources/Projektes/Pages/EditProjekte.php index 8321457..17a7b88 100644 --- a/app/Filament/Resources/Projektes/Pages/EditProjekte.php +++ b/app/Filament/Resources/Projektes/Pages/EditProjekte.php @@ -2,7 +2,7 @@ namespace App\Filament\Resources\Projektes\Pages; -use App\Actions\Cloning\CloneValidation; +use App\Actions\Cloning\Reparieren; use App\Actions\Validation\GutachtenValidation; use App\Filament\Resources\Projektes\ProjekteResource; use App\Models\Konto; @@ -15,6 +15,7 @@ use Filament\Actions\DeleteAction; use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\HtmlString; use Livewire\Attributes\On; class EditProjekte extends EditRecord @@ -71,18 +72,6 @@ class EditProjekte extends EditRecord // ->modalIcon('heroicon-o-exclamation-triangle') // ->modalDescription('Bitte laden sie Ihr Konto auf. (nicht aktive)') // ->modalSubmitActionLabel('Konto aufladen'), - /** - * EVALUATE - */ - Action::make('evaluate_gutachten') - ->hidden(fn ($record): bool => $record->bezahlt_am && ! $record->evaluation_gutachten ? false : true) - ->label('Evaluieren') - ->icon('phosphor-eye') - ->action(function ($record): void { - GutachtenValidation::controll($record); - $this->record->refresh(); - }), - /** * PDF */ @@ -94,7 +83,9 @@ class EditProjekte extends EditRecord ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->evaluation_gutachten) ? true : false) ->label('Standard Texte') ->icon('icon-pdf') - ->url(fn ($record) => route('pdf', ['record' => $record, 'part' => 'standard'])) + ->url(function ($record) { + return route('pdf', ['record' => $record, 'part' => 'standard']); + }) ->openUrlInNewTab(), /** * NUTZWERTE @@ -103,7 +94,9 @@ class EditProjekte extends EditRecord ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->evaluation_gutachten) ? true : false) ->label('Nutzwertberechnung') ->icon('icon-pdf') - ->url(fn ($record) => route('pdf', ['record' => $record, 'part' => 'nutzwerte'])) + ->url(function ($record) { + return route('pdf', ['record' => $record, 'part' => 'nutzwerte']); + }) ->openUrlInNewTab(), /** * PARAGRAPH 6 @@ -112,7 +105,9 @@ class EditProjekte extends EditRecord ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->evaluation_gutachten) ? true : false) ->label('Auszug gem. §6 ') ->icon('icon-pdf') - ->url(fn ($record) => route('pdf', ['record' => $record, 'part' => 'paragraph'])) + ->url(function ($record) { + return route('pdf', ['record' => $record, 'part' => 'paragraph']); + }) ->openUrlInNewTab(), ])->label('Pdf') ->icon('phosphor-download') @@ -144,14 +139,28 @@ class EditProjekte extends EditRecord * ADMIN */ ActionGroup::make([ - Action::make('relationen') - ->label('Relationen überprüfen') - ->modalIcon('phosphor-gear') - ->modalDescription('Dieses Projekt wurde gekloned. Mit dieser Funktion können Fehler behoben und Änderungen vom originalen Projekt übernommen werden. Objekte ohne Verbindung werden gelöscht.') - ->hidden(fn ($record): bool => ! $record->cloned_from_id) - ->action(fn ($record) => CloneValidation::validate($record)) - ->icon('phosphor-gear'), + /** + * EVALUATE + */ + Action::make('evaluate_gutachten') + ->color('primary') + // ->hidden(fn ($record): bool => $record->bezahlt_am && ! $record->evaluation_gutachten ? false : true) + ->label('Daten überprüfen') + ->icon('phosphor-eye') + ->action(function ($record): void { + GutachtenValidation::run($record); + $this->record->refresh(); + }), + Action::make('reparieren') + ->color('success') + ->label('Daten reparieren') + ->modalIcon('phosphor-arrow-fat-line-right-fill') + ->modalDescription( new HtmlString('
  1. Bei geklonten Projekten werden Änderungen vom originalen Objekt und Objekt im Detail übernommen.
  2. Bei geklonten Projekten werden gelöschte Objekt und Objekt im Detail ergänzt.
  3. Objekt im Detail ohne Verbindung zum Objekt werden gelöscht.
  4. Doppelte Objekt oder Objekt im Detail werden gelöscht.
')) + // ->hidden(fn ($record): bool => ! $record->cloned_from_id) + ->action(fn ($record) => Reparieren::run($record)) + ->icon('phosphor-arrow-fat-line-right-fill'), DeleteAction::make()->icon('heroicon-o-trash') + ->label('Projekt löschen') ->modalDescription('Möchten Sie dieses Projekt wirklich löschen? Die Daten werden unwiderbringlich gelöscht, dieser Vorgang kann nicht rückgängig gemacht werden.'), ])->label('Admin') ->icon('phosphor-user-circle') diff --git a/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php index 43baa4e..96a4f62 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php @@ -33,6 +33,7 @@ use Filament\Tables\Filters\Filter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use ToneGabes\BetterOptions\Forms\Components\RadioCards; +use ToneGabes\Filament\Icons\Enums\Phosphor; class ProjektInhaltsverzeichnisRelationManager extends RelationManager { @@ -360,7 +361,7 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager ->columns(3) ->iconAfter() ->indicatorBefore() - ->hiddenIcon() + // ->hiddenIcon() ->hiddenLabel() ->default('standard') ->options([ @@ -368,6 +369,11 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager 'nutzwerte' => 'Nutzwertberechnung', 'paragraph' => 'Auszug Gutachten', ]) + ->icons([ + 'standard' => Phosphor::ListNumbers->thin(), + 'nutzwerte' => Phosphor::Table->thin(), + 'paragraph' => Phosphor::Paragraph->thin(), + ]) ->idleIndicator('phosphor-circle') ->selectedIndicator('phosphor-circle-fill') ->descriptions([ diff --git a/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteImDetailRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteImDetailRelationManager.php index e93ec15..0d66b13 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteImDetailRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteImDetailRelationManager.php @@ -11,6 +11,7 @@ use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; +use Filament\Forms\Components\Hidden; use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; @@ -43,6 +44,7 @@ class ProjektObjekteImDetailRelationManager extends RelationManager return $schema ->components([ + Hidden::make('added_manuel')->default(1), Select::make('projekt_objekte_id') ->relationship('top_nummer', 'top_nummer', fn (Builder $query) => $query->where('projekte_id', $this->getOwnerRecord()->id)) ->required() @@ -78,6 +80,7 @@ class ProjektObjekteImDetailRelationManager extends RelationManager ->recordTitleAttribute('top_nummer') ->defaultPaginationPageOption(50) ->columns([ + TextColumn::make('projekt_objekte_id')->label('Parent '), TextColumn::make('top_nummer.top_nummer') ->sortable() ->extraAttributes(['pointer-events' => 'none']) diff --git a/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteRelationManager.php index dbdbd91..cbbcb0f 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/ProjektObjekteRelationManager.php @@ -12,6 +12,7 @@ use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; +use Filament\Forms\Components\Hidden; use Filament\Forms\Components\Radio; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; @@ -47,6 +48,7 @@ class ProjektObjekteRelationManager extends RelationManager { return $schema ->components([ + Hidden::make('added_manuel')->default(1), TextInput::make('top_nummer') ->label('Top Nummer') ->required() @@ -60,12 +62,13 @@ class ProjektObjekteRelationManager extends RelationManager $spalten = ProjektMerkmale::where('projekte_id', $this->ownerRecord->id)->pluck('name', 'code'); return $table - // ->striped() + ->striped() ->emptyStateDescription(new HtmlString('Bitte Projekt freischalten und unter Objekte im Detail Daten hochladen.')) ->recordTitleAttribute('top_nummer') ->description(new HtmlString('Orientierungen, Zu- und Abschläge, '.Blade::render('').' Nicht in Orientierung')) ->defaultPaginationPageOption(50) ->columns([ + TextColumn::make('id')->width('1rem'), TextColumn::make('top_nummer') ->alignCenter() ->sortable() diff --git a/app/Filament/Resources/Projektes/Tables/ProjektesTable.php b/app/Filament/Resources/Projektes/Tables/ProjektesTable.php index c5c3499..67f5418 100644 --- a/app/Filament/Resources/Projektes/Tables/ProjektesTable.php +++ b/app/Filament/Resources/Projektes/Tables/ProjektesTable.php @@ -27,7 +27,7 @@ class ProjektesTable { return $table ->columns([ - TextColumn::make('id'), + TextColumn::make('id')->sortable(), ToggleColumn::make('meine') ->state(fn ($record) => ProjektUser::where('user_id', auth()->user()->id)->where('projekte_id', $record->id)->count()) ->beforeStateUpdated(function ($record, $state) { @@ -38,6 +38,7 @@ class ProjektesTable } }), TextColumn::make('interner_name') + ->sortable() ->badge() ->tooltip(fn ($record): HtmlString => new HtmlString($record->beschreibung)) ->label('Interner Name') @@ -49,6 +50,7 @@ class ProjektesTable ->wrap() ->searchable(), TextColumn::make('offizieller_name') + ->sortable() ->wrap() ->searchable() ->label('Offizieller Name'), diff --git a/app/Models/ProjektObjekte.php b/app/Models/ProjektObjekte.php index f46cc75..fd446e2 100644 --- a/app/Models/ProjektObjekte.php +++ b/app/Models/ProjektObjekte.php @@ -17,6 +17,7 @@ class ProjektObjekte extends Model 'type', 'raumart', 'nutzwert', + 'added_manuel', 'a', 'b', 'c', diff --git a/app/Models/ProjektObjekteImDetail.php b/app/Models/ProjektObjekteImDetail.php index 63e705e..0186f1e 100644 --- a/app/Models/ProjektObjekteImDetail.php +++ b/app/Models/ProjektObjekteImDetail.php @@ -17,6 +17,7 @@ class ProjektObjekteImDetail extends Model 'faktor', 'flaeche', 'nutzwert', + 'added_manuel', ]; public static function boot() diff --git a/composer.lock b/composer.lock index 763012c..e30b0bb 100644 --- a/composer.lock +++ b/composer.lock @@ -4997,20 +4997,19 @@ }, { "name": "nikic/php-parser", - "version": "v5.7.0", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f", + "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-json": "*", "ext-tokenizer": "*", "php": ">=7.4" @@ -5049,9 +5048,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0" }, - "time": "2025-12-06T11:56:16+00:00" + "time": "2026-07-04T14:30:18+00:00" }, { "name": "nunomaduro/termwind", @@ -10120,16 +10119,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v4.3.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-debugbar.git", - "reference": "3d76ea8d78b82225b92789de65fc630c1cd8e80c" + "reference": "80ef956bda9e1a5824037d6f2cd06e73092e5634" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/3d76ea8d78b82225b92789de65fc630c1cd8e80c", - "reference": "3d76ea8d78b82225b92789de65fc630c1cd8e80c", + "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/80ef956bda9e1a5824037d6f2cd06e73092e5634", + "reference": "80ef956bda9e1a5824037d6f2cd06e73092e5634", "shasum": "" }, "require": { @@ -10137,11 +10136,12 @@ "illuminate/session": "^11|^12|^13.0", "illuminate/support": "^11|^12|^13.0", "php": "^8.2", - "php-debugbar/php-debugbar": "^3.7.2", + "php-debugbar/php-debugbar": "^3.8.0", "php-debugbar/symfony-bridge": "^1.1" }, "require-dev": { "larastan/larastan": "^3", + "laravel/ai": "^0.8", "laravel/octane": "^2", "laravel/pennant": "^1", "laravel/pint": "^1", @@ -10203,7 +10203,7 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-debugbar/issues", - "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.3.0" + "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.4.0" }, "funding": [ { @@ -10215,7 +10215,7 @@ "type": "github" } ], - "time": "2026-06-04T07:54:01+00:00" + "time": "2026-07-04T08:30:57+00:00" }, { "name": "barryvdh/laravel-ide-helper", diff --git a/database/migrations/2025_10_03_154046_create_projekt_objektes_table.php b/database/migrations/2025_10_03_154046_create_projekt_objektes_table.php index 8194aca..c5fd6eb 100644 --- a/database/migrations/2025_10_03_154046_create_projekt_objektes_table.php +++ b/database/migrations/2025_10_03_154046_create_projekt_objektes_table.php @@ -20,6 +20,7 @@ return new class extends Migration $table->string('top_nummer')->nullable(); $table->string('type')->nullable(); $table->decimal('nutzwert', 5, 2)->default(0)->nullable(); + $table->boolean('added_manuel')->default(0)->nullable(); // 10 Zusatzfelder $table->decimal('a', 5, 2)->default(0); $table->decimal('b', 5, 2)->default(0); diff --git a/database/migrations/2025_10_03_154047_create_projekt_objekte_im_details_table.php b/database/migrations/2025_10_03_154047_create_projekt_objekte_im_details_table.php index ead1cc6..9dbc1d7 100644 --- a/database/migrations/2025_10_03_154047_create_projekt_objekte_im_details_table.php +++ b/database/migrations/2025_10_03_154047_create_projekt_objekte_im_details_table.php @@ -21,6 +21,7 @@ return new class extends Migration $table->string('raumart')->nullable(); $table->decimal('flaeche', 7, 2)->default(0); $table->integer('nutzwert')->default(0)->nullable(); + $table->boolean('added_manuel')->default(0)->nullable(); $table->timestamps(); }); }