fix: corrige validação e salvamento do formulário de edição de militante - Corrige validação do email, ajusta conversão de datas, corrige CSRF token e melhora feedback visual

This commit is contained in:
andersonid
2025-04-07 03:42:01 -03:00
committed by LS
parent 179ea3cad0
commit 3f2e6e3022
3 changed files with 116 additions and 115 deletions

View File

@@ -317,7 +317,7 @@ async function carregarDadosMilitante(militanteId) {
const emailElement = document.getElementById('edit_email');
if (emailElement) {
if (data.emails && data.emails.length > 0) {
emailElement.value = data.emails[0].endereco_email;
emailElement.value = data.emails[0]; // O email já vem como string
} else {
emailElement.value = '';
}
@@ -568,7 +568,7 @@ document.addEventListener('DOMContentLoaded', function() {
const emailElement = document.getElementById('edit_email');
if (emailElement) {
if (data.emails && data.emails.length > 0) {
emailElement.value = data.emails[0].endereco_email;
emailElement.value = data.emails[0]; // O email já vem como string
} else {
emailElement.value = '';
}
@@ -667,10 +667,41 @@ document.addEventListener('DOMContentLoaded', function() {
formEditarMilitante.addEventListener('submit', async function(event) {
event.preventDefault();
console.log('Formulário de edição enviado');
// Validar todos os campos antes do envio
const form = this;
form.classList.add('was-validated');
// Verificar se o formulário é válido
if (!form.checkValidity()) {
event.stopPropagation();
// Encontrar o primeiro campo inválido
const invalidField = form.querySelector(':invalid');
if (invalidField) {
// Encontrar a aba que contém o campo inválido
const tabPane = invalidField.closest('.tab-pane');
if (tabPane) {
// Ativar a aba
const tabId = tabPane.id;
const tab = document.querySelector(`button[data-bs-target="#${tabId}"]`);
if (tab) {
const bsTab = new bootstrap.Tab(tab);
bsTab.show();
// Focar no campo inválido após a aba ser exibida
setTimeout(() => {
invalidField.focus();
}, 200);
}
}
}
return;
}
// Se chegou aqui, o formulário é válido
// Obter ID do militante
const militanteId = document.getElementById('edit_militante_id').value;
console.log('ID do militante:', militanteId);
if (!militanteId) {
console.error('ID do militante não encontrado');
@@ -679,24 +710,21 @@ document.addEventListener('DOMContentLoaded', function() {
}
// Criar FormData com todos os campos
const formData = new FormData(this);
const formData = new FormData(form);
// Garantir que o valor das responsabilidades seja enviado
const responsabilidadesValue = document.getElementById('responsabilidades_values').value;
formData.set('responsabilidades_valor', responsabilidadesValue);
console.log('Valor das responsabilidades sendo enviado:', responsabilidadesValue);
try {
// Construir URL
const url = `/militantes/editar/${militanteId}`;
console.log('URL da requisição:', url);
const csrfToken = document.querySelector('input[name="csrf_token"]').value;
// Enviar requisição
const response = await fetch(url, {
method: 'POST',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-Token': getCsrfToken()
'X-CSRF-Token': csrfToken
},
body: formData
});
@@ -706,17 +734,11 @@ document.addEventListener('DOMContentLoaded', function() {
}
const data = await response.json();
console.log('Resposta do servidor:', data);
if (data.status === 'success') {
// Fechar modal
const modal = bootstrap.Modal.getInstance(document.getElementById('modalEditarMilitante'));
modal.hide();
// Mostrar mensagem de sucesso
mostrarAlerta('Militante atualizado com sucesso!', 'success');
// Recarregar página após um pequeno delay para a mensagem ser vista
setTimeout(() => {
location.reload();
}, 1000);