resetPage(); } public function updatedTypeFilter(): void { $this->resetPage(); } public function updatedWithdrawalStatusFilter(): void { $this->resetPage('withdrawals'); } public function updatedTerminationStatusFilter(): void { $this->resetPage('terminations'); } /** * Widerruf als erledigt markieren (Rückabwicklung angestoßen/abgeschlossen). */ public function resolveWithdrawal(int $id): void { WithdrawalRequest::query()->findOrFail($id)->update([ 'status' => 'resolved', 'resolved_at' => now(), ]); } public function reopenWithdrawal(int $id): void { WithdrawalRequest::query()->findOrFail($id)->update([ 'status' => 'open', 'resolved_at' => null, ]); } /** * Kündigung (§ 312k) als erledigt markieren (Vertrag beendet, Kunde hat * die Bestätigung des Beendigungszeitpunkts erhalten). */ public function resolveTermination(int $id): void { TerminationRequest::query()->findOrFail($id)->update([ 'status' => 'resolved', 'resolved_at' => now(), ]); } public function reopenTermination(int $id): void { TerminationRequest::query()->findOrFail($id)->update([ 'status' => 'open', 'resolved_at' => null, ]); } public function with(): array { $requests = LegalRequest::query() ->with('pressRelease:id,title,slug') ->when($this->statusFilter === 'open', fn ($query) => $query->open()) ->when(! in_array($this->statusFilter, ['open', 'all'], true), fn ($query) => $query->where('status', $this->statusFilter)) ->when($this->typeFilter !== 'all', fn ($query) => $query->where('type', $this->typeFilter)) ->latest() ->paginate(50); $withdrawals = WithdrawalRequest::query() ->when($this->withdrawalStatusFilter === 'open', fn ($query) => $query->open()) ->when($this->withdrawalStatusFilter === 'resolved', fn ($query) => $query->where('status', 'resolved')) ->latest() ->paginate(25, pageName: 'withdrawals'); $terminations = TerminationRequest::query() ->when($this->terminationStatusFilter === 'open', fn ($query) => $query->open()) ->when($this->terminationStatusFilter === 'resolved', fn ($query) => $query->where('status', 'resolved')) ->latest() ->paginate(25, pageName: 'terminations'); return [ 'requests' => $requests, 'typeOptions' => LegalRequestType::cases(), 'openCount' => LegalRequest::query()->open()->count(), 'totalCount' => LegalRequest::query()->count(), 'withdrawals' => $withdrawals, 'openWithdrawalCount' => WithdrawalRequest::query()->open()->count(), 'terminations' => $terminations, 'openTerminationCount' => TerminationRequest::query()->open()->count(), ]; } public function statusBadgeClass(LegalRequestStatus $status): string { return match ($status) { LegalRequestStatus::Open => 'warn', LegalRequestStatus::InProgress => 'hub', LegalRequestStatus::Resolved => 'ok', LegalRequestStatus::Rejected => 'err', }; } }; ?>
{{ __('Online-Widerrufe über den „Vertrag widerrufen"-Button laufen hier auf. Die Eingangsbestätigung an den Verbraucher wird automatisch versendet.') }}
{{ \Illuminate\Support\Str::limit($termination->reason, 90) }}
@endif{{ __('Vertrag/Rechnung:') }} {{ $termination->contract_reference }}
@endif{{ __('Online-Kündigungen über den Kündigungsbutton (§ 312k BGB) laufen hier auf. Die Zugangsbestätigung an den Verbraucher wird automatisch versendet – der Beendigungszeitpunkt muss manuell bestätigt werden.') }}