Files
jandl-taskmanager-app/be/app/Models/Attachment.php

59 lines
1.5 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
class Attachment extends Model
{
use HasFactory;
public $timestamps = true;
public $guarded = ['id'];
public function mastertask()
{
return $this->belongsTo(MasterTask::class, 'master_task_id');
}
public function subtask()
{
return $this->belongsTo(SubTask::class, 'sub_task_id');
}
public static function uploadAttachmentsToS3($request, $mastertask)
{
$attachmentDataArray = [];
foreach ( $request as $file ) {
$extension = $file->getClientOriginalExtension();
$disk_name = uniqid() . '.' . $extension;
$path = 'jandl_taskmanager/attachments/' . $mastertask->id . '/' . $disk_name;
Storage::disk('s3')->put($path, $file->getContent(), 'public');
$attachmentDataArray[] = [
'original_name' => $file->getClientOriginalName(),
'disk_name' => $disk_name,
'path' => Storage::disk('s3')->url($path),
'extension' => $extension,
'content_type' => $file->getMimeType(),
'file_size' => $file->getSize(),
];
}
return $attachmentDataArray;
}
public function deleteFromS3()
{
$path = 'jandl_taskmanager/attachments/' . $this->master_task_id . '/' . $this->disk_name;
Storage::disk('s3')->delete($path);
return true;
}
}