class ProdutoForm {
constructor(fetchService, renderCallback) {
this.fetchService = fetchService;
this.refreshProdutosList = renderCallback;
}
render() {
return `
<form id="addForm">
Nome: <input type="text" id="nome"><br>
Preço: <input type="number" id="preco" step="0.01"><br>
Quantidade: <input type="number" id="quantidade"><br>
<button type="submit">Adicionar Produto</button>
</form>
`;
}
afterRender() {
document.getElementById('addForm').addEventListener('submit', (e) => this.addItem(e));
}
async addItem(event) {
event.preventDefault();
const nome = document.getElementById('nome').value;
const preco = parseFloat(document.getElementById('preco').value);
const quantidade = parseInt(document.getElementById('quantidade').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', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ nome, preco, quantidade }),
});
alert('Produto adicionado com sucesso.');
document.getElementById('nome').value = '';
document.getElementById('preco').value = '';
document.getElementById('quantidade').value = '';
this.refreshProdutosList();
}
}
export default ProdutoForm;
|