fix: Corrige processamento das responsabilidades no modal de edição dos militantes
This commit is contained in:
@@ -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!');
|
||||||
|
|||||||
Reference in New Issue
Block a user