<?php

namespace App\Packages\Core\Models;

use App\Packages\Core\Traits\RepositoryTrait;
use App\Packages\User\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
 * Class Report
 * @package App\Packages\Core\Models
 *
 * @property int $id
 * @property int $report_type
 * @property string $content
 * @property int $user_id
 * @property string $email
 *
 * @property $created_at
 * @property $updated_at
 */
class Report extends Model
{
	const TYPE_PROBLEM = 1;
	const TYPE_FEEDBACK = 2;

	const STATUS_OPEN = 0;
	const STATUS_CLOSED = 1;

	use RepositoryTrait;

	/** @var string */
	protected $table = 'table_report';

    protected $dates = [
        'created_at',
        'updated_at'
    ];

	/**
	 * @param User $user
	 * @param string $email
	 * @param string $content
	 *
	 * @return Report
	 */
    public static function reportProblem(User $user, $email, $content)
	{
		$report = new Report();
		$report->report_type = Report::TYPE_PROBLEM;
		$report->user_id = $user;
		$report->email = $email;
		$report->content = $content;
		$report->save();

		return $report;
	}

	/**
	 * @param User $user
	 * @param string $email
	 * @param string $content
	 *
	 * @return Report
	 */
	public static function reportFeedback(User $user, $email, $content)
	{
		$report = new Report();
		$report->report_type = Report::TYPE_FEEDBACK;
		$report->user_id = $user;
		$report->email = $email;
		$report->content = $content;
		$report->save();

		return $report;
	}

    /**
     * @return BelongsTo
     */
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

}
