This commit is contained in:
salam committed 2026-07-04 18:15:17 +02:00
1 parent eb598ae0ce
commit 16c0aa24fe
14 files changed
+307 -174

No files matched your search

+91
View File
@@ -0,0 +1,91 @@
<?php
namespace App\Actions\Cloning;
use App\Models\ProjektAllgemeinflaechen;
use App\Models\Projekte;
use App\Models\ProjektInhaltsverzeichnis;
use App\Models\ProjektMerkmale;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
use App\Models\ProjektPlatzhalter;
use App\Models\ProjektUser;
use Illuminate\Support\Facades\Auth;
class CloneProjekt
{
public static function clone(Projekte $record)
{
/**
* projektes
* projekt_users
* projekt_allgemeinflaechens
* projekt_inhaltsverzeichnis
* projekt_merkmales
* projekt_methodes
* projekt_platzhalters
* projekt_objekte_im_details
* projekt_objektes
*/
$news_project = $record->replicate();
$news_project->cloned_from_id = $record->id;
$news_project->save();
ProjektUser::create(['user_id' => Auth::user()->id, 'projekte_id' => $news_project->id]);
$res = ProjektObjekte::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->projekte_cloned_from_id = $row->id;
$new->save();
$res2 = ProjektObjekteImDetail::where('projekte_id', $record->id)->where('projekt_objekte_id', $row->id)->get();
foreach ($res2 as $row2) {
$new2 = $row2->replicate();
$new2->projekte_id = $news_project->id;
$new2->projekt_objekte_id = $new->id;
$new2->projekte_objekte_cloned_from_id = $row2->id;
$new2->save();
}
}
$res = ProjektAllgemeinflaechen::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->save();
}
$res = ProjektInhaltsverzeichnis::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->save();
}
$res = ProjektPlatzhalter::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->save();
}
$res = ProjektMerkmale::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->save();
}
$res = ProjektMethode::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->save();
}
$res = ProjektPlatzhalter::where('projekte_id', $record->id)->get();
foreach ($res as $row) {
$new = $row->replicate();
$new->projekte_id = $news_project->id;
$new->save();
}
}
}
+100
View File
@@ -0,0 +1,100 @@
<?php
namespace App\Actions\Cloning;
use App\Models\ProjektAllgemeinflaechen;
use App\Models\Projekte;
use App\Models\ProjektInhaltsverzeichnis;
use App\Models\ProjektMerkmale;
use App\Models\ProjektMethode;
use App\Models\ProjektObjekte;
use App\Models\ProjektObjekteImDetail;
use App\Models\ProjektPlatzhalter;
class CloneValidation
{
public static function validate(Projekte $record)
{
/**
* projektes
* projekt_users
* projekt_allgemeinflaechens
* projekt_inhaltsverzeichnis
* projekt_merkmales
* projekt_methodes
* projekt_platzhalters
* projekt_objekte_im_details
* projekt_objektes
*/
$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();
// $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) {
// $check = ProjektInhaltsverzeichnis::where('projekte_id', $original_id)->where('raumart', $original->raumart)->first();
// if (! $check) {
// $new = $row->replicate();
// $new->projekte_id = $record->id;
// $new->save();
// }
// }
// $res = ProjektInhaltsverzeichnis::where('projekte_id', $original_id)->get();
// foreach ($res as $row) {
// $check = ProjektInhaltsverzeichnis::where('projekte_id', $original_id)->where('top_nummer', $original->top_nummer)->first();
// if (! $check) {
// $new = $row->replicate();
// $new->projekte_id = $record->id;
// $new->save();
// }
// }
// $res = ProjektPlatzhalter::where('projekte_id', $record->id)->get();
// foreach ($res as $row) {
// $new = $row->replicate();
// $new->projekte_id = $record->id;
// $new->save();
// }
// $res = ProjektMerkmale::where('projekte_id', $record->id)->get();
// foreach ($res as $row) {
// $new = $row->replicate();
// $new->projekte_id = $record->id;
// $new->save();
// }
// $res = ProjektMethode::where('projekte_id', $record->id)->get();
// foreach ($res as $row) {
// $new = $row->replicate();
// $new->projekte_id = $record->id;
// $new->save();
// }
// $res = ProjektPlatzhalter::where('projekte_id', $record->id)->get();
// foreach ($res as $row) {
// $new = $row->replicate();
// $new->projekte_id = $record->id;
// $new->save();
// }
}
}
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Projektes\Pages; namespace App\Filament\Resources\Projektes\Pages;
use App\Actions\Cloning\CloneValidation;
use App\Actions\Validation\GutachtenValidation; use App\Actions\Validation\GutachtenValidation;
use App\Filament\Resources\Projektes\ProjekteResource; use App\Filament\Resources\Projektes\ProjekteResource;
use App\Models\Konto; use App\Models\Konto;
@@ -138,8 +139,24 @@ class EditProjekte extends EditRecord
->icon('phosphor-download') ->icon('phosphor-download')
->color('info') ->color('info')
->button(), ->button(),
DeleteAction::make()->icon('heroicon-o-trash')
->modalDescription('Möchten Sie dieses Projekt wirklich löschen? Die Daten werden unwiderbringlich gelöscht, dieser Vorgang kann nicht rückgängig gemacht werden.'), /**
* 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'),
DeleteAction::make()->icon('heroicon-o-trash')
->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')
->button(),
]; ];
} }
@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Projektes\Tables; namespace App\Filament\Resources\Projektes\Tables;
use App\Actions\Cloning\CloneProjekt;
use App\Enums\ProjektStatus; use App\Enums\ProjektStatus;
use App\Models\Auftraggeber; use App\Models\Auftraggeber;
use App\Models\Gutachter; use App\Models\Gutachter;
@@ -16,9 +17,9 @@ use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\Filter;
use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\HtmlString; use Illuminate\Support\HtmlString;
use Illuminate\Database\Eloquent\Builder;
class ProjektesTable class ProjektesTable
{ {
@@ -28,17 +29,17 @@ class ProjektesTable
->columns([ ->columns([
TextColumn::make('id'), TextColumn::make('id'),
ToggleColumn::make('meine') ToggleColumn::make('meine')
->state(fn($record) => ProjektUser::where('user_id', auth()->user()->id)->where('projekte_id', $record->id)->count()) ->state(fn ($record) => ProjektUser::where('user_id', auth()->user()->id)->where('projekte_id', $record->id)->count())
->beforeStateUpdated(function ($record, $state) { ->beforeStateUpdated(function ($record, $state) {
if($state){ if ($state) {
ProjektUser::create(['user_id' => auth()->user()->id, 'projekte_id' => $record->id]); ProjektUser::create(['user_id' => auth()->user()->id, 'projekte_id' => $record->id]);
}else{ } else {
ProjektUser::where('user_id', auth()->user()->id)->where('projekte_id', $record->id)->delete(); ProjektUser::where('user_id', auth()->user()->id)->where('projekte_id', $record->id)->delete();
} }
}), }),
TextColumn::make('interner_name') TextColumn::make('interner_name')
->badge() ->badge()
->tooltip(fn($record): HtmlString => new HtmlString($record->beschreibung)) ->tooltip(fn ($record): HtmlString => new HtmlString($record->beschreibung))
->label('Interner Name') ->label('Interner Name')
->color(fn ($record): string => match ($record->status) { ->color(fn ($record): string => match ($record->status) {
'entwurf' => 'primary', 'entwurf' => 'primary',
@@ -53,7 +54,6 @@ class ProjektesTable
->label('Offizieller Name'), ->label('Offizieller Name'),
TextColumn::make('gutachter.company'), TextColumn::make('gutachter.company'),
TextColumn::make('auftraggeber.company'), TextColumn::make('auftraggeber.company'),
// TextColumn::make('ort'),
TextColumn::make('erstellung')->sortable(), TextColumn::make('erstellung')->sortable(),
]) ])
->striped() ->striped()
@@ -63,12 +63,12 @@ class ProjektesTable
->filters([ ->filters([
Filter::make('meine') Filter::make('meine')
->schema([ ->schema([
Toggle::make('meine')->label('Meine Projekte') Toggle::make('meine')->label('Meine Projekte'),
])->query(function (Builder $query, array $data): Builder { ])->query(function (Builder $query, array $data): Builder {
return $query->when( return $query->when(
$data['meine'], $data['meine'],
function (Builder $query, $meine) { function (Builder $query, $meine) {
$query->whereHas('projekt_users', function ($query) { $query->whereHas('projekt_users', function ($query) {
$query->where('projekt_users.user_id', auth()->user()->id); $query->where('projekt_users.user_id', auth()->user()->id);
}); });
} }
@@ -101,7 +101,7 @@ class ProjektesTable
->recordActions([ ->recordActions([
EditAction::make()->iconButton(), EditAction::make()->iconButton(),
Action::make('dokument_klonen') Action::make('dokument_klonen')
->action(fn(Projekte $record) => $record->duplicate()) ->action(fn (Projekte $record) => CloneProjekt::clone($record))
->iconButton() ->iconButton()
->icon('phosphor-copy') ->icon('phosphor-copy')
->requiresConfirmation(), ->requiresConfirmation(),
+1
View File
@@ -10,6 +10,7 @@ class ProjektObjekte extends Model
{ {
protected $fillable = [ protected $fillable = [
'projekte_id', 'projekte_id',
'projekte_cloned_from_id',
'orientierung_id', 'orientierung_id',
'nicht_in_orientierung', 'nicht_in_orientierung',
'top_nummer', 'top_nummer',
+1
View File
@@ -9,6 +9,7 @@ class ProjektObjekteImDetail extends Model
protected $fillable = [ protected $fillable = [
'projekte_id', 'projekte_id',
'projekt_objekte_id', 'projekt_objekte_id',
'projekte_objekte_cloned_from_id',
'methode_id', 'methode_id',
'top_nummer', 'top_nummer',
'geschoss', 'geschoss',
+1 -12
View File
@@ -7,18 +7,6 @@ use Illuminate\Database\Eloquent\Model;
class Projekte extends Model class Projekte extends Model
{ {
use \Bkwld\Cloner\Cloneable;
protected $cloneable_relations = [
'projekt_objekte',
'projekt_platzhalters',
'projekt_allgemeinflaechens',
'projekt_raeumealles',
'projekt_methodes',
'projekt_inhaltsverzeichnis',
'projekt_merkmale',
];
protected $primaryKey = 'id'; protected $primaryKey = 'id';
protected $fillable = [ protected $fillable = [
@@ -26,6 +14,7 @@ class Projekte extends Model
'konto_id', 'konto_id',
'auftraggeber_id', 'auftraggeber_id',
'gutachter_id', 'gutachter_id',
'cloned_from_id',
'interner_name', 'interner_name',
'offizieller_name', 'offizieller_name',
'ort', 'ort',
-7
View File
@@ -56,13 +56,6 @@
0 => 'BezhanSalleh\\FilamentShield\\FilamentShieldServiceProvider', 0 => 'BezhanSalleh\\FilamentShield\\FilamentShieldServiceProvider',
), ),
), ),
'bkwld/cloner' =>
array (
'providers' =>
array (
0 => 'Bkwld\\Cloner\\ServiceProvider',
),
),
'blade-ui-kit/blade-heroicons' => 'blade-ui-kit/blade-heroicons' =>
array ( array (
'providers' => 'providers' =>
+68 -70
View File
@@ -30,42 +30,41 @@
26 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', 26 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider',
27 => 'BezhanSalleh\\PluginEssentials\\PluginEssentialsServiceProvider', 27 => 'BezhanSalleh\\PluginEssentials\\PluginEssentialsServiceProvider',
28 => 'BezhanSalleh\\FilamentShield\\FilamentShieldServiceProvider', 28 => 'BezhanSalleh\\FilamentShield\\FilamentShieldServiceProvider',
29 => 'Bkwld\\Cloner\\ServiceProvider', 29 => 'BladeUI\\Heroicons\\BladeHeroiconsServiceProvider',
30 => 'BladeUI\\Heroicons\\BladeHeroiconsServiceProvider', 30 => 'BladeUI\\Icons\\BladeIconsServiceProvider',
31 => 'BladeUI\\Icons\\BladeIconsServiceProvider', 31 => 'Codeat3\\BladePhosphorIcons\\BladePhosphorIconsServiceProvider',
32 => 'Codeat3\\BladePhosphorIcons\\BladePhosphorIconsServiceProvider', 32 => 'Danielebarbaro\\LaravelVatEuValidator\\VatValidatorServiceProvider',
33 => 'Danielebarbaro\\LaravelVatEuValidator\\VatValidatorServiceProvider', 33 => 'Filament\\Actions\\ActionsServiceProvider',
34 => 'Filament\\Actions\\ActionsServiceProvider', 34 => 'Filament\\FilamentServiceProvider',
35 => 'Filament\\FilamentServiceProvider', 35 => 'Filament\\Forms\\FormsServiceProvider',
36 => 'Filament\\Forms\\FormsServiceProvider', 36 => 'Filament\\Infolists\\InfolistsServiceProvider',
37 => 'Filament\\Infolists\\InfolistsServiceProvider', 37 => 'Filament\\Notifications\\NotificationsServiceProvider',
38 => 'Filament\\Notifications\\NotificationsServiceProvider', 38 => 'Filament\\QueryBuilder\\QueryBuilderServiceProvider',
39 => 'Filament\\QueryBuilder\\QueryBuilderServiceProvider', 39 => 'Filament\\Schemas\\SchemasServiceProvider',
40 => 'Filament\\Schemas\\SchemasServiceProvider', 40 => 'Filament\\Support\\SupportServiceProvider',
41 => 'Filament\\Support\\SupportServiceProvider', 41 => 'Filament\\Tables\\TablesServiceProvider',
42 => 'Filament\\Tables\\TablesServiceProvider', 42 => 'Filament\\Widgets\\WidgetsServiceProvider',
43 => 'Filament\\Widgets\\WidgetsServiceProvider', 43 => 'JaOcero\\RadioDeck\\RadioDeckServiceProvider',
44 => 'JaOcero\\RadioDeck\\RadioDeckServiceProvider', 44 => 'Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider',
45 => 'Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider', 45 => 'Laravel\\Pail\\PailServiceProvider',
46 => 'Laravel\\Pail\\PailServiceProvider', 46 => 'Laravel\\Sail\\SailServiceProvider',
47 => 'Laravel\\Sail\\SailServiceProvider', 47 => 'Laravel\\Tinker\\TinkerServiceProvider',
48 => 'Laravel\\Tinker\\TinkerServiceProvider', 48 => 'Livewire\\LivewireServiceProvider',
49 => 'Livewire\\LivewireServiceProvider', 49 => 'MallardDuck\\LucideIcons\\BladeLucideIconsServiceProvider',
50 => 'MallardDuck\\LucideIcons\\BladeLucideIconsServiceProvider', 50 => 'Carbon\\Laravel\\ServiceProvider',
51 => 'Carbon\\Laravel\\ServiceProvider', 51 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
52 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', 52 => 'Termwind\\Laravel\\TermwindServiceProvider',
53 => 'Termwind\\Laravel\\TermwindServiceProvider', 53 => 'Pest\\Laravel\\PestServiceProvider',
54 => 'Pest\\Laravel\\PestServiceProvider', 54 => 'Propaganistas\\LaravelPhone\\PhoneServiceProvider',
55 => 'Propaganistas\\LaravelPhone\\PhoneServiceProvider', 55 => 'RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider',
56 => 'RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider', 56 => 'Spatie\\LoginLink\\LoginLinkServiceProvider',
57 => 'Spatie\\LoginLink\\LoginLinkServiceProvider', 57 => 'Spatie\\Permission\\PermissionServiceProvider',
58 => 'Spatie\\Permission\\PermissionServiceProvider', 58 => 'Swis\\Filament\\Backgrounds\\FilamentBackgroundsServiceProvider',
59 => 'Swis\\Filament\\Backgrounds\\FilamentBackgroundsServiceProvider', 59 => 'ToneGabes\\BetterOptions\\BetterOptionsServiceProvider',
60 => 'ToneGabes\\BetterOptions\\BetterOptionsServiceProvider', 60 => 'ToneGabes\\Filament\\Icons\\PhosphorIconsServiceProvider',
61 => 'ToneGabes\\Filament\\Icons\\PhosphorIconsServiceProvider', 61 => 'Ysfkaya\\FilamentPhoneInput\\FilamentPhoneInputServiceProvider',
62 => 'Ysfkaya\\FilamentPhoneInput\\FilamentPhoneInputServiceProvider', 62 => 'App\\Providers\\AppServiceProvider',
63 => 'App\\Providers\\AppServiceProvider', 63 => 'App\\Providers\\Filament\\AdminPanelProvider',
64 => 'App\\Providers\\Filament\\AdminPanelProvider',
), ),
'eager' => 'eager' =>
array ( array (
@@ -84,40 +83,39 @@
12 => 'Fruitcake\\LaravelDebugbar\\ServiceProvider', 12 => 'Fruitcake\\LaravelDebugbar\\ServiceProvider',
13 => 'BezhanSalleh\\PluginEssentials\\PluginEssentialsServiceProvider', 13 => 'BezhanSalleh\\PluginEssentials\\PluginEssentialsServiceProvider',
14 => 'BezhanSalleh\\FilamentShield\\FilamentShieldServiceProvider', 14 => 'BezhanSalleh\\FilamentShield\\FilamentShieldServiceProvider',
15 => 'Bkwld\\Cloner\\ServiceProvider', 15 => 'BladeUI\\Heroicons\\BladeHeroiconsServiceProvider',
16 => 'BladeUI\\Heroicons\\BladeHeroiconsServiceProvider', 16 => 'BladeUI\\Icons\\BladeIconsServiceProvider',
17 => 'BladeUI\\Icons\\BladeIconsServiceProvider', 17 => 'Codeat3\\BladePhosphorIcons\\BladePhosphorIconsServiceProvider',
18 => 'Codeat3\\BladePhosphorIcons\\BladePhosphorIconsServiceProvider', 18 => 'Danielebarbaro\\LaravelVatEuValidator\\VatValidatorServiceProvider',
19 => 'Danielebarbaro\\LaravelVatEuValidator\\VatValidatorServiceProvider', 19 => 'Filament\\Actions\\ActionsServiceProvider',
20 => 'Filament\\Actions\\ActionsServiceProvider', 20 => 'Filament\\FilamentServiceProvider',
21 => 'Filament\\FilamentServiceProvider', 21 => 'Filament\\Forms\\FormsServiceProvider',
22 => 'Filament\\Forms\\FormsServiceProvider', 22 => 'Filament\\Infolists\\InfolistsServiceProvider',
23 => 'Filament\\Infolists\\InfolistsServiceProvider', 23 => 'Filament\\Notifications\\NotificationsServiceProvider',
24 => 'Filament\\Notifications\\NotificationsServiceProvider', 24 => 'Filament\\QueryBuilder\\QueryBuilderServiceProvider',
25 => 'Filament\\QueryBuilder\\QueryBuilderServiceProvider', 25 => 'Filament\\Schemas\\SchemasServiceProvider',
26 => 'Filament\\Schemas\\SchemasServiceProvider', 26 => 'Filament\\Support\\SupportServiceProvider',
27 => 'Filament\\Support\\SupportServiceProvider', 27 => 'Filament\\Tables\\TablesServiceProvider',
28 => 'Filament\\Tables\\TablesServiceProvider', 28 => 'Filament\\Widgets\\WidgetsServiceProvider',
29 => 'Filament\\Widgets\\WidgetsServiceProvider', 29 => 'JaOcero\\RadioDeck\\RadioDeckServiceProvider',
30 => 'JaOcero\\RadioDeck\\RadioDeckServiceProvider', 30 => 'Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider',
31 => 'Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider', 31 => 'Laravel\\Pail\\PailServiceProvider',
32 => 'Laravel\\Pail\\PailServiceProvider', 32 => 'Livewire\\LivewireServiceProvider',
33 => 'Livewire\\LivewireServiceProvider', 33 => 'MallardDuck\\LucideIcons\\BladeLucideIconsServiceProvider',
34 => 'MallardDuck\\LucideIcons\\BladeLucideIconsServiceProvider', 34 => 'Carbon\\Laravel\\ServiceProvider',
35 => 'Carbon\\Laravel\\ServiceProvider', 35 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
36 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', 36 => 'Termwind\\Laravel\\TermwindServiceProvider',
37 => 'Termwind\\Laravel\\TermwindServiceProvider', 37 => 'Pest\\Laravel\\PestServiceProvider',
38 => 'Pest\\Laravel\\PestServiceProvider', 38 => 'Propaganistas\\LaravelPhone\\PhoneServiceProvider',
39 => 'Propaganistas\\LaravelPhone\\PhoneServiceProvider', 39 => 'RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider',
40 => 'RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider', 40 => 'Spatie\\LoginLink\\LoginLinkServiceProvider',
41 => 'Spatie\\LoginLink\\LoginLinkServiceProvider', 41 => 'Spatie\\Permission\\PermissionServiceProvider',
42 => 'Spatie\\Permission\\PermissionServiceProvider', 42 => 'Swis\\Filament\\Backgrounds\\FilamentBackgroundsServiceProvider',
43 => 'Swis\\Filament\\Backgrounds\\FilamentBackgroundsServiceProvider', 43 => 'ToneGabes\\BetterOptions\\BetterOptionsServiceProvider',
44 => 'ToneGabes\\BetterOptions\\BetterOptionsServiceProvider', 44 => 'ToneGabes\\Filament\\Icons\\PhosphorIconsServiceProvider',
45 => 'ToneGabes\\Filament\\Icons\\PhosphorIconsServiceProvider', 45 => 'Ysfkaya\\FilamentPhoneInput\\FilamentPhoneInputServiceProvider',
46 => 'Ysfkaya\\FilamentPhoneInput\\FilamentPhoneInputServiceProvider', 46 => 'App\\Providers\\AppServiceProvider',
47 => 'App\\Providers\\AppServiceProvider', 47 => 'App\\Providers\\Filament\\AdminPanelProvider',
48 => 'App\\Providers\\Filament\\AdminPanelProvider',
), ),
'deferred' => 'deferred' =>
array ( array (
+1 -2
View File
@@ -13,7 +13,6 @@
"agencetwogether/hookshelper": "^0.0.2", "agencetwogether/hookshelper": "^0.0.2",
"awcodes/light-switch": "^2.0", "awcodes/light-switch": "^2.0",
"bezhansalleh/filament-shield": "*", "bezhansalleh/filament-shield": "*",
"bkwld/cloner": "^3.15",
"codeat3/blade-phosphor-icons": "^2.3", "codeat3/blade-phosphor-icons": "^2.3",
"danielebarbaro/laravel-vat-eu-validator": "^2.0", "danielebarbaro/laravel-vat-eu-validator": "^2.0",
"filament/filament": "^4.1", "filament/filament": "^4.1",
@@ -95,4 +94,4 @@
}, },
"minimum-stability": "stable", "minimum-stability": "stable",
"prefer-stable": true "prefer-stable": true
} }
Generated
+13 -72
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "21aa51411bd3f27a2c9a20f59258663c", "content-hash": "79e067228741c162092a4bae8e49b147",
"packages": [ "packages": [
{ {
"name": "agencetwogether/hookshelper", "name": "agencetwogether/hookshelper",
@@ -390,65 +390,6 @@
], ],
"time": "2026-03-22T08:31:44+00:00" "time": "2026-03-22T08:31:44+00:00"
}, },
{
"name": "bkwld/cloner",
"version": "3.15.0",
"source": {
"type": "git",
"url": "https://github.com/BKWLD/cloner.git",
"reference": "eefeefd37818467d5d54d1343f4c81a9e1ca5733"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/BKWLD/cloner/zipball/eefeefd37818467d5d54d1343f4c81a9e1ca5733",
"reference": "eefeefd37818467d5d54d1343f4c81a9e1ca5733",
"shasum": ""
},
"require": {
"illuminate/support": "^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0",
"php": ">=7.1"
},
"require-dev": {
"bkwld/upchuck": "^2.6@dev",
"illuminate/database": "^5.5|^6.0|^10.0|^11.0|^12.0|^13.0",
"league/flysystem-vfs": "^1.0",
"mockery/mockery": "^1.2.3",
"phpunit/phpunit": "~6.0|~8.0|^9.5.10|^10.5",
"satooshi/php-coveralls": "^1.0"
},
"suggest": {
"bkwld/upchuck": "Required for replicating of files."
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Bkwld\\Cloner\\ServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Bkwld\\Cloner\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Robert Reinhard",
"email": "info@bkwld.com"
}
],
"description": "A trait for Laravel Eloquent models that lets you clone of a model and it's relationships, including files.",
"support": {
"issues": "https://github.com/BKWLD/cloner/issues",
"source": "https://github.com/BKWLD/cloner/tree/3.15.0"
},
"time": "2026-05-27T16:34:53+00:00"
},
{ {
"name": "blade-ui-kit/blade-heroicons", "name": "blade-ui-kit/blade-heroicons",
"version": "2.7.0", "version": "2.7.0",
@@ -2157,16 +2098,16 @@
}, },
{ {
"name": "giggsey/libphonenumber-for-php-lite", "name": "giggsey/libphonenumber-for-php-lite",
"version": "9.0.33", "version": "9.0.34",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/giggsey/libphonenumber-for-php-lite.git", "url": "https://github.com/giggsey/libphonenumber-for-php-lite.git",
"reference": "38c09da75cebfd6f197b61e57b3a655db04163e6" "reference": "a9f129a296b1e31f7f9b73fd81845415d302bee2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/38c09da75cebfd6f197b61e57b3a655db04163e6", "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/a9f129a296b1e31f7f9b73fd81845415d302bee2",
"reference": "38c09da75cebfd6f197b61e57b3a655db04163e6", "reference": "a9f129a296b1e31f7f9b73fd81845415d302bee2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2231,7 +2172,7 @@
"issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues", "issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues",
"source": "https://github.com/giggsey/libphonenumber-for-php-lite" "source": "https://github.com/giggsey/libphonenumber-for-php-lite"
}, },
"time": "2026-06-22T10:35:37+00:00" "time": "2026-07-03T10:23:06+00:00"
}, },
{ {
"name": "graham-campbell/result-type", "name": "graham-campbell/result-type",
@@ -11980,16 +11921,16 @@
}, },
{ {
"name": "php-debugbar/php-debugbar", "name": "php-debugbar/php-debugbar",
"version": "v3.7.6", "version": "v3.8.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-debugbar/php-debugbar.git", "url": "https://github.com/php-debugbar/php-debugbar.git",
"reference": "1690ee1728827f9deb4b60457fa387cf44672c56" "reference": "18ced90d4b882ed449b2278fea8692f8f7d1c13c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/1690ee1728827f9deb4b60457fa387cf44672c56", "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/18ced90d4b882ed449b2278fea8692f8f7d1c13c",
"reference": "1690ee1728827f9deb4b60457fa387cf44672c56", "reference": "18ced90d4b882ed449b2278fea8692f8f7d1c13c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -12031,7 +11972,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0-dev" "dev-master": "3.8-dev"
} }
}, },
"autoload": { "autoload": {
@@ -12066,7 +12007,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-debugbar/php-debugbar/issues", "issues": "https://github.com/php-debugbar/php-debugbar/issues",
"source": "https://github.com/php-debugbar/php-debugbar/tree/v3.7.6" "source": "https://github.com/php-debugbar/php-debugbar/tree/v3.8.0"
}, },
"funding": [ "funding": [
{ {
@@ -12078,7 +12019,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-04-30T07:31:44+00:00" "time": "2026-07-02T12:38:20+00:00"
}, },
{ {
"name": "php-debugbar/symfony-bridge", "name": "php-debugbar/symfony-bridge",
@@ -16,6 +16,7 @@ return new class extends Migration
$table->foreignId('konto_id')->constrained(); $table->foreignId('konto_id')->constrained();
$table->foreignId('auftraggeber_id')->constrained(); $table->foreignId('auftraggeber_id')->constrained();
$table->foreignId('gutachter_id')->constrained(); $table->foreignId('gutachter_id')->constrained();
$table->integer('cloned_from_id')->default(0);
$table->string('interner_name'); $table->string('interner_name');
$table->string('offizieller_name')->nullable(); $table->string('offizieller_name')->nullable();
$table->string('ort')->nullable(); $table->string('ort')->nullable();
@@ -14,6 +14,7 @@ return new class extends Migration
Schema::create('projekt_objektes', function (Blueprint $table) { Schema::create('projekt_objektes', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('projekte_id')->constrained()->cascadeOnDelete(); $table->foreignId('projekte_id')->constrained()->cascadeOnDelete();
$table->integer('projekte_cloned_from_id')->default(0);
$table->integer('orientierung_id')->nullable()->default(0); $table->integer('orientierung_id')->nullable()->default(0);
$table->boolean('nicht_in_orientierung')->default(0); $table->boolean('nicht_in_orientierung')->default(0);
$table->string('top_nummer')->nullable(); $table->string('top_nummer')->nullable();
@@ -14,6 +14,7 @@ return new class extends Migration
Schema::create('projekt_objekte_im_details', function (Blueprint $table) { Schema::create('projekt_objekte_im_details', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('projekte_id')->constrained()->cascadeOnDelete(); $table->foreignId('projekte_id')->constrained()->cascadeOnDelete();
$table->integer('projekte_objekte_cloned_from_id')->default(0);
$table->foreignId('projekt_objekte_id')->constrained()->cascadeOnDelete(); $table->foreignId('projekt_objekte_id')->constrained()->cascadeOnDelete();
$table->foreignId('projekt_methode_id'); $table->foreignId('projekt_methode_id');
$table->string('geschoss')->nullable(); $table->string('geschoss')->nullable();