{% set route = app.request.get('_route') %}
{% set hide_footer_info = route in ['first_login'] %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<script>
$(document).ready(function() {
$('.modal').on('show.bs.modal', function () {
var $modalTitle = $(this).find('.modal-title');
if ($modalTitle.text().trim() === 'Declaración jurada de ausencia de conflictos de intereses y de confidencialidad para procesos de compra') {
$modalTitle.addClass('d-none')
}
if ($modalTitle.text().trim() === 'Declaración jurada de ausencia de conflictos de intereses y de confidencialidad') {
$modalTitle.addClass('d-none')
}
});
});
$(function () {
$(document).on('click', '[data-impersonate]', function () {
var username = $(this).data('uname');
alert('Se cambiará al usuario <strong>' + username + '</strong>', function () {
$.get('?_switch_user=_exit').done(function () {
$.get('?_switch_user=' + username).done(function () {
window.location.href = "{{ path('dashboard') }}";
})
}).fail(function () {
alert('Hubo un error al realizar la operación. Por favor intentelo nuevamente');
});
});
});
$(document).on('click', '#btn-profile-history', function(e) {
e.preventDefault();
var $btn = $(this);
var url = $btn.data('history-url');
var $modal = $('#modal_profile_history');
if (!url) {
console.error('URL del historial no encontrada');
alert('Error: No se pudo obtener la URL del historial');
return;
}
// Crear modal si no existe
if ($modal.length === 0) {
$('body').append('<div id="modal_profile_history" class="modal fade" aria-hidden="true" tabindex="-1"></div>');
$modal = $('#modal_profile_history');
}
console.log('Cargando historial desde:', url);
$.ajax({
url: url,
method: 'GET',
dataType: 'html',
success: function(response) {
console.log('Respuesta recibida, actualizando modal');
$modal.html(response);
// Esperar un momento para que el DOM se actualice
setTimeout(function() {
// Usar el método de jQuery que funciona con Bootstrap 5
if (typeof $modal.modal === 'function') {
$modal.modal('show');
} else {
// Fallback: usar la API nativa de Bootstrap 5
try {
var BootstrapModal = window.bootstrap && window.bootstrap.Modal
? window.bootstrap.Modal
: (typeof bootstrap !== 'undefined' ? bootstrap.Modal : null);
if (BootstrapModal) {
var modalInstance = new BootstrapModal($modal[0], {
backdrop: true,
keyboard: true
});
modalInstance.show();
} else {
// Último recurso: mostrar manualmente
$modal.addClass('show').css('display', 'block');
$('body').addClass('modal-open');
if (!$('.modal-backdrop').length) {
$('body').append('<div class="modal-backdrop fade show"></div>');
}
}
} catch (e) {
console.error('Error al mostrar modal:', e);
// Mostrar manualmente como último recurso
$modal.addClass('show').css('display', 'block');
$('body').addClass('modal-open');
if (!$('.modal-backdrop').length) {
$('body').append('<div class="modal-backdrop fade show"></div>');
}
}
}
}, 100);
},
error: function(xhr, status, error) {
console.error('Error al cargar el historial:', {
status: xhr.status,
statusText: xhr.statusText,
responseText: xhr.responseText,
url: url
});
var errorMsg = 'Error al cargar el historial';
if (xhr.status === 404) {
errorMsg = 'No se encontró el historial.';
} else if (xhr.status === 403) {
errorMsg = 'No tiene permisos para acceder al historial.';
} else if (xhr.status === 401) {
errorMsg = 'Debe estar autenticado para acceder al historial.';
}
alert(errorMsg + ' (Error ' + xhr.status + ')');
}
});
});
// Cargar perfil del proveedor mediante AJAX
$(document).on('click', '#btn-profile-supplier, .open-supplier-profile-modal', function(e) {
e.preventDefault();
var $btn = $(this);
var url = $btn.data('profile-url') || $btn.attr('data-profile-url');
var $modal = $('#modal_profile');
var modalElement = $modal[0];
if (!url) {
console.error('URL del perfil no encontrada');
alert('Error: No se pudo obtener la URL del perfil');
return;
}
if (!modalElement) {
console.error('Elemento del modal no encontrado');
alert('Error: No se pudo encontrar el modal');
return;
}
console.log('Cargando perfil desde:', url);
$.ajax({
url: url,
method: 'GET',
dataType: 'html',
success: function(response) {
console.log('Respuesta recibida, actualizando modal');
$modal.html(response);
// Esperar un momento para que el DOM se actualice
setTimeout(function() {
// Usar el método de jQuery que funciona con Bootstrap 5
// Bootstrap 5 expone el plugin de jQuery automáticamente
if (typeof $modal.modal === 'function') {
$modal.modal('show');
} else {
// Fallback: usar la API nativa de Bootstrap 5
try {
// Intentar acceder a bootstrap desde window
var BootstrapModal = window.bootstrap && window.bootstrap.Modal
? window.bootstrap.Modal
: (typeof bootstrap !== 'undefined' ? bootstrap.Modal : null);
if (BootstrapModal) {
var modalInstance = new BootstrapModal(modalElement, {
backdrop: true,
keyboard: true
});
modalInstance.show();
} else {
// Último recurso: mostrar manualmente
$modal.addClass('show').css('display', 'block');
$('body').addClass('modal-open');
if (!$('.modal-backdrop').length) {
$('body').append('<div class="modal-backdrop fade show"></div>');
}
}
} catch (e) {
console.error('Error al mostrar modal:', e);
// Mostrar manualmente como último recurso
$modal.addClass('show').css('display', 'block');
$('body').addClass('modal-open');
if (!$('.modal-backdrop').length) {
$('body').append('<div class="modal-backdrop fade show"></div>');
}
}
}
}, 100);
},
error: function(xhr, status, error) {
console.error('Error al cargar el perfil:', {
status: xhr.status,
statusText: xhr.statusText,
responseText: xhr.responseText,
url: url
});
var errorMsg = 'Error al cargar el perfil';
if (xhr.status === 404) {
errorMsg = 'No se encontró la página del perfil. Verifique que tenga un proveedor asociado.';
} else if (xhr.status === 403) {
errorMsg = 'No tiene permisos para acceder al perfil.';
} else if (xhr.status === 401) {
errorMsg = 'Debe estar autenticado para acceder al perfil.';
}
alert(errorMsg + ' (Error ' + xhr.status + ')');
}
});
});
});
</script>
{% endif %}
<footer class="footer text-white py-3 fixed-bottom ">
<div class="container">
<div class="row">
<div class="col-md-auto me-auto"><span class="mb-3 mb-md-0 text-sm text-body-secondary">BancoEstado Express 2019-{{ 'now'|date('Y') }}. Todos los derechos reservados.</span></div>
<div class="col-md-auto ms-auto justify-content-end d-flex">
<img src="{{ asset('/build/img/app-footer-logo.png') }}" alt="Logo BancoEstado Express" />
</div>
</div>
</div>
</footer>