<?php

/**
 * Created by Reliese Model.
 */

namespace App\Models;

use AlAminFirdows\LaravelEditorJs\Facades\LaravelEditorJs;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;

/**
 * Class Post
 *
 * @property int $id
 * @property string|null $title
 * @property string|null $slug
 * @property string|null $excerpt
 * @property int|null $author_id
 * @property string $featured_image
 * @property string $editor
 * @property array|null $body
 * @property string $post_format
 * @property int $comment_count
 * @property int $likes_count
 * @property string $status
 * @property Carbon|null $created_at
 * @property Carbon|null $updated_at
 * @property Author|null $author
 * @property Collection|PostCategory[] $post_categories
 */
class Post extends Model
{
    protected $table = 'posts';

    protected $casts = [
        'author_id' => 'int',
        'body' => 'json',
        'comment_count' => 'int',
        'likes_count' => 'int',
        'featured' => 'bool',
    ];

    protected $fillable = [
        'title',
        'slug',
        'excerpt',
        'author_id',
        'featured_image',
        'editor',
        'body',
        'post_format',
        'comment_count',
        'likes_count',
        'status',
        'featured',
        'publish_date',
    ];

    protected $appends = [
        //'html_body',
    ];

    public function author()
    {
        return $this->belongsTo(Author::class);
    }

    public function post_categories()
    {
        return $this->hasMany(PostCategory::class);
    }

    public function post_category()
    {
        return $this->hasOne(PostCategory::class);
    }

    public function getHtmlBodyAttribute()
    {
        if (! is_empty($this->body)) {
            return LaravelEditorJs::render(json_encode($this->body));
        }

        return '';

    }
}
