Files
Virtnet.bond/extensions/Others/ComplianceTools/Admin/Resources/DeletionRequestResource/Pages/ViewDeletionRequest.php
2025-11-30 11:57:22 +01:00

60 lines
2.6 KiB
PHP

<?php
namespace Paymenter\Extensions\Others\ComplianceTools\Admin\Resources\DeletionRequestResource\Pages;
use Filament\Actions\Action;
use Filament\Forms\Components\Textarea;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\ViewRecord;
use Illuminate\Support\Facades\Auth;
use Paymenter\Extensions\Others\ComplianceTools\Admin\Resources\DeletionRequestResource;
use Paymenter\Extensions\Others\ComplianceTools\Models\AccountDeletionRequest;
use Paymenter\Extensions\Others\ComplianceTools\Services\AccountDeletionService;
class ViewDeletionRequest extends ViewRecord
{
protected static string $resource = DeletionRequestResource::class;
protected function getHeaderActions(): array
{
return [
Action::make('approve')
->label('Approve & anonymise')
->icon('heroicon-o-check-circle')
->color('success')
->visible(fn () => $this->record->status !== AccountDeletionRequest::STATUS_COMPLETED)
->form([
Textarea::make('notes')->label('Internal notes')->rows(3),
])
->requiresConfirmation()
->action(function (array $data, AccountDeletionService $service) {
$service->approve($this->record, Auth::user(), $data['notes'] ?? null);
$this->record->refresh();
Notification::make()
->title('Account anonymised successfully')
->success()
->send();
})
->authorize(fn () => Auth::user()?->can('update', $this->record) ?? false),
Action::make('deny')
->label('Deny request')
->icon('heroicon-o-x-circle')
->color('danger')
->visible(fn () => $this->record->status === AccountDeletionRequest::STATUS_PENDING)
->form([
Textarea::make('notes')->label('Internal notes')->rows(3)->required(),
])
->requiresConfirmation()
->action(function (array $data, AccountDeletionService $service) {
$service->deny($this->record, Auth::user(), $data['notes'] ?? null);
$this->record->refresh();
Notification::make()
->title('Deletion request marked as denied')
->success()
->send();
})
->authorize(fn () => Auth::user()?->can('update', $this->record) ?? false),
];
}
}