ConfigRepository.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\Config;
  4. use App\Models\Enums\ConfigGroup;
  5. use App\Repositories\Enums\EmailConfigFieldEnum;
  6. use App\Repositories\Enums\BrowserConfigFiledEnum;
  7. class ConfigRepository
  8. {
  9. public static function openEmailNotification(): bool
  10. {
  11. return self::getConfigItem(ConfigGroup::EMAIL->value, EmailConfigFieldEnum::OPEN_EMAIL_NOTIFICATION->value) == "on";
  12. }
  13. public static function openBrowserNotification(): bool{
  14. return self::getConfigItem(ConfigGroup::BROWSER->value, BrowserConfigFiledEnum::OPEN_BROWSER_NOTIFICATION->value) == "on";
  15. }
  16. protected static function getConfigItem(string $group, string $key)
  17. {
  18. $config = Config::query()->where('group', $group)->where("key", $key)->first();
  19. return $config?->value;
  20. }
  21. public static function emailDynamicSetting()
  22. {
  23. $configs = Config::query()->where('group', ConfigGroup::EMAIL->value)->get();
  24. $fieldRelations = EmailConfigFieldEnum::fieldRelations();
  25. foreach ($configs as $config) {
  26. if(! isset($fieldRelations[$config->key]) || !$config->value) {
  27. continue;
  28. }
  29. \Illuminate\Support\Facades\Config::set($fieldRelations[$config->key], $config->value);
  30. }
  31. }
  32. }