<?php


namespace App\Models\Concerns;


use App\Models\ContentReport;
use Illuminate\Database\Eloquent\Relations\MorphMany;

/**
 * @property ContentReport $reportsOf
 */
trait Reportable
{
    public static function bootReportable()
    {
        static::deleting(function($self) {
            /** @var Reportable $self */
            $self->reportsOf()->delete();
        });
    }

    /**
     * Reports of this user
     *
     * @return MorphMany
     */
    public function reportsOf()
    {
        return $this->morphMany(ContentReport::class, 'object');
    }

    /**
     * Save a report of this object to the DB
     *
     * @param string $message explanation why it should be removed
     */
    public function reportAsInappropriate($message)
    {
        $this->reportsOf()->save(new ContentReport([
            'author_id' => \Auth::user()->getKey(),
            'message' => $message,
        ]));
    }
}