hidden(fn ($record): bool => $record->bezahlt_am ? false : true) ->importer(ProjektAllgemeinflaechenImporter::class) ->modalHeading('Allgemeinflächen Import') ->modalContent(view('filament.pages.actions.import-allgemeinflaechen')) ->modalContentFooter(view('filament.pages.actions.footer-allgemeinflaechen')) ->label('Allgemeinflächen') ->icon('phosphor-upload') ->extraModalFooterActions([ Action::make('delete') ->label('Tabelle leeren') ->color('danger') ->requiresConfirmation() ->action(function ($record) { ProjektAllgemeinflaechen::where('projekte_id', $record->id)->delete(); $this->record->refresh(); Notification::make() ->title('Tabelle geleert') ->success() ->send(); }), ]) ->options(function ($record) { return ['projekte_id' => $record->id]; }) ->fileRules([ File::types(['csv', 'txt'])->max(1024), ]), ImportAction::make('import_objekte') ->hidden(fn ($record): bool => $record->bezahlt_am ? false : true) ->importer(ProjektObjekteImDetailImporter::class) ->modalHeading('Objekte im Detail Import') ->modalContent(view('filament.pages.actions.import-objektemitraeumen')) ->modalContentFooter(view('filament.pages.actions.footer-objektemitraeumen')) ->label('Objekte') ->icon('phosphor-upload') ->extraModalFooterActions([ Action::make('delete') ->label('Tabellen leeren') ->color('danger') ->requiresConfirmation() ->action(function ($record) { ProjektObjekteImDetail::where('projekte_id', $record->id)->delete(); ProjektObjekte::where('projekte_id', $record->id)->delete(); $this->record->refresh(); Notification::make() ->title('Tabellen geleert') ->success() ->send(); }), ]) ->options(function ($record) { return ['projekte_id' => $record->id]; }) ->fileRules([ File::types(['csv', 'txt'])->max(1024), ]), ])->label('Importieren') ->icon('phosphor-upload') ->color('info') ->button(), /** * FREISCHALTEN * auth()->user()->konto->guthaben */ Action::make('freischalten') ->hidden(fn ($record): bool => $record->bezahlt_am ? true : false) ->visible(fn (): bool => auth()->user()->konto->guthaben) ->requiresConfirmation() ->modalHeading('Gutachten freischalten?') ->tooltip('Von Ihrem Guthaben wird ein Punkt abgezogen.') ->modalIcon('phosphor-coins') ->modalDescription('Von Ihrem Guthaben wird ein Punkt abgezogen.') ->modalSubmitActionLabel('Bezahlen') ->action(function ($record) { if (Konto::where('id', $record['konto_id'])->where('guthaben', '>', 0)->get()) { Konto::where('id', $record['konto_id'])->decrement('guthaben', 1); Projekte::where('id', $record['id'])->update(['bezahlt_am' => \Carbon\Carbon::now()]); $this->record->refresh(); Notification::make() ->title('Gutachten freischaltet') ->success() ->send(); } }), Action::make('bezahlen') ->color('danger') ->hidden(fn ($record): bool => $record->bezahlt_am ? true : false) ->visible(fn (): bool => ! auth()->user()->konto->guthaben) ->label('Konto laden') ->tooltip('Konto laden um Gutachten freizuschalten.') ->requiresConfirmation() ->modalHeading('Kein Guthaben') ->modalIcon('heroicon-o-exclamation-triangle') ->modalDescription('Bitte laden sie Ihr Konto auf') ->modalSubmitActionLabel('Konto aufladen'), /** * EVALUATE */ Action::make('evaluate_gutachten') ->hidden(fn ($record): bool => $record->bezahlt_am && ! $record->evaluation_gutachten ? false : true) ->color('success') ->label('Evaluieren') ->icon('phosphor-eye') ->action(function ($record): void { GutachtenValidation::controll($record); $this->record->refresh(); }), /** * BERECHNEN */ ActionGroup::make([ Action::make('make_gutachten') ->hidden(fn ($record): bool => (! $record->bezahlt_am || $record->pdf_gutachten_status || ! $record->evaluation_gutachten) ? true : false) ->label('Gutachten berechnen') ->icon('phosphor-calculator') ->url(fn ($record) => route('standard.download', ['record' => $record, 'mode' => 'new'])) ->openUrlInNewTab(), /** * NUTZWERTE */ Action::make('make_nutzwerte') ->hidden(fn ($record): bool => (! $record->bezahlt_am || $record->pdf_nutzwerte_status || ! $record->evaluation_gutachten) ? true : false) ->label('Nutzwerte berechnen') ->icon('phosphor-calculator') ->url(fn ($record) => route('nutzwerte.download', ['record' => $record, 'mode' => 'new'])) ->openUrlInNewTab(), ])->label('Berechnen') ->icon('phosphor-calculator') ->color('info') ->button(), /** * DOWNLOAD */ ActionGroup::make([ /** * GUTACHTEN */ Action::make('download-gutachten') ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->pdf_gutachten_status) ? true : false) ->color('success') ->label('Download Gutachten') ->icon('icon-pdf') ->url(fn ($record) => route('standard.download', ['record' => $record, 'mode' => 'file'])) ->openUrlInNewTab(), /** * NUTZWERTE */ Action::make('download-nutzwerte') ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->pdf_nutzwerte_status) ? true : false) ->color('success') ->label('Download Nutzwerte') ->icon('icon-pdf') ->url(fn ($record) => route('nutzwerte.download', ['record' => $record, 'mode' => 'file'])) ->openUrlInNewTab(), /** * EXCEL */ Action::make('excel-nutzflaeche-nutzwerte') ->label('Nutzfläche & Nutzwerte') ->icon('icon-excel') ->url(fn ($record) => route('excel.download', ['record' => $record, 'mode' => 'file'])) ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->evaluation_gutachten) ? true : false) ->openUrlInNewTab(), Action::make('excel-nutzflaechen-aufstellung') ->label('Nutzflächen Aufstellung') ->icon('icon-excel') ->url(fn ($record) => route('excel.download', ['record' => $record, 'mode' => 'file'])) ->hidden(fn ($record): bool => (! $record->bezahlt_am || ! $record->evaluation_gutachten) ? true : false) ->openUrlInNewTab(), ])->label('Export') ->icon('phosphor-download') ->color('info') ->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.'), ]; } protected function getSavedNotificationTitle(): ?string { return 'Projekt Änderungen gespeichert'; } }