From 527739b996d320b4b5982208e7236b5fbc1c16d5 Mon Sep 17 00:00:00 2001 From: salam Date: Tue, 23 Sep 2025 16:04:31 +0200 Subject: [PATCH] projekte --- app/Enums/ProjektStatus.php | 41 +++++++++++ .../Clusters/Projekte/ProjekteCluster.php | 14 ++++ .../Resources/Methodes/MethodeResource.php | 66 +++++++++++++++++ .../Methodes/Pages/CreateMethode.php | 11 +++ .../Resources/Methodes/Pages/EditMethode.php | 19 +++++ .../Resources/Methodes/Pages/ListMethodes.php | 19 +++++ .../Methodes/Schemas/MethodeForm.php | 16 +++++ .../Methodes/Tables/MethodesTable.php | 30 ++++++++ .../Projektes/Pages/CreateProjekte.php | 11 +++ .../Projektes/Pages/EditProjekte.php | 19 +++++ .../Projektes/Pages/ListProjektes.php | 19 +++++ .../Resources/Projektes/ProjekteResource.php | 63 +++++++++++++++++ .../Projektes/Schemas/ProjekteForm.php | 16 +++++ .../Projektes/Tables/ProjektesTable.php | 30 ++++++++ app/Models/Methode.php | 10 +++ app/Models/Projekte.php | 10 +++ app/Policies/ProjektePolicy.php | 70 +++++++++++++++++++ ...025_09_23_135826_create_methodes_table.php | 29 ++++++++ ...25_11_23_131440_create_projektes_table.php | 36 ++++++++++ database/seeders/MethodeSeeder.php | 17 +++++ 20 files changed, 546 insertions(+) create mode 100644 app/Enums/ProjektStatus.php create mode 100644 app/Filament/Clusters/Projekte/ProjekteCluster.php create mode 100644 app/Filament/Resources/Methodes/MethodeResource.php create mode 100644 app/Filament/Resources/Methodes/Pages/CreateMethode.php create mode 100644 app/Filament/Resources/Methodes/Pages/EditMethode.php create mode 100644 app/Filament/Resources/Methodes/Pages/ListMethodes.php create mode 100644 app/Filament/Resources/Methodes/Schemas/MethodeForm.php create mode 100644 app/Filament/Resources/Methodes/Tables/MethodesTable.php create mode 100644 app/Filament/Resources/Projektes/Pages/CreateProjekte.php create mode 100644 app/Filament/Resources/Projektes/Pages/EditProjekte.php create mode 100644 app/Filament/Resources/Projektes/Pages/ListProjektes.php create mode 100644 app/Filament/Resources/Projektes/ProjekteResource.php create mode 100644 app/Filament/Resources/Projektes/Schemas/ProjekteForm.php create mode 100644 app/Filament/Resources/Projektes/Tables/ProjektesTable.php create mode 100644 app/Models/Methode.php create mode 100644 app/Models/Projekte.php create mode 100644 app/Policies/ProjektePolicy.php create mode 100644 database/migrations/2025_09_23_135826_create_methodes_table.php create mode 100644 database/migrations/2025_11_23_131440_create_projektes_table.php create mode 100644 database/seeders/MethodeSeeder.php diff --git a/app/Enums/ProjektStatus.php b/app/Enums/ProjektStatus.php new file mode 100644 index 0000000..48e73ab --- /dev/null +++ b/app/Enums/ProjektStatus.php @@ -0,0 +1,41 @@ + 'Test', + self::ENTWURF => 'Entwurf', + self::ENFASSUNG => 'Endfassung', + }; + } + + public function getColor(): string|array|null + { + return match ($this) { + self::TEST => 'gray', + self::ENTWURF => 'primary', + self::ENFASSUNG => 'success', + }; + } + + public function getIcon(): ?string + { + return match ($this) { + self::TEST => 'lucide-file-cog', + self::ENTWURF => 'lucide-file-pen', + self::ENFASSUNG => 'lucide-file-check', + }; + } +} diff --git a/app/Filament/Clusters/Projekte/ProjekteCluster.php b/app/Filament/Clusters/Projekte/ProjekteCluster.php new file mode 100644 index 0000000..ea7900e --- /dev/null +++ b/app/Filament/Clusters/Projekte/ProjekteCluster.php @@ -0,0 +1,14 @@ + ListMethodes::route('/'), + 'create' => CreateMethode::route('/create'), + 'edit' => EditMethode::route('/{record}/edit'), + ]; + } + + public static function getNavigationBadge(): ?string + { + return parent::getEloquentQuery()->count(); + } +} diff --git a/app/Filament/Resources/Methodes/Pages/CreateMethode.php b/app/Filament/Resources/Methodes/Pages/CreateMethode.php new file mode 100644 index 0000000..10fef52 --- /dev/null +++ b/app/Filament/Resources/Methodes/Pages/CreateMethode.php @@ -0,0 +1,11 @@ +components([ + // + ]); + } +} diff --git a/app/Filament/Resources/Methodes/Tables/MethodesTable.php b/app/Filament/Resources/Methodes/Tables/MethodesTable.php new file mode 100644 index 0000000..1940cdc --- /dev/null +++ b/app/Filament/Resources/Methodes/Tables/MethodesTable.php @@ -0,0 +1,30 @@ +columns([ + // + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Filament/Resources/Projektes/Pages/CreateProjekte.php b/app/Filament/Resources/Projektes/Pages/CreateProjekte.php new file mode 100644 index 0000000..584ff1d --- /dev/null +++ b/app/Filament/Resources/Projektes/Pages/CreateProjekte.php @@ -0,0 +1,11 @@ + ListProjektes::route('/'), + 'create' => CreateProjekte::route('/create'), + 'edit' => EditProjekte::route('/{record}/edit'), + ]; + } + + public static function getNavigationBadge(): ?string + { + return parent::getEloquentQuery()->count(); + } +} diff --git a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php new file mode 100644 index 0000000..707848a --- /dev/null +++ b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php @@ -0,0 +1,16 @@ +components([ + // + ]); + } +} diff --git a/app/Filament/Resources/Projektes/Tables/ProjektesTable.php b/app/Filament/Resources/Projektes/Tables/ProjektesTable.php new file mode 100644 index 0000000..851dcce --- /dev/null +++ b/app/Filament/Resources/Projektes/Tables/ProjektesTable.php @@ -0,0 +1,30 @@ +columns([ + // + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Models/Methode.php b/app/Models/Methode.php new file mode 100644 index 0000000..d49f0fb --- /dev/null +++ b/app/Models/Methode.php @@ -0,0 +1,10 @@ +can('ViewAny:Projekte'); + } + + public function view(AuthUser $authUser, Projekte $projekte): bool + { + return $authUser->can('View:Projekte'); + } + + public function create(AuthUser $authUser): bool + { + return $authUser->can('Create:Projekte'); + } + + public function update(AuthUser $authUser, Projekte $projekte): bool + { + return $authUser->can('Update:Projekte'); + } + + public function delete(AuthUser $authUser, Projekte $projekte): bool + { + return $authUser->can('Delete:Projekte'); + } + + public function restore(AuthUser $authUser, Projekte $projekte): bool + { + return $authUser->can('Restore:Projekte'); + } + + public function forceDelete(AuthUser $authUser, Projekte $projekte): bool + { + return $authUser->can('ForceDelete:Projekte'); + } + + public function forceDeleteAny(AuthUser $authUser): bool + { + return $authUser->can('ForceDeleteAny:Projekte'); + } + + public function restoreAny(AuthUser $authUser): bool + { + return $authUser->can('RestoreAny:Projekte'); + } + + public function replicate(AuthUser $authUser, Projekte $projekte): bool + { + return $authUser->can('Replicate:Projekte'); + } + + public function reorder(AuthUser $authUser): bool + { + return $authUser->can('Reorder:Projekte'); + } + +} \ No newline at end of file diff --git a/database/migrations/2025_09_23_135826_create_methodes_table.php b/database/migrations/2025_09_23_135826_create_methodes_table.php new file mode 100644 index 0000000..b871eaa --- /dev/null +++ b/database/migrations/2025_09_23_135826_create_methodes_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('name'); + $table->string('description'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('methodes'); + } +}; diff --git a/database/migrations/2025_11_23_131440_create_projektes_table.php b/database/migrations/2025_11_23_131440_create_projektes_table.php new file mode 100644 index 0000000..384529d --- /dev/null +++ b/database/migrations/2025_11_23_131440_create_projektes_table.php @@ -0,0 +1,36 @@ +id(); + $table->foreignId('konto_id')->constrained(); + $table->foreignId('auftraggeber_id')->constrained(); + $table->foreignId('gutachter_id')->constrained(); + $table->string('interner_name'); + $table->string('ofizieller_name'); + $table->text('beschreibung')->nullable(); + $table->string('erstellung')->nullable(); + $table->string('status')->default('entwurf'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('projektes'); + } +}; diff --git a/database/seeders/MethodeSeeder.php b/database/seeders/MethodeSeeder.php new file mode 100644 index 0000000..b480e0d --- /dev/null +++ b/database/seeders/MethodeSeeder.php @@ -0,0 +1,17 @@ +