Files
radicall/app/Models/Report.php
T

65 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use App\Enums\ReportStatusEnum;
use App\Enums\MediaCollectionEnum;
use App\Enums\UserEnum;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Report extends Model
{
use HasFactory;
protected $fillable = [
'document_id',
'doctor_id',
'medium_id',
'status',
'body',
'submitted_at',
];
protected $casts = [
'status' => ReportStatusEnum::class,
'submitted_at' => 'datetime',
];
public function document()
{
return $this->belongsTo(Document::class , 'document_id');
}
public function doctor()
{
return $this->belongsTo(User::class, 'doctor_id')->where('level', UserEnum::Doctor->value);
}
public function media()
{
return $this->morphToMany(
\App\Models\Medium::class,
'mediable',
'media_assignments',
'mediable_id',
'media_id'
)->withPivot('collection')->withTimestamps();
}
public function medium()
{
return $this->belongsTo(Medium::class);
}
public function attachments()
{
return $this->media()->wherePivot('collection', MediaCollectionEnum::Attachments->value);
}
public function mediaAssignments()
{
return $this->morphMany(MediaAssignment::class, 'mediable');
}
}