fix: Corrige processamento das responsabilidades no modal de edição dos militantes

This commit is contained in:
andersonid
2025-04-04 12:15:19 -03:00
parent 5527db8729
commit d468f8ff39

View File

@@ -115,7 +115,6 @@ document.addEventListener('DOMContentLoaded', function() {
// Configuração do modal de edição // Configuração do modal de edição
const modalEditarMilitante = document.getElementById('modalEditarMilitante'); const modalEditarMilitante = document.getElementById('modalEditarMilitante');
console.log('Modal de edição:', modalEditarMilitante);
if (modalEditarMilitante) { if (modalEditarMilitante) {
console.log('Modal encontrado, configurando eventos...'); console.log('Modal encontrado, configurando eventos...');
@@ -124,71 +123,37 @@ document.addEventListener('DOMContentLoaded', function() {
const modalInstance = new bootstrap.Modal(modalEditarMilitante); const modalInstance = new bootstrap.Modal(modalEditarMilitante);
console.log('Instância do modal criada:', modalInstance); console.log('Instância do modal criada:', modalInstance);
// Configurar eventos quando o modal é mostrado
modalEditarMilitante.addEventListener('show.bs.modal', function(event) { modalEditarMilitante.addEventListener('show.bs.modal', function(event) {
console.log('Modal sendo exibido'); console.log('Modal sendo aberto...');
// Obter o botão que disparou o modal
const button = event.relatedTarget; const button = event.relatedTarget;
console.log('Botão:', button);
if (!button) {
console.error('Botão não encontrado!');
return;
}
const militanteId = button.getAttribute('data-militante-id'); const militanteId = button.getAttribute('data-militante-id');
const militanteNome = button.getAttribute('data-militante-nome'); const militanteNome = button.getAttribute('data-militante-nome');
console.log('ID do militante:', militanteId); console.log('ID do militante:', militanteId);
console.log('Nome do militante:', militanteNome); console.log('Nome do militante:', militanteNome);
if (!militanteId) { // Atualizar o título do modal
console.error('ID do militante não encontrado no botão!');
return;
}
// Atualizar o título do modal com o nome do militante
const modalTitle = modalEditarMilitante.querySelector('.modal-title'); const modalTitle = modalEditarMilitante.querySelector('.modal-title');
if (modalTitle) { if (modalTitle) {
modalTitle.innerHTML = `<i class="fas fa-user-edit me-2"></i>Editar ${militanteNome}`; modalTitle.innerHTML = `<i class="fas fa-user-edit me-2"></i>Editar ${militanteNome}`;
} }
// Configurar formulário // Definir o ID do militante no campo hidden
const form = document.getElementById('formEditarMilitante'); const idField = document.getElementById('edit_militante_id');
if (form) { if (idField) {
form.action = `/militantes/editar/${militanteId}`; idField.value = militanteId;
const idInput = document.getElementById('edit_militante_id');
if (idInput) {
idInput.value = militanteId;
}
console.log('Action do formulário:', form.action);
console.log('ID do militante no formulário:', militanteId);
} else {
console.error('Formulário não encontrado!');
return;
} }
// Mostrar loading // Buscar dados do militante
const modalBody = modalEditarMilitante.querySelector('.modal-body'); fetch(`/militantes/dados/${militanteId}`, {
if (modalBody) {
modalBody.style.opacity = '0.5';
}
// Buscar dados completos do militante via AJAX
console.log(`Fazendo requisição para /militantes/${militanteId}/dados`);
// Obter o CSRF token
const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
console.log('CSRF token:', csrfToken);
fetch(`/militantes/${militanteId}/dados`, {
method: 'GET',
headers: { headers: {
'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest'
'X-Requested-With': 'XMLHttpRequest', }
'X-CSRFToken': csrfToken
},
credentials: 'same-origin'
}) })
.then(response => { .then(response => {
console.log('Resposta recebida:', response);
if (!response.ok) { if (!response.ok) {
return response.json().then(data => { return response.json().then(data => {
throw new Error(data.message || `HTTP error! status: ${response.status}`); throw new Error(data.message || `HTTP error! status: ${response.status}`);
@@ -204,85 +169,91 @@ document.addEventListener('DOMContentLoaded', function() {
} }
try { try {
console.log('Preenchendo dados básicos...'); // Preencher os campos do formulário
// Dados Básicos const campos = {
document.getElementById('edit_nome').value = dados.nome || ''; 'edit_nome': dados.nome,
document.getElementById('edit_cpf').value = dados.cpf || ''; 'edit_cpf': dados.cpf,
document.getElementById('edit_titulo_eleitoral').value = dados.titulo_eleitoral || ''; 'edit_titulo_eleitoral': dados.titulo_eleitoral,
document.getElementById('edit_data_nascimento').value = dados.data_nascimento || ''; 'edit_data_nascimento': dados.data_nascimento,
document.getElementById('edit_data_entrada').value = dados.data_entrada_oci || ''; 'edit_data_entrada': dados.data_entrada_oci,
document.getElementById('edit_data_efetivacao').value = dados.data_efetivacao_oci || ''; 'edit_data_efetivacao': dados.data_efetivacao_oci,
console.log('Dados básicos preenchidos'); 'edit_telefone1': dados.telefone1,
'edit_telefone2': dados.telefone2,
'edit_email': dados.email,
'edit_cep': dados.endereco?.cep,
'edit_estado': dados.endereco?.estado,
'edit_cidade': dados.endereco?.cidade,
'edit_bairro': dados.endereco?.bairro,
'edit_rua': dados.endereco?.rua,
'edit_numero': dados.endereco?.numero,
'edit_complemento': dados.endereco?.complemento,
'edit_profissao': dados.profissao,
'edit_regime_trabalho': dados.regime_trabalho,
'edit_empresa': dados.empresa,
'edit_contratante': dados.contratante,
'edit_instituicao_ensino': dados.instituicao_ensino,
'edit_tipo_instituicao': dados.tipo_instituicao,
'edit_sindicato': dados.sindicato,
'edit_cargo_sindical': dados.cargo_sindical,
'edit_central_sindical': dados.central_sindical,
'edit_estado_militante': dados.estado,
'edit_celula': dados.celula_id
};
console.log('Preenchendo dados de contato...'); // Preencher cada campo se ele existir
// Contato Object.entries(campos).forEach(([id, valor]) => {
document.getElementById('edit_telefone1').value = dados.telefone1 || ''; const campo = document.getElementById(id);
document.getElementById('edit_telefone2').value = dados.telefone2 || ''; if (campo && valor !== undefined && valor !== null) {
document.getElementById('edit_email').value = dados.email || ''; campo.value = valor;
console.log('Dados de contato preenchidos');
console.log('Preenchendo dados de endereço...');
// Endereço
if (dados.endereco) {
document.getElementById('edit_cep').value = dados.endereco.cep || '';
document.getElementById('edit_estado').value = dados.endereco.estado || '';
document.getElementById('edit_cidade').value = dados.endereco.cidade || '';
document.getElementById('edit_bairro').value = dados.endereco.bairro || '';
document.getElementById('edit_logradouro').value = dados.endereco.rua || '';
document.getElementById('edit_numero').value = dados.endereco.numero || '';
document.getElementById('edit_complemento').value = dados.endereco.complemento || '';
} }
console.log('Dados de endereço preenchidos');
console.log('Preenchendo dados profissionais...');
// Profissional
document.getElementById('edit_profissao').value = dados.profissao || '';
document.getElementById('edit_regime_trabalho').value = dados.regime_trabalho || '';
document.getElementById('edit_empresa').value = dados.empresa || '';
document.getElementById('edit_contratante').value = dados.contratante || '';
console.log('Dados profissionais preenchidos');
console.log('Preenchendo dados acadêmicos...');
// Acadêmico
document.getElementById('edit_instituicao_ensino').value = dados.instituicao_ensino || '';
document.getElementById('edit_tipo_instituicao').value = dados.tipo_instituicao || '';
console.log('Dados acadêmicos preenchidos');
console.log('Preenchendo dados sindicais...');
// Sindical
document.getElementById('edit_sindicato').value = dados.sindicato || '';
document.getElementById('edit_cargo_sindical').value = dados.cargo_sindical || '';
document.getElementById('edit_central_sindical').value = dados.central_sindical || '';
document.getElementById('edit_dirigente_sindical').checked = dados.dirigente_sindical || false;
console.log('Dados sindicais preenchidos');
console.log('Preenchendo dados organizacionais...');
// Organização
document.getElementById('edit_estado_militante').value = dados.estado || 'ATIVO';
document.getElementById('edit_celula').value = dados.celula_id || '';
// Responsabilidades
const responsabilidades = dados.responsabilidades || 0;
document.querySelectorAll('input[name="responsabilidades"]').forEach(checkbox => {
const valor = parseInt(checkbox.value);
checkbox.checked = (responsabilidades & valor) !== 0;
}); });
console.log('Dados organizacionais preenchidos');
console.log('Todos os dados preenchidos com sucesso!'); // Checkbox de dirigente sindical
const checkDirigente = document.getElementById('edit_dirigente_sindical');
if (checkDirigente) {
checkDirigente.checked = dados.dirigente_sindical;
}
// Checkboxes de responsabilidades
const responsabilidadesMap = {
'Finanças': 'edit_resp_1',
'Imprensa': 'edit_resp_2',
'Quadro-Orientador': 'edit_resp_4'
};
console.log('Responsabilidades recebidas:', dados.responsabilidades);
// Resetar todos os checkboxes primeiro
Object.values(responsabilidadesMap).forEach(id => {
const checkbox = document.getElementById(id);
if (checkbox) {
checkbox.checked = false;
}
});
// Marcar os checkboxes baseado nas responsabilidades recebidas
if (Array.isArray(dados.responsabilidades)) {
dados.responsabilidades.forEach(resp => {
const checkboxId = responsabilidadesMap[resp];
if (checkboxId) {
const checkbox = document.getElementById(checkboxId);
if (checkbox) {
checkbox.checked = true;
console.log(`Marcando checkbox ${checkboxId} para responsabilidade ${resp}`);
}
}
});
}
console.log('Formulário preenchido com sucesso');
} catch (error) { } catch (error) {
console.error('Erro ao preencher os campos:', error); console.error('Erro ao preencher formulário:', error);
throw new Error('Erro ao preencher os dados do militante: ' + error.message); mostrarAlerta('Erro ao carregar dados do militante', 'danger');
} }
}) })
.catch(error => { .catch(error => {
console.error('Erro ao buscar dados do militante:', error); console.error('Erro ao buscar dados:', error);
alert('Erro ao carregar dados do militante: ' + error.message); mostrarAlerta('Erro ao carregar dados do militante', 'danger');
})
.finally(() => {
if (modalBody) {
modalBody.style.opacity = '1';
}
}); });
}); });
@@ -294,21 +265,22 @@ document.addEventListener('DOMContentLoaded', function() {
console.log('Enviando formulário de edição...'); console.log('Enviando formulário de edição...');
const formData = new FormData(this); const formData = new FormData(this);
console.log('Dados do formulário:', Object.fromEntries(formData));
// Adicionar responsabilidades selecionadas // Coletar responsabilidades selecionadas
const responsabilidades = Array.from(this.querySelectorAll('input[name="responsabilidades"]:checked')) const responsabilidades = [];
.map(cb => parseInt(cb.value)) if (document.getElementById('edit_resp_1').checked) responsabilidades.push('Finanças');
.reduce((a, b) => a + b, 0); if (document.getElementById('edit_resp_2').checked) responsabilidades.push('Imprensa');
formData.set('responsabilidades', responsabilidades); if (document.getElementById('edit_resp_4').checked) responsabilidades.push('Quadro-Orientador');
formData.set('responsabilidades', JSON.stringify(responsabilidades));
console.log('Responsabilidades enviadas:', responsabilidades);
// Obter o CSRF token // Obter o CSRF token
const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content'); const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
console.log('CSRF token:', csrfToken);
// Obter o ID do militante do campo hidden // Obter o ID do militante do campo hidden
const militanteId = document.getElementById('edit_militante_id').value; const militanteId = document.getElementById('edit_militante_id').value;
console.log('ID do militante:', militanteId);
if (!militanteId) { if (!militanteId) {
console.error('ID do militante não encontrado!'); console.error('ID do militante não encontrado!');