# app/services/DomainService.coffee { DomainSettings } = require 'app/types/data' class DomainService constructor: -> @pouchService = require 'app/utils/pouch' @initialized = false @currentDomain = window.location.hostname init: -> return Promise.resolve() if @initialized try await @pouchService.init() @initialized = true log '✅ DomainService инициализирован' return Promise.resolve() catch error log '❌ Ошибка инициализации DomainService:', error return Promise.reject(error) loadDomainSettings: (domain = @currentDomain) -> await @ensureInit() try docId = "domain_settings:#{domain}" settingsDoc = await @pouchService.getDocument(docId) settings = new DomainSettings(settingsDoc) log "🌐 Настройки домена загружены: #{domain}" return settings catch error if error.status == 404 log "⚠️ Настройки домена не найдены, создаем defaults: #{domain}" return @createDefaultSettings(domain) else log "❌ Ошибка загрузки настроек домена #{domain}:", error throw error createDefaultSettings: (domain) -> settings = new DomainSettings() settings._id = "domain_settings:#{domain}" settings.domain = domain settings.companyName = 'Браер-Колор' settings.languages = ['ru'] settings.defaultLanguage = 'ru' settings.theme = 'light' # Сохраняем настройки по умолчанию await @saveDomainSettings(settings) return settings saveDomainSettings: (settings) -> await @ensureInit() try result = await @pouchService.saveDocument(settings) log "💾 Настройки домена сохранены: #{settings.domain}" return result catch error log "❌ Ошибка сохранения настроек домена:", error throw error getAvailableDomains: -> # Здесь будет логика получения списка доступных доменов # Пока возвращаем тестовые данные return [ 'braer-color.ru' 's5l.ru' 'localhost' ] getDomainConfig: (domain) -> # Конфигурация для конкретного домена baseConfig = theme: 'light' language: 'ru' currency: 'RUB' # Доменные специфические настройки domainConfigs = 'braer-color.ru': companyName: 'Браер-Колор' theme: 'brand' 's5l.ru': companyName: 'S5L Group' theme: 'dark' return { ...baseConfig, ...(domainConfigs[domain] or {}) } ensureInit: -> unless @initialized throw new Error('DomainService не инициализирован. Вызовите init() сначала.') module.exports = new DomainService()