| class UpdateProdutoForm {
    constructor(fetchService, refreshProdutosList) {
        this.fetchService = fetchService;
        this.refreshProdutosList = refreshProdutosList;
    }
    render() {
        return `
            <div id="updateProdutoModal" class="modal" style="display: none;">
                <div class="modal-content">
                    <span id="closeModal" class="close">×</span>
                    <h4>Atualizar Produto</h4>
                    <label>ID:</label>
                    <input type="text" id="updateId" readonly><br>
                    <label>Nome:</label>
                    <input type="text" id="updateNome"><br>
                    <label>Preço:</label>
                    <input type="number" id="updatePreco" step="0.01"><br>
                    <label>Quantidade:</label>
                    <input type="number" id="updateQuantidade"><br>
                    <button id="updateButton">Atualizar Produto</button>
                </div>
            </div>
        `;
    }
    afterRender() {
        document.getElementById('updateButton').addEventListener('click', () => this.updateProduto());
        document.getElementById('closeModal').addEventListener('click', () => this.closeModal());
    }
    open(produto) {
        document.getElementById('updateId').value = produto.id;
        document.getElementById('updateNome').value = produto.nome;
        document.getElementById('updatePreco').value = produto.preco;
        document.getElementById('updateQuantidade').value = produto.quantidade;
        document.getElementById('updateProdutoModal').style.display = 'block';
    }
    closeModal() {
        document.getElementById('updateProdutoModal').style.display = 'none';
    }
    async updateProduto() {
        const id = document.getElementById('updateId').value;
        const nome = document.getElementById('updateNome').value;
        const preco = parseFloat(document.getElementById('updatePreco').value);
        const quantidade = parseInt(document.getElementById('updateQuantidade').value, 10);
        if (nome.length < 4) {
            alert("O nome do produto deve ter pelo menos 4 caracteres.");
            return;
        }
        if (preco < 0) {
            alert("O preço do produto não pode ser inferior a zero.");
            return;
        }
        if (quantidade < 0) {
            alert("A quantidade do produto não pode ser inferior a zero.");
            return;
        }
        await this.fetchService.fetch(`/produtos/${id}`, {
            method: 'PUT',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ nome, preco, quantidade }),
        });
        alert('Produto atualizado com sucesso.');
        this.closeModal();
        this.refreshProdutosList(); 
    }
    async deleteProduto(id) {
        await this.fetchService.fetch(`/produtos/${id}`, {
            method: 'DELETE',
            headers: { 'Content-Type': 'application/json' },
        });
        alert('Produto deletado com sucesso.');
        this.refreshProdutosList(); 
    }
}
export default UpdateProdutoForm;
 |