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 @@ +