// Основной JavaScript код для работы с исполнителями
const API_URL = 'http://localhost:8080/api';

// Загрузка данных при загрузке страницы
document.addEventListener('DOMContentLoaded', function() {
    loadArtists();
    loadCountries();
    loadEpochs();
});

// Загрузка исполнителей
async function loadArtists() {
    try {
        const response = await fetch(`${API_URL}/artists`);
        const artists = await response.json();
        displayArtists(artists);
    } catch (error) {
        console.error('Ошибка загрузки исполнителей:', error);
    }
}

// Загрузка стран
async function loadCountries() {
    try {
        const response = await fetch(`${API_URL}/countries`);
        const countries = await response.json();
        console.log('Загружены страны:', countries);
    } catch (error) {
        console.error('Ошибка загрузки стран:', error);
    }
}

// Загрузка эпох
async function loadEpochs() {
    try {
        const response = await fetch(`${API_URL}/epochs`);
        const epochs = await response.json();
        console.log('Загружены эпохи:', epochs);
    } catch (error) {
        console.error('Ошибка загрузки эпох:', error);
    }
}

// Отображение исполнителей
function displayArtists(artists) {
    const container = document.getElementById('artistsContainer');
    container.innerHTML = '';
    
    artists.forEach(artist => {
        const artistCard = createArtistCard(artist);
        container.appendChild(artistCard);
    });
}

// Создание карточки исполнителя
function createArtistCard(artist) {
    const col = document.createElement('div');
    col.className = 'col-md-4 mb-4';
    
    col.innerHTML = `
        <div class="card bg-dark border-punk">
            <div class="card-body">
                <h5 class="card-title text-punk">${artist.name}</h5>
                <p class="card-text text-light">${artist.description || 'Нет описания'}</p>
                <p class="card-text text-light"><small>Эпоха ID: ${artist.epochId || 'Не указана'}</small></p>
                <p class="card-text text-light"><small>Страна ID: ${artist.countryId || 'Не указана'}</small></p>
                <button class="btn btn-outline-primary edit-btn me-2" onclick="editArtist(${artist.id})">
                    <i class="bi bi-pencil-square"></i> Изменить
                </button>
                <button class="btn btn-outline-danger delete-btn" onclick="deleteArtist(${artist.id})">
                    <i class="bi bi-trash"></i> Удалить
                </button>
            </div>
        </div>
    `;
    
    return col;
}

// Редактирование исполнителя
function editArtist(id) {
    // ID теперь числовой
    console.log('Редактирование исполнителя с ID:', id, 'тип:', typeof id);
    
    // Заполняем форму данными исполнителя
    document.getElementById('editArtistId').value = id;
    
    // Здесь можно загрузить данные исполнителя и заполнить форму
    // Пока что просто открываем модальное окно
    const modal = new bootstrap.Modal(document.getElementById('editArtistModal'));
    modal.show();
}

// Удаление исполнителя
async function deleteArtist(id) {
    // ID теперь числовой
    console.log('Удаление исполнителя с ID:', id, 'тип:', typeof id);
    
    if (confirm('Удалить исполнителя?')) {
        try {
            const response = await fetch(`${API_URL}/artists/${id}`, {
                method: 'DELETE'
            });
            
            if (response.ok) {
                loadArtists(); // Перезагружаем список
            } else {
                alert('Ошибка удаления исполнителя');
            }
        } catch (error) {
            console.error('Ошибка удаления:', error);
            alert('Ошибка удаления исполнителя');
        }
    }
}

// Сохранение изменений исполнителя
async function saveEditArtist() {
    const id = parseInt(document.getElementById('editArtistId').value);
    const name = document.getElementById('editArtistName').value;
    const description = document.getElementById('editDescription').value;
    const year = document.getElementById('editArtistYear').value;
    const country = document.getElementById('editArtistCountry').value;
    
    console.log('Сохранение исполнителя с ID:', id, 'тип:', typeof id);
    
    if (!name || !description) {
        alert('Все поля обязательны!');
        return;
    }
    
    try {
        const response = await fetch(`${API_URL}/artists/${id}`, {
            method: 'PATCH',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                name: name,
                description: description,
                epochId: 1, // Пока что статическое значение
                countryId: 1 // Пока что статическое значение
            })
        });
        
        if (response.ok) {
            const modal = bootstrap.Modal.getInstance(document.getElementById('editArtistModal'));
            modal.hide();
            loadArtists(); // Перезагружаем список
        } else {
            alert('Ошибка сохранения исполнителя');
        }
    } catch (error) {
        console.error('Ошибка сохранения:', error);
        alert('Ошибка сохранения исполнителя');
    }
}

// Добавление нового исполнителя
async function addArtist() {
    const name = document.getElementById('artistName').value;
    const description = document.getElementById('description').value;
    const year = document.getElementById('artistYear').value;
    const country = document.getElementById('artistCountry').value;
    
    if (!name || !description) {
        alert('Все поля обязательны!');
        return;
    }
    
    try {
        const response = await fetch(`${API_URL}/artists`, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                name: name,
                description: description,
                epochId: 1, // Пока что статическое значение
                countryId: 1 // Пока что статическое значение
            })
        });
        
        if (response.ok) {
            document.getElementById('artistForm').reset();
            loadArtists(); // Перезагружаем список
        } else {
            alert('Ошибка добавления исполнителя');
        }
    } catch (error) {
        console.error('Ошибка добавления:', error);
        alert('Ошибка добавления исполнителя');
    }
}

// Привязка событий
document.addEventListener('DOMContentLoaded', function() {
    // Кнопка сохранения редактирования
    document.getElementById('saveEditArtist').addEventListener('click', saveEditArtist);
    
    // Кнопка добавления исполнителя
    document.getElementById('artistForm').addEventListener('submit', function(e) {
        e.preventDefault();
        addArtist();
    });
});

