65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Staff;
|
|
|
|
use App\Domain\ACL\Permission;
|
|
use App\Http\Controllers\HashidControllerBase;
|
|
use App\Models\Study;
|
|
use App\Services\AuditTrail\Activity;
|
|
use Illuminate\Http\Request;
|
|
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
|
|
|
class AttachmentController extends HashidControllerBase
|
|
{
|
|
public function upload(Request $request)
|
|
{
|
|
abort_unless(auth()->user()->may(Permission::AttachmentUpload), 403);
|
|
$this->decodeKeys();
|
|
$study = Study::findOrFail($this->key);
|
|
|
|
$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($this->key)
|
|
->log();
|
|
|
|
return response()->json(['success' => 'Files uploaded successfully']);
|
|
}
|
|
|
|
public function delete(string $hashId, int $mediaId)
|
|
{
|
|
abort_unless(auth()->user()->may(Permission::AttachmentUpload), 403);
|
|
$this->decodeKeys();
|
|
$study = Study::findOrFail($this->key);
|
|
$media = $study->getMedia(Study::MEDIA_COLLECTION)->where('id', $mediaId)->first();
|
|
|
|
if ($media !== null) {
|
|
$media->delete();
|
|
|
|
audit()
|
|
->did(Activity::Attachment_Delete)
|
|
->on($this->key)
|
|
->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());
|
|
}
|
|
}
|