Your IP : 216.73.216.79


Current Path : /var/www/html/dynaweb-cms-v1/app/Models/Backend/
Upload File :
Current File : /var/www/html/dynaweb-cms-v1/app/Models/Backend/ThemeRule.php

<?php

namespace App\Models\Backend;

use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Table;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;

#[Table('theme_rules', key: 'rule_id')]
#[Fillable([
    'rule_name',
    'rule_description',
    'rule_content',
    'rule_params',
    'rule_status',
    'created_by',
    'updated_by',
])]
class ThemeRule extends Model
{
    protected $casts = [
        'rule_status' => 'boolean',
    ];

    protected function ruleParams(): Attribute
    {
        return Attribute::make(
            get: function ($value) {
                if (is_array($value)) return $value;
                if (is_string($value) && $value !== '') {
                    $decoded = json_decode($value, true);
                    if (is_array($decoded)) return $decoded;
                    if (is_string($decoded)) {
                        $decoded2 = json_decode($decoded, true);
                        return is_array($decoded2) ? $decoded2 : [];
                    }
                }
                return [];
            },
            set: fn($value) => is_string($value) ? $value : json_encode($value),
        );
    }

    public function settings()
    {
        return $this->hasMany(ThemeSetting::class, 'setting_rule_id', 'rule_id');
    }

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

    public function updatedBy()
    {
        return $this->belongsTo(BackendUser::class, 'updated_by');
    }
}