feat: moderation

This commit is contained in:
2026-05-22 11:56:17 +02:00
parent f5b460c650
commit 1c472e46db
43 changed files with 1836 additions and 3 deletions
+58
View File
@@ -0,0 +1,58 @@
<?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',
];
}
}