complete Complete User Request Submission section RAD-1
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\MediaDiskEnum;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class Medium extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
protected $fillable = [
|
||||
'filename',
|
||||
'disk',
|
||||
'path',
|
||||
'size',
|
||||
'url',
|
||||
'mime_type'
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'disk' => MediaDiskEnum::class,
|
||||
];
|
||||
|
||||
public function getFullUrlAttribute()
|
||||
{
|
||||
if ($this->disk === MediaDiskEnum::Public) {
|
||||
return Storage::disk('public')->path($this->path);
|
||||
}elseif($this->disk === MediaDiskEnum::Private){
|
||||
return Storage::disk('private')->path($this->path);
|
||||
}
|
||||
|
||||
return $this->url ?? null;
|
||||
}
|
||||
|
||||
public function getStorageDisk()
|
||||
{
|
||||
return Storage::disk($this->disk?->value ?? 'public');
|
||||
}
|
||||
|
||||
public function exists()
|
||||
{
|
||||
return $this->getStorageDisk()->exists($this->path);
|
||||
}
|
||||
|
||||
public function getContents()
|
||||
{
|
||||
return $this->getStorageDisk()->get($this->path);
|
||||
}
|
||||
|
||||
public function deleteFile()
|
||||
{
|
||||
if ($this->exists()) {
|
||||
return $this->getStorageDisk()->delete($this->path);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getHumanSizeAttribute()
|
||||
{
|
||||
$bytes = $this->size;
|
||||
$units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
||||
|
||||
for ($i = 0; $bytes > 1024 && $i < count($units) - 1; $i++) {
|
||||
$bytes /= 1024;
|
||||
}
|
||||
|
||||
return round($bytes, 2) . ' ' . $units[$i];
|
||||
}
|
||||
|
||||
public function isPublic()
|
||||
{
|
||||
return $this->disk === MediaDiskEnum::Public;
|
||||
}
|
||||
|
||||
public function isPrivate()
|
||||
{
|
||||
return $this->disk === MediaDiskEnum::Private;
|
||||
}
|
||||
|
||||
public function assignments()
|
||||
{
|
||||
return $this->hasMany(MediaAssignment::class , 'media_id' , 'id');
|
||||
}
|
||||
|
||||
public function reports()
|
||||
{
|
||||
return $this->morphedByMany(
|
||||
\App\Models\Report::class,
|
||||
'mediable',
|
||||
'media_assignments',
|
||||
'media_id',
|
||||
'mediable_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function documents()
|
||||
{
|
||||
return $this->morphedByMany(
|
||||
\App\Models\Document::class,
|
||||
'mediable',
|
||||
'media_assignments',
|
||||
'media_id',
|
||||
'mediable_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany(User::class , 'media_id' , 'id');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user