| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # 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()
|