api/app/Models/Report.php

59 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use App\Enums\ReportReason;
use App\Enums\ReportStatus;
use Illuminate\Database\Eloquent\Concerns\HasUlids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class Report extends Model
{
/** @use HasFactory<\Database\Factories\ReportFactory> */
use HasFactory, HasUlids;
protected $fillable = [
'moderation_case_id',
'reporter_id',
'reportable_type',
'reportable_id',
'reason',
'details',
'status',
'reviewed_by',
'reviewed_at',
];
public function moderationCase(): BelongsTo
{
return $this->belongsTo(ModerationCase::class);
}
public function reporter(): BelongsTo
{
return $this->belongsTo(User::class, 'reporter_id');
}
public function reviewedBy(): BelongsTo
{
return $this->belongsTo(User::class, 'reviewed_by');
}
public function reportable(): MorphTo
{
return $this->morphTo();
}
protected function casts(): array
{
return [
'reason' => ReportReason::class,
'status' => ReportStatus::class,
'reviewed_at' => 'datetime',
];
}
}