| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # app/types/data.coffee
- class DomainEntity
- constructor: (data = {}) ->
- @_id = data._id or ''
- @_rev = data._rev or ''
- @type = data.type or ''
- @domains = data.domains or []
- @createdAt = data.createdAt or new Date().toISOString()
- @updatedAt = data.updatedAt or new Date().toISOString()
- @active = if data.active? then data.active else true
- @createdBy = data.createdBy or ''
- @updatedBy = data.updatedBy or ''
- class Category extends DomainEntity
- constructor: (data = {}) ->
- super(data)
- @type = 'category'
- @name = data.name or ''
- @slug = data.slug or ''
- @parent = data.parent or null
- @order = data.order or 0
- @image = data.image or ''
- @description = data.description or ''
- @seo = data.seo or {}
- @attributesConfig = data.attributesConfig or {}
- # Добавляем поле children для иерархической структуры
- @children = data.children or []
- class Product extends DomainEntity
- constructor: (data = {}) ->
- super(data)
- @type = 'product'
- @name = data.name or ''
- @sku = data.sku or ''
- @price = data.price or 0
- @oldPrice = data.oldPrice or null
- @category = data.category or ''
- @brand = data.brand or ''
- @description = data.description or ''
- @shortDescription = data.shortDescription or ''
- @attributes = data.attributes or {}
- @images = data.images or []
- @richContent = data.richContent or null
- @inStock = if data.inStock? then data.inStock else true
- @stockQuantity = data.stockQuantity or 0
- @weight = data.weight or 0
- @volume = data.volume or 0
- @dimensions = data.dimensions or {}
- @seo = data.seo or {}
- @tags = data.tags or []
- @relatedProducts = data.relatedProducts or []
- class HeroSlide extends DomainEntity
- constructor: (data = {}) ->
- super(data)
- @type = 'hero_slide'
- @title = data.title or ''
- @subtitle = data.subtitle or ''
- @image = data.image or ''
- @buttonText = data.buttonText or 'В каталог'
- @buttonLink = data.buttonLink or '/catalog'
- @order = data.order or 0
- @active = if data.active? then data.active else true
- class DomainSettings extends DomainEntity
- constructor: (data = {}) ->
- super(data)
- @type = 'domain_settings'
- @domain = data.domain or ''
- @companyName = data.companyName or ''
- @companyLogo = data.companyLogo or ''
- @languages = data.languages or ['ru']
- @defaultLanguage = data.defaultLanguage or 'ru'
- @theme = data.theme or 'light'
- @contacts = data.contacts or {}
- @seo = data.seo or {}
- @social = data.social or {}
- @paymentMethods = data.paymentMethods or []
- @shippingMethods = data.shippingMethods or []
- class User extends DomainEntity
- constructor: (data = {}) ->
- super(data)
- @type = 'user'
- @username = data.username or ''
- @email = data.email or ''
- @role = data.role or 'user'
- @firstName = data.firstName or ''
- @lastName = data.lastName or ''
- @phone = data.phone or ''
- @address = data.address or {}
- @orders = data.orders or []
- @favorites = data.favorites or []
- @cart = data.cart or []
- class Order extends DomainEntity
- constructor: (data = {}) ->
- super(data)
- @type = 'order'
- @userId = data.userId or ''
- @items = data.items or []
- @total = data.total or 0
- @status = data.status or 'pending'
- @paymentStatus = data.paymentStatus or 'pending'
- @shippingAddress = data.shippingAddress or {}
- @billingAddress = data.billingAddress or {}
- @paymentMethod = data.paymentMethod or ''
- @shippingMethod = data.shippingMethod or ''
- @trackingNumber = data.trackingNumber or ''
- @notes = data.notes or ''
- module.exports = {
- DomainEntity,
- Product,
- Category,
- HeroSlide,
- DomainSettings,
- User,
- Order
- }
|