export default class Presence {
constructor(apiUrl) {
this.apiUrl = apiUrl;
this.presencas = [];
this.registroPesquisa = '';
this.dataPesquisa = '';
}
async buscarPresencas() {
this.presencas = await this.buscarPresencasPorRegistro(this.registroPesquisa, this.dataPesquisa);
this.renderPresencas();
}
handleRegistroPesquisaChange(event) {
this.registroPesquisa = event.target.value;
}
handleDataPesquisaChange(event) {
this.dataPesquisa = event.target.value;
}
async handleAtualizarPresenca(presenca) {
await this.atualizarPresenca(presenca.id, presenca.novaDataHora);
await this.buscarPresencas();
}
renderPresencas() {
const listContainer = document.getElementById('presencas-list');
listContainer.innerHTML = '';
this.presencas.forEach(presenca => {
const listItem = document.createElement('li');
listItem.textContent = `${presenca.nome} (${presenca.registro}) - `;
if (presenca.editavel) {
const inputNovaDataHora = document.createElement('input');
inputNovaDataHora.type = 'datetime-local';
inputNovaDataHora.value = presenca.novaDataHora;
inputNovaDataHora.onchange = e => presenca.novaDataHora = e.target.value;
const botaoSalvar = document.createElement('button');
botaoSalvar.className = 'btn-salvar';
botaoSalvar.textContent = 'Salvar';
botaoSalvar.onclick = () => this.handleAtualizarPresenca(presenca);
listItem.appendChild(inputNovaDataHora);
listItem.appendChild(botaoSalvar);
} else {
const spanDataHora = document.createElement('span');
spanDataHora.textContent = presenca.data_hora;
const botaoEditar = document.createElement('button');
botaoEditar.className = 'btn-editar';
botaoEditar.textContent = 'Editar';
botaoEditar.onclick = () => {
presenca.editavel = true;
this.renderPresencas();
};
listItem.appendChild(spanDataHora);
listItem.appendChild(botaoEditar);
}
listContainer.appendChild(listItem);
});
}
async registrarPresenca (idUsuario, tipo){
try {
const response = await fetch(`${this.apiUrl}Presenca.php`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ id_usuario: idUsuario, tipo: tipo }),
});
const data = await response.json();
if (data.status) {
alert('Presença registrada');
return data.status
}
} catch (error) {
console.error('Erro ao registrar presença:', error);
}
};
async buscarPresencasPorRegistro (registro, dataregistro){
try {
let url = `${this.apiUrl}Presenca.php`;
const params = new URLSearchParams();
if (registro) params.append('registro', registro);
if (dataregistro) params.append('data', dataregistro);
url += '?' + params.toString();
const response = await fetch(url);
const data = await response.json();
console.log('Presenças recuperadas:', data.presencas);
return data.presencas;
} catch (error) {
console.error('Erro ao buscar presenças:', error);
return [];
}
};
async atualizarPresenca(id, novaDataHora){
try {
const response = await fetch(`${this.apiUrl}Presenca.php`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ id, novaDataHora }),
});
const data = await response.json();
if (data.status) {
console.log('Presença atualizada:', data);
} else {
console.log('Erro ao atualizar presença:', data.error);
}
} catch (error) {
console.error('Erro ao atualizar presença:', error);
}
};
render() {
const container = document.createElement('div');
container.className = 'camera-container container';
const title = document.createElement('h1');
title.textContent = 'Presenças Registradas';
container.appendChild(title);
const inputRegistro = document.createElement('input');
inputRegistro.type = 'text';
inputRegistro.placeholder = 'Digite o número do registro';
inputRegistro.onchange = (e) => this.handleRegistroPesquisaChange(e);
container.appendChild(inputRegistro);
const inputData = document.createElement('input');
inputData.type = 'date';
inputData.placeholder = 'Digite a data (YYYY-MM-DD)';
inputData.onchange = (e) => this.handleDataPesquisaChange(e);
container.appendChild(inputData);
const botaoBuscar = document.createElement('button');
botaoBuscar.textContent = 'Buscar';
botaoBuscar.onclick = () => this.buscarPresencas();
container.appendChild(botaoBuscar);
const presencasList = document.createElement('ul');
presencasList.id = 'presencas-list';
container.appendChild(presencasList);
return container;
}
}
|