<?php

namespace App;

use Auth;
use Storage;
use Illuminate\Database\Eloquent\Model;
use App\HasSnowflakePrimary;
use App\Util\Lexer\Bearcap;

class Story extends Model
{
    use HasSnowflakePrimary;

    public const MAX_PER_DAY = 20;

    /**
     * Indicates if the IDs are auto-incrementing.
     *
     * @var bool
     */
    public $incrementing = false;

    protected $casts = [
    	'expires_at' => 'datetime'
    ];

    protected $fillable = ['profile_id', 'view_count'];

	protected $visible = ['id'];

	protected $hidden = ['json'];

	public function profile()
	{
		return $this->belongsTo(Profile::class);
	}

	public function views()
	{
		return $this->hasMany(StoryView::class);
	}

	public function seen($pid = false)
	{
		return StoryView::whereStoryId($this->id)
			->whereProfileId(Auth::user()->profile->id)
			->exists();
	}

	public function permalink()
	{
		$username = $this->profile->username;
		return url("/stories/{$username}/{$this->id}/activity");
	}

	public function url()
	{
		$username = $this->profile->username;
		return url("/stories/{$username}/{$this->id}");
	}

	public function mediaUrl()
	{
		return url(Storage::url($this->path));
	}

	public function bearcapUrl()
	{
		return Bearcap::encode($this->url(), $this->bearcap_token);
	}

	public function scopeToAudience($scope)
	{
		$res = [];

		switch ($scope) {
			case 'to':
				$res = [
					$this->profile->permalink('/followers')
				];
				break;

			default:
				$res = [];
				break;
		}

		return $res;
	}
}