This commit is contained in:
Dr Masroor Ehsan 2025-01-13 23:52:30 +06:00
parent 2800786c94
commit 2a38df9383
2 changed files with 28 additions and 3 deletions

View File

@ -7,6 +7,7 @@
use App\Http\Controllers\HashidControllerBase; use App\Http\Controllers\HashidControllerBase;
use App\Http\Requests\StudyMetadataUpdateRequest; use App\Http\Requests\StudyMetadataUpdateRequest;
use App\Models\Study; use App\Models\Study;
use App\Services\AuditTrail\Activity;
class MetadataController extends HashidControllerBase class MetadataController extends HashidControllerBase
{ {
@ -14,7 +15,7 @@ public function view()
{ {
abort_unless(auth()->user()->may(Permission::StudyMetadataView), 403); abort_unless(auth()->user()->may(Permission::StudyMetadataView), 403);
$this->decodeKeys(); $this->decodeKeys();
$study = Study::find($this->key); $study = Study::findOrFail($this->key);
return view('staff.meta.view', compact('study')); return view('staff.meta.view', compact('study'));
} }
@ -23,7 +24,20 @@ public function edit()
{ {
abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403); abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403);
$this->decodeKeys(); $this->decodeKeys();
$study = Study::find($this->key); $study = Study::findOrFail($this->key);
if (in_array($study->report_status->value, [
ReportStatus::Finalized->value,
ReportStatus::Approved->value,
],
true)) {
return view('content.pages.notice', [
'title' => 'Study Locked',
'color' => 'danger',
'heading' => 'Study Locked',
'message' => 'Study metadata cannot be edited once the report has been finalized.',
]);
}
return view('staff.meta.edit', compact('study')); return view('staff.meta.edit', compact('study'));
} }
@ -33,12 +47,21 @@ public function save(StudyMetadataUpdateRequest $request)
abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403); abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403);
$this->decodeKeys(); $this->decodeKeys();
$study = Study::findOrFail($this->key); $study = Study::findOrFail($this->key);
abort_if($study->report_status->value >= ReportStatus::Finalized->value, 403);
$payload = array_trim_strings($request->validated()); $payload = array_trim_strings($request->validated());
$payload['body_part_examined'] = strtoupper($payload['body_part_examined']);
$payload['patient_sex'] = strtoupper($payload['patient_sex']);
if ($request->has('cancel_read')) { if ($request->has('cancel_read')) {
// lock the study if report is not needed
$payload['report_status'] = ReportStatus::Cancelled->value; $payload['report_status'] = ReportStatus::Cancelled->value;
$payload['locked_at'] = now();
unset($payload['cancel_read']); unset($payload['cancel_read']);
} }
$study->update($payload); $study->update($payload);
audit()
->on($study)
->did(Activity::Study_Metadata_Edit)
->log();
// return redirect()->route('staff.history.view', _h($this->key)); // return redirect()->route('staff.history.view', _h($this->key));
return view('content.pages.close-window'); return view('content.pages.close-window');

View File

@ -35,4 +35,6 @@ public function authorize(): bool
{ {
return true; return true;
} }
public function validateResolved() {}
} }