<?php

namespace App\Models;

use App\Models\User;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Scopes\StatusScope;
use App\Traits\CreatedUpdatedBy;

class Franchises extends Model
{
    use HasFactory, CreatedUpdatedBy;

    protected $primaryKey = 'franchise_id';
    public $timestamps = true;
    protected $fillable = [
        'for',
        'title',
        'alias',
        'text',
        'thumb',
        'banners',
        'display_order',
        'status',
        'created_at',
        'createdby',
        'updated_at',
        'updatedby',

    ];

    protected $appends = ['status_name'];

    protected function getStatusNameAttribute()
    {
        return $this->status == 1 ? '<span class="badge text-bg-success-soft"> Active </span>' : '<span class="badge text-bg-danger-soft">Inactive</span>';
    }

    protected function createdBy(): Attribute
    {
        return Attribute::make(
            get: fn ($value) =>  User::find($value) ? User::find($value)->name : '',
        );
    }

    protected function updatedBy(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => User::find($value) ? User::find($value)->name : '',
        );
    }
    public static function boot(){
        parent::boot();
        static::addGlobalScope(new StatusScope());
    }
    
}