class CouchDBService
    constructor: ->
        @baseUrl = 'http://localhost:5984'
        @dbName = 'kohi_borbad_events'
        @headers = 
            'Content-Type': 'application/json'
            'Authorization': 'Basic ' + btoa('admin:password')
        @testData = [        {
                    _id: 'event_classical_001'
                    title: 'Концерт симфонического оркестра'
                    date: '2025-10-15'
                    time: '19:00'
                    description: 'Произведения Чайковского и Рахманинова в исполнении Национального симфонического оркестра'
                    image: '/images/event-classical.jpg'
                    category: 'classical'
                    price: 50
                    venue: 'Большой зал'
                    duration: '2 часа 30 минут'
                    ageRestriction: '12+'
                    availableTickets: 45
                    isFeatured: true
                    inSlider: true
                    shortDescription: 'Шедевры классической музыки'
                    cta: 'Купить билеты'
                }
                {
                    _id: 'event_folk_001'
                    title: 'Вечер таджикской народной музыки'
                    date: '2025-10-20'
                    time: '18:30'
                    description: 'Выступление фольклорного ансамбля "Шашмаком" с программой традиционных мелодий и танцев'
                    image: '/images/event-folk.jpg'
                    category: 'folk'
                    price: 30
                    venue: 'Малый зал'
                    duration: '2 часа'
                    ageRestriction: '6+'
                    availableTickets: 28
                    isFeatured: true
                    inSlider: true
                    shortDescription: 'Традиционные мелодии и танцы Таджикистана'
                    cta: 'Узнать больше'
                }
                {
                    _id: 'event_jazz_001'
                    title: 'Джазовый фестиваль "Borbad Jazz"'
                    date: '2025-10-25'
                    time: '20:00'
                    description: 'Международные джазовые коллективы из Европы и Азии в уникальной акустике зала'
                    image: '/images/event-jazz.jpg'
                    category: 'jazz'
                    price: 70
                    venue: 'Большой зал'
                    duration: '3 часа'
                    ageRestriction: '16+'
                    availableTickets: 15
                    isFeatured: true
                    inSlider: true
                    shortDescription: 'Международные джазовые коллективы'
                    cta: 'Смотреть расписание'
                }
                {
                    _id: 'event_pop_001'
                    title: 'Концерт популярной музыки'
                    date: '2025-10-28'
                    time: '19:30'
                    description: 'Лучшие поп-исполнители Таджикистана представят новые хиты и классические композиции'
                    image: '/images/event-pop.jpg'
                    category: 'pop'
                    price: 45
                    venue: 'Большой зал'
                    duration: '2 часа 15 минут'
                    ageRestriction: '12+'
                    availableTickets: 67
                    isFeatured: true
                    inSlider: false
                    shortDescription: 'Лучшие поп-исполнители страны'
                    cta: 'Купить билеты'
                }
                {
                    _id: 'event_opera_001'
                    title: 'Оперный гала-концерт'
                    date: '2025-11-02'
                    time: '18:00'
                    description: 'Известные оперные певцы исполнят арии из мировых шедевров оперного искусства'
                    image: '/images/event-opera.jpg'
                    category: 'classical'
                    price: 80
                    venue: 'Большой зал'
                    duration: '2 часа 45 минут'
                    ageRestriction: '12+'
                    availableTickets: 23
                    isFeatured: true
                    inSlider: false
                    shortDescription: 'Арии из мировых оперных шедевров'
                    cta: 'Забронировать места'
                }
                {
                    _id: 'event_dance_001'
                    title: 'Танцевальное шоу "Восточные ритмы"'
                    date: '2025-11-05'
                    time: '19:00'
                    description: 'Традиционные и современные танцевальные коллективы представят красочное шоу'
                    image: '/images/event-dance.jpg'
                    category: 'dance'
                    price: 35
                    venue: 'Большой зал'
                    duration: '2 часа 30 минут'
                    ageRestriction: '6+'
                    availableTickets: 89
                    isFeatured: true
                    inSlider: true
                    shortDescription: 'Традиционные и современные танцы'
                    cta: 'Посмотреть программу'
                }
            ]
    getAllEvents: ->
        new Promise (resolve, reject) =>
            try
                response = await fetch("#{@baseUrl}/#{@dbName}/_all_docs?include_docs=true", {
                    method: 'GET'
                    headers: @headers
                })
                
                if response.ok
                    data = await response.json()
                    events = data.rows.map (row) -> row.doc
                    resolve(events.filter (event) -> !event._id.startsWith('_design/'))
                else
                    debug.log "Ошибка получения мероприятий: "+response.statusText
                    resolve(@testData)
            catch error
                debug.log "Ошибка подключения к CouchDB: "+error
                resolve(@testData)

    getEventById: (id) ->
        new Promise (resolve, reject) =>
            try
                response = await fetch("#{@baseUrl}/#{@dbName}/#{id}", {
                    method: 'GET'
                    headers: @headers
                })
                
                if response.ok
                    event = await response.json()
                    resolve(event)
                else
                    debug.log "Ошибка получения мероприятия: "+response.statusText
                    resolve(@testData.filter (a)->
                                 (a.id == id)?true:false
                    )
            catch error
                debug.log "Ошибка подключения к CouchDB: "+error
                resolve(@testData.filter (a)->
                       (a.id == id)?true:false
                )

module.exports = CouchDBService
