HEX
Server: nginx/1.24.0
System: Linux localhost 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64
User: www (1000)
PHP: 8.3.27
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/erp.nhatnamsst.com/domains/Core/Models/Setting.php
<?php

namespace Domains\Core\Models;

use Domains\Core\Enums\Setting\SettingGroup;
use Domains\Core\Enums\Setting\SettingTypeInput;
use Domains\Core\Supports\Eloquent\BaseModel;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;

class Setting extends BaseModel
{
    use HasFactory;
    
    const CACHE_KEY_GET_ALL = 'cache_settings';

    protected $table = 'settings';

    protected $fillable = [
        'setting_key',
        'setting_name',
        'plain_value',
        'desc',
        'type_input',
        'type_data',
        'group'
    ];

    protected $casts = [
        'type_input' => SettingTypeInput::class,
        'group' => SettingGroup::class
    ];

    public function getNameComponent()
    {
        return match($this->type_input){
            SettingTypeInput::Text => 'core-input',
            SettingTypeInput::Number => 'core-input-number',
            SettingTypeInput::Image => 'core-input-image-ckfinder',
            SettingTypeInput::Email => 'core-input-email',
            SettingTypeInput::Phone => 'core-input-phone',
            SettingTypeInput::Switch => 'core-input-switch',
            default => 'core-input'
        };
    }

    public static function getInputSwitch(Collection $collection)
    {
        $inputSwitch = $collection->where('type_input', SettingTypeInput::Switch)->map((fn($item) => $item->setting_key))->toArray();

        return $inputSwitch;
    }

    public function isInputSwitch()
    {
        return $this->type_input == SettingTypeInput::Switch;
    }

    public static function getAll()
    {
        return Cache::rememberForever(self::CACHE_KEY_GET_ALL, function () {

            return self::all()->pluck('plain_value', 'setting_key');
        });
    }

    public static function getValue(string $key)
    {
        return self::getAll()->get($key, '');
    }

    public static function updateMultipleRecord(array $data){
        
        Cache::forget(Setting::CACHE_KEY_GET_ALL);

        $query = "UPDATE settings SET plain_value = CASE setting_key ";

        foreach ($data as $key => $value) {
            $query .= "WHEN '{$key}' THEN '{$value}' ";
        }
        
        $query .= "END WHERE setting_key IN ('".implode("', '", array_keys($data))."')";

        return DB::update($query);
    }
}