<?php

namespace App\Models;

class PropertyReview extends BaseModel
{

    protected $table = 'property_review';
    protected $appends = ['sentimentText'];

    const CREATED_AT = 'created_at';
    const UPDATED_AT = 'updated_at';

    protected $dateFormat = 'U';
    protected $guarded = [];

    protected $hidden = [];

    public function getSentimentTextAttribute()
    {
        $sentimentText = null;
        if ($this->sentiment == 1) {
            $sentimentText = 'Positive';
        } elseif ($this->sentiment == 0 && !is_null($this->sentiment)) {
            $sentimentText = 'Negative';
        }

        return $sentimentText;

    }

    public function channel()
    {
        return $this->hasOne('App\Models\PropertyReviewChannel', 'id', 'channel_id')->select(['id', 'name', 'logo']);
    }

    public function property()
    {
        return $this->hasOne('App\Models\Property', 'id', 'property_id')->select(['id', 'name', 'status']);
    }

    public function categoryMapping()
    {
        return $this->hasMany('App\Models\PropertyReviewCategoryMapping', 'review_id', 'id')->select(['id', 'review_id', 'category_id', 'sentiment']);
    }

    public function keywordMapping()
    {
        return $this->hasMany('App\Models\PropertyReviewKeywordMapping', 'review_id', 'id')->select(['id', 'review_id', 'channel_id', 'keyword', 'sentiment']);
    }
}
