60 lines
2.6 KiB
PHP
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),
|
|
];
|
|
}
|
|
}
|