diff --git a/app/Http/Controllers/HashedStudyControllerBase.php b/app/Http/Controllers/HashedStudyControllerBase.php new file mode 100644 index 0000000..b36e653 --- /dev/null +++ b/app/Http/Controllers/HashedStudyControllerBase.php @@ -0,0 +1,18 @@ +decodeKeys(); + $this->study = Study::findOrFail($this->key); + + return $this->study; + } +} diff --git a/app/Http/Controllers/Staff/MetadataController.php b/app/Http/Controllers/Staff/MetadataController.php index 6a0e64c..01053d9 100644 --- a/app/Http/Controllers/Staff/MetadataController.php +++ b/app/Http/Controllers/Staff/MetadataController.php @@ -4,18 +4,17 @@ use App\Domain\ACL\Permission; use App\Domain\Report\ReportStatus; -use App\Http\Controllers\HashidControllerBase; +use App\Http\Controllers\HashedStudyControllerBase; use App\Http\Requests\StudyMetadataUpdateRequest; use App\Models\Study; use App\Services\AuditTrail\Activity; -class MetadataController extends HashidControllerBase +class MetadataController extends HashedStudyControllerBase { public function view() { abort_unless(auth()->user()->may(Permission::StudyMetadataView), 403); - $this->decodeKeys(); - $study = Study::findOrFail($this->key); + $study = $this->getStudy(); return view('staff.meta.view', compact('study')); } @@ -23,8 +22,7 @@ public function view() public function edit() { abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403); - $this->decodeKeys(); - $study = Study::findOrFail($this->key); + $study = $this->getStudy(); if ($study->isReportReady()) { return view('content.pages.notice', [ @@ -41,9 +39,9 @@ public function edit() public function save(StudyMetadataUpdateRequest $request) { abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403); - $this->decodeKeys(); - $study = Study::findOrFail($this->key); + $study = $this->getStudy(); abort_if($study->report_status->value >= ReportStatus::Finalized->value, 403); + $payload = array_trim_strings($request->validated()); $payload['body_part_examined'] = strtoupper($payload['body_part_examined']); $payload['patient_sex'] = strtoupper($payload['patient_sex']); @@ -53,6 +51,7 @@ public function save(StudyMetadataUpdateRequest $request) $payload['locked_at'] = now(); unset($payload['cancel_read']); } + $study->update($payload); audit() ->on($study)