may(Permission::AttachmentUpload), 403); $study = $this->getStudy(); $request->validate([ 'file.*' => 'required|mimes:pdf,jpg,jpeg,png|max:2048', ]); foreach ($request->file('file') as $file) { $study->addMedia($file)->toMediaCollection(Study::MEDIA_COLLECTION); } audit() ->did(Activity::Attachment_Upload) ->on($study) ->log(); return response()->json(['success' => 'Files uploaded successfully']); } public function delete(string $hashId, int $mediaId) { abort_unless(me()->may(Permission::AttachmentUpload), 403); $study = $this->getStudy(); $media = $study->getMedia(Study::MEDIA_COLLECTION)->where('id', $mediaId)->first(); if ($media !== null) { $media->delete(); audit() ->did(Activity::Attachment_Delete) ->on($study) ->log(); return redirect()->back()->with('success', 'File deleted successfully'); } return redirect()->back()->with('error', 'File not found'); } public function view(string $uuid) { $media = Media::findByUuid($uuid); abort_if($media === null, 404); return response()->file($media->getPath()); } }