<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    protected $table = 'comments';

    protected $appends = ['commentCount', 'gate', 'plus', 'minus', 'loadingPlus', 'loadingMinus'];

    protected $fillable = ['id', 'idx', 'topic_id', 'parent_id', 'content', 'image', 'like', 'dislike', 'author', 'is_anonymous', 'is_show_id', 'is_allow_comment', 'is_activated', 'is_deleted', 'created_at', 'updated_at'];

    public function scopeIsDeleted($query)
    {
        return $query->where('is_deleted', true);
    }

    public function scopeNotDeleted($query)
    {
        return $query->where('is_deleted', false);
    }

    public function scopeActivated($query)
    {
        return $query->where('is_activated', true);
    }

    public function scopeNotActivated($query)
    {
        return $query->where('is_activated', false);
    }

    public function scopePublished($query)
    {
        return $query->where('is_deleted', false)->where('is_activated', true);
    }

    public function detail() {
        return $this->hasMany(CommentDetail::class, 'comment_id', 'id')->select('comment_id', 'content', 'title', 'domain', 'description', 'thumbnail', 'is_url')->orderBy('created_at');
    }

    public function quote() {
        return $this->hasMany(Quote::class, 'comment_id', 'id')->orderBy('id');
    }

    public function children()
    {
        return $this->hasMany(Quote::class, 'parent_id', 'id');
    }

    public function getCommentCountAttribute() {
        return $this->children()->count();
    }

    public function getGateAttribute() {
        return 0;
    }

    public function getPlusAttribute() {
        return 0;
    }

    public function getMinusAttribute() {
        return 0;
    }

    public function getLoadingPlusAttribute() {
        return false;
    }

    public function getLoadingMinusAttribute() {
        return false;
    }
}
