radfusion/app/Http/Controllers/Staff/AttachmentController.php

63 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Staff;
use App\Domain\ACL\Permission;
use App\Http\Controllers\HashedStudyControllerBase;
use App\Models\Study;
use App\Services\AuditTrail\Activity;
use Illuminate\Http\Request;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
class AttachmentController extends HashedStudyControllerBase
{
public function upload(Request $request)
{
abort_unless(me()->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());
}
}