diff --git a/app/Filament/Training/Pages/Exam/ViewExamReport.php b/app/Filament/Training/Pages/Exam/ViewExamReport.php index 04a1020a5..333277421 100644 --- a/app/Filament/Training/Pages/Exam/ViewExamReport.php +++ b/app/Filament/Training/Pages/Exam/ViewExamReport.php @@ -4,12 +4,16 @@ use App\Infolists\Components\PracticalExamCriteriaResult; use App\Models\Cts\PracticalResult; +use Filament\Forms\Components\Select; +use Filament\Forms\Components\Textarea; use Filament\Infolists\Components\RepeatableEntry; use Filament\Infolists\Components\Section; use Filament\Infolists\Components\TextEntry; use Filament\Infolists\Concerns\InteractsWithInfolists; use Filament\Infolists\Contracts\HasInfolists; use Filament\Infolists\Infolist; +use Filament\Notifications\Notification; +use Filament\Pages\Actions\Action as PageAction; use Filament\Pages\Page; class ViewExamReport extends Page implements HasInfolists @@ -48,6 +52,43 @@ public function mount(): void } } + public function getActions(): array + { + return [ + PageAction::make('changeResult') + ->label('Change Result') + ->icon('heroicon-o-pencil') + ->visible(fn () => auth()->user()->can('training.exams.override')) + ->form([ + Select::make('result') + ->label('Result') + ->options([ + PracticalResult::PASSED => 'Passed', + PracticalResult::FAILED => 'Failed', + PracticalResult::INCOMPLETE => 'Incomplete', + ]) + ->required(), + Textarea::make('notes') + ->label('Additional Comments') + ->rows(4) + ->default(fn () => $this->practicalResult->notes), + ]) + ->modalHeading('Change Exam Result') + ->modalSubHeading('Update the result and comments for this exam report.') + ->action(function (array $data) { + $this->practicalResult->result = $data['result']; + $this->practicalResult->notes = $data['notes']; + $this->practicalResult->save(); + + $this->practicalResult->refresh(); + Notification::make() + ->title('Exam result updated successfully.') + ->success() + ->send(); + }), + ]; + } + public function infolist(Infolist $infolist): Infolist { return $infolist->record($this->practicalResult)->schema([ diff --git a/database/seeders/RolesAndPermissionsSeeder.php b/database/seeders/RolesAndPermissionsSeeder.php index bcf0804f9..5839bff83 100644 --- a/database/seeders/RolesAndPermissionsSeeder.php +++ b/database/seeders/RolesAndPermissionsSeeder.php @@ -41,6 +41,7 @@ public function run() // Training Panel Permissions 'training.access', 'training.exams.access', + 'training.exams.override', 'training.exams.setup', 'training.exams.conduct.*', 'training.exams.conduct.obs',