<?php

namespace App\Models;

use App\Models\ModelTrait;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;

class Page extends Model
{
    use ModelTrait;
    use Translatable;
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table;

    public $translatedAttributes = ['title', 'description'];

    /**
     * The guarded field which are not mass assignable.
     *
     * @var array
     */
    protected $guarded = ['id'];

    /**
     * The default values for attributes.
     *
     * @var array
     */
    protected $attributes = [
        'created_by' => 1,
    ];

    //You can specify default eager loaded relationships using the $with property on the model.
    //https://stackoverflow.com/questions/25674143/laravel-whenever-i-return-a-model-always-return-a-relationship-with-it
    protected $with = ['owner'];

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
        $this->table = 'pages'; //config('module.pages.table');
        // $this->defaultLocale = 'de';
    }

    public function owner()
    {
        return $this->belongsTo(User::class, 'created_by');
    }

    /**
     * @return string
     */
    public function getActionButtonsAttribute()
    {
        return '<div class="btn-group action-btn">
                    ' . $this->getEditButtonAttribute('page', 'settings.page.edit') . '
                    ' . $this->getViewButtonAttribute() . '
                </div>';
        // '.$this->getDeleteButtonAttribute('page', 'settings.page.destroy').'
    }

    /**
     * @return string
     */
    public function getViewButtonAttribute()
    {
        return '<a target="_blank" href="
                ' . route('frontend.pages.show', $this->page_slug) . ' " class="btn btn-flat btn-default">
                    <i data-toggle="tooltip" data-placement="top" title="View Page" class="fa fa-eye"></i>
                </a>';
    }

    /**
     * @return string
     */
    public function getStatusLabelAttribute()
    {
        if ($this->isActive()) {
            return "<label class='label label-success'>" . trans('labels.general.active') . '</label>';
        }

        return "<label class='label label-danger'>" . trans('labels.general.inactive') . '</label>';
    }

    /**
     * @return bool
     */
    public function isActive()
    {
        return $this->status == 1;
    }
}