'integer', 'backup_include_files' => 'boolean', 'backup_include_env' => 'boolean', 'backup_auto_enabled' => 'boolean', 'backup_auto_hour' => 'integer', 'show_version' => 'boolean', ]; } public static function getSetting(string $key, mixed $default = null): mixed { if (!Schema::hasTable('app_settings')) { return $default; } $setting = self::first(); return $setting?->{$key} ?? $default; } public static function getLogo(): ?string { return self::getSetting('logo'); } public static function getLogoSmall(): ?string { return self::getSetting('logo_small'); } public static function getAppName(): string { return self::getSetting('nome_applicazione', 'Glastree'); } public static function getOrgName(): string { return self::getSetting('nome_organizzazione', 'Parrocchia'); } public static function getFooterText(): string { $footer = self::getSetting('footer_text'); if ($footer) { return $footer; } $appName = self::getAppName(); $year = date('Y'); return "© {$year} {$appName}"; } public static function getAppVersion(): ?string { return self::getSetting('app_version'); } public static function getDashboardWelcome(): ?string { return self::getSetting('dashboard_welcome'); } public static function shouldShowVersion(): bool { return (bool) self::getSetting('show_version', false); } public static function getDocumentiStorageDisk(): string { return self::getSetting('documenti_storage_disk', 'local'); } public static function getDocumentiStoragePath(): string { return self::getSetting('documenti_storage_path', 'documenti'); } public static function getDocumentiStorageAbsolutePath(): string { $disk = self::getDocumentiStorageDisk(); $path = self::getDocumentiStoragePath(); return storage_path('app/' . ($disk === 'local' ? 'private/' : '') . $path); } public function getLogoUrlInstance(): ?string { if ($this->logo && Storage::disk('public')->exists($this->logo)) { return Storage::disk('public')->url($this->logo); } return null; } public function getLogoSmallUrlInstance(): ?string { if ($this->logo_small && Storage::disk('public')->exists($this->logo_small)) { return Storage::disk('public')->url($this->logo_small); } return null; } public function getLogoPath(): ?string { if ($this->logo_path && Storage::disk('public')->exists($this->logo_path)) { return Storage::disk('public')->url($this->logo_path); } if ($this->logo && Storage::disk('public')->exists($this->logo)) { return Storage::disk('public')->url($this->logo); } return null; } public function getLogoSmallPath(): ?string { if ($this->logo_small_path && Storage::disk('public')->exists($this->logo_small_path)) { return Storage::disk('public')->url($this->logo_small_path); } if ($this->logo_small && Storage::disk('public')->exists($this->logo_small)) { return Storage::disk('public')->url($this->logo_small); } return null; } public static function getLogoUrl(): ?string { $setting = self::first(); return $setting?->getLogoPath(); } public static function getLogoSmallUrl(): ?string { $setting = self::first(); return $setting?->getLogoSmallPath(); } }