<?php

namespace App\Repositories;

use App\Models\Config;
use App\Models\Enums\ConfigGroup;
use App\Repositories\Enums\EmailConfigFieldEnum;
use App\Repositories\Enums\BrowserConfigFiledEnum;

class ConfigRepository
{
    public static function openEmailNotification(): bool
    {
        return self::getConfigItem(ConfigGroup::EMAIL->value, EmailConfigFieldEnum::OPEN_EMAIL_NOTIFICATION->value) == "on";
    }

    public static function openBrowserNotification(): bool{
        return self::getConfigItem(ConfigGroup::BROWSER->value, BrowserConfigFiledEnum::OPEN_BROWSER_NOTIFICATION->value) == "on";
    }

    protected static function getConfigItem(string $group, string $key)
    {
        $config = Config::query()->where('group', $group)->where("key", $key)->first();

        return $config?->value;
    }

    public static function emailDynamicSetting()
    {
        $configs = Config::query()->where('group', ConfigGroup::EMAIL->value)->get();

        $fieldRelations = EmailConfigFieldEnum::fieldRelations();
        foreach ($configs as $config) {
            if(! isset($fieldRelations[$config->key]) || !$config->value) {
                continue;
            }

            \Illuminate\Support\Facades\Config::set($fieldRelations[$config->key], $config->value);
        }
    }
}