<?php

namespace App;

use App\Tools\TMNTools;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * App\Audience
 *
 * @property int $id
 * @property string $name
 * @property int $user_id
 * @property string $mode
 * @property array $nodes
 * @property array $filters
 * @property \Carbon\Carbon|null $created_at
 * @property \Carbon\Carbon|null $updated_at
 * @property \Carbon\Carbon|null $deleted_at
 * @property-read \App\User $user
 * @method static bool|null forceDelete()
 * @method static \Illuminate\Database\Query\Builder|\App\Audience onlyTrashed()
 * @method static bool|null restore()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereDeletedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereFilters($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereMode($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereNodes($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereUpdatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Audience whereUserId($value)
 * @method static \Illuminate\Database\Query\Builder|\App\Audience withTrashed()
 * @method static \Illuminate\Database\Query\Builder|\App\Audience withoutTrashed()
 * @mixin \Eloquent
 */
class Audience extends Model
{
    use SoftDeletes;

    protected $fillable = ['name', 'user_id', 'mode', 'nodes', 'filters'];

    public function user() {
        return $this->belongsTo('App\User');
    }

    public function people()
    {
        $tool   = new TMNTools();
        $query  = $tool->people($this->filters, $this->mode);
        $data   = $query->people;
        return $data;
    }

    public function stat() {
        $tool  = new TMNTools();
        $query = $tool->people($this->filters, $this->mode);
        $stat  = ['reach' => $query->reach, 'share' => $query->share, 'total' => $query->total];
        return (object) $stat;
    }

    protected $casts = ['id' => 'int', 'nodes' => 'array', 'filters' => 'array'];
    protected $dates = ['deleted_at'];
}
