$(document).ready(function () { cargarEmpleados(); // Cargar empleados en la tabla function cargarEmpleados() { $.ajax({ url: 'https://worktimehub.com/cp/obtener_empleados.php', type: 'GET', dataType: 'json', // Esto automáticamente convierte la respuesta en JSON success: function (empleados) { console.log("Datos recibidos:", empleados); let html = ''; empleados.forEach(emp => { html += ` ${emp.nombre} ${emp.apellido} ${emp.cargo} ${emp.pago_hora} `; }); $('#tabla-empleados tbody').html(html); }, error: function (xhr, status, error) { console.error("Error al cargar empleados:", xhr.responseText); } }); } // Registrar un nuevo empleado $('#form-registro').on('submit', function (e) { e.preventDefault(); $.ajax({ url: 'https://worktimehub.com/cp/agregar_empleado.php', type: 'POST', data: $(this).serialize(), success: function (response) { alert(response); cargarEmpleados(); // Recargar la lista después de agregar $('#form-registro')[0].reset(); }, error: function () { alert("Error al registrar el empleado."); } }); }); // Abrir el modal con datos del empleado seleccionado $(document).on('click', '.editar', function () { let id = $(this).data('id'); console.log("ID del empleado seleccionado: ", id); $.ajax({ url: 'obtener_empleados.php', type: 'GET', dataType: 'json', // Esto hace que no necesites JSON.parse() success: function (empleados) { console.log("Datos de empleados recibidos:", empleados); let empleado = empleados.find(emp => emp.id == id); if (empleado) { $('#edit-id').val(empleado.id); $('#edit-nombre').val(empleado.nombre); $('#edit-apellido').val(empleado.apellido); $('#edit-cargo').val(empleado.cargo); $('#edit-pago_hora').val(empleado.pago_hora); $('#edit-estado').val(empleado.estado); $('#edit-telefono').val(empleado.telefono); $('#modal-editar').modal('show'); } else { console.error("Empleado no encontrado en la lista."); } }, error: function (xhr, status, error) { console.error("Error al obtener empleados:", error); console.log("Respuesta del servidor:", xhr.responseText); } }); }); // Guardar cambios al editar $('#form-editar').on('submit', function (e) { e.preventDefault(); $.ajax({ url: 'https://worktimehub.com/cp/editar_empleado.php', type: 'POST', data: $(this).serialize(), success: function (response) { alert(response); cargarEmpleados(); $('#modal-editar').modal('hide'); } }); }); //AGREGAR ASISTENCIA ------------------------------- $(document).on('click', '.asistencia', function () { let id = $(this).data('id'); let nombre = $(this).data('nombre') + " " + $(this).data('apellido'); let pago = $(this).data('pago'); // Rellenar los campos básicos $('#asistencia-id').val(id); $('#asistencia-nombre').val(nombre); $('#pago-hora').val(pago); // Obtener la fecha actual en formato YYYY-MM-DD para sugerirla let today = new Date().toISOString().split('T')[0]; $('#fecha').val(today); // Obtener el pago por hora desde el servidor // $.ajax({ // url: 'obtener_pago_hora.php', // type: 'GET', // data: { empleado_id: id }, // success: function (response) { // let data = JSON.parse(response); // if (data.pago_hora) { // $('#pago_hora').val(data.pago_hora); // } else { // alert("Error al obtener el pago por hora."); // } // }, // error: function () { // alert("Error en la consulta del pago por hora."); // } // }); $('#modal-asistencia').modal('show'); }); // Enviar formulario de asistencia $('#form-asistencia').on('submit', function (e) { e.preventDefault(); $.ajax({ url: 'registrar_asistencia.php', type: 'POST', data: $(this).serialize(), success: function (response) { alert(response); $('#modal-asistencia').modal('hide'); $('#form-asistencia')[0].reset(); }, error: function () { alert("Error al registrar la asistencia."); } }); }); //AGREGAR ASISTENCIA ------------------------------- // reporte asistencia --------------------------- cargarEmpleadosDOS(); function cargarEmpleadosDOS() { $.ajax({ url: 'obtener_empleados_2.php', type: 'GET', dataType: 'json', // Asegurar que los datos se interpretan correctamente success: function (empleados) { let opciones = ''; empleados.forEach(emp => { opciones += ``; }); $('#empleado_id').html(opciones); }, error: function (xhr, status, error) { console.error("Error al cargar empleados:", error); } }); } $('#form-reporte').on('submit', function (e) { e.preventDefault(); let empleado_id = $('#empleado_id').val(); let fecha_inicio = $('#fecha_inicio').val(); let fecha_fin = $('#fecha_fin').val(); $.ajax({ url: 'obtener_asistencias.php', type: 'GET', data: { empleado_id, fecha_inicio, fecha_fin }, dataType: 'json', // Asegurar que la respuesta sea JSON success: function (reporte) { console.log("Datos recibidos:", reporte); mostrarReporte(reporte); }, error: function (xhr, status, error) { console.error("Error en AJAX:", error); console.log("Respuesta del servidor:", xhr.responseText); } }); }); function mostrarReporte(reporte) { let html = '

Reporte de Asistencia

'; let totalHorasGlobal = 0; if (Object.keys(reporte).length === 0) { html += "

No hay registros de asistencia en este rango de fechas.

"; } else { Object.keys(reporte).forEach(semana => { html += `

Semana ${semana}

`; html += ''; if (Array.isArray(reporte[semana]['dias'])) { reporte[semana]['dias'].forEach(dia => { html += ``; }); } html += `
DetailsHours
${dia.fecha}
Time in: ${dia.hora_entrada}
Time out: ${dia.hora_salida} ${dia.hora_salida === '00:00:00' ? '<- NO MARCASTE TU SALIDA HABLA CON EL ADMINISTRADOR' : ''}

${dia.detalles === '' ? '<- Edita la descripcion de tu trabajo' : ''} ${dia.detalles}

${parseFloat(dia.horas).toFixed(2)}
`; html += `

Total Horas Semana ${semana}: ${parseFloat(reporte[semana]['total_horas']).toFixed(2)}

`; totalHorasGlobal += parseFloat(reporte[semana]['total_horas']); }); html += `

Total de Horas Trabajadas: ${totalHorasGlobal.toFixed(2)}
`; html += ''; html += '

 

 

'; } $('#reporte-asistencia').html(html); } $(document).on('click', '#generar-pdf', function () { let empleado_id = $('#empleado_id').val(); let fecha_inicio = $('#fecha_inicio').val(); let fecha_fin = $('#fecha_fin').val(); window.open(`generar_reporte_pdf.php?empleado_id=${empleado_id}&fecha_inicio=${fecha_inicio}&fecha_fin=${fecha_fin}`, '_blank'); }); // reporte asistencia --------------------------- // ENVIO DE CORREO ------------------------------ $(document).ready(function () { // Mostrar modal y fondo cuando se presiona "Enviar horas" $(document).on('click', '#enviar-horas', function () { $('#fondo-transparente, #confirmacion-modal').fadeIn(); $('#confirmacion-modal').modal('show'); $('#confirmar-boton').show(); }); // Cerrar modal y fondo con botón "X" $(document).on('click', '#cerrar-modal', function () { $('#fondo-transparente, #confirmacion-modal').fadeOut(); $('#confirmacion-modal').modal('hide'); $('#fondo-transparente').hide(); }); // Habilitar el botón de envío solo si se marca el checkbox $('#confirmar-envio').change(function () { $('#confirmar-boton').prop('disabled', !$(this).prop('checked')); }); // Enviar el correo y mostrar mensaje de confirmación $(document).on('click', '#confirmar-boton', function () { $('#confirmar-boton').hide(); let empleado_id = $('#empleado_id').val(); let empleado_nombre = $('#empleado_id option:selected').text(); let fecha_inicio = $('#fecha_inicio').val(); let fecha_fin = $('#fecha_fin').val(); let empleado_nombre_encoded = encodeURIComponent(empleado_nombre); let reporte_url = `https://worktimehub.com/cp/generar_reporte_pdf.php?empleado_id=${empleado_id}&fecha_inicio=${fecha_inicio}&fecha_fin=${fecha_fin}`; $.ajax({ url: 'enviar_correo.php', type: 'POST', data: { empleado_nombre: empleado_nombre, reporte_url: reporte_url, fecha_inicio: fecha_inicio, fecha_fin: fecha_fin }, success: function () { $('#confirmacion-modal').fadeOut(); $('#confirmacion-modal').modal('hide'); $('#mensaje-enviado').fadeIn(); $('#mensaje-enviado').modal('show'); }, error: function () { alert('❌ Error al enviar el correo.'); } }); }); // Cerrar mensaje de confirmación y ocultar el fondo $(document).on('click', '#cerrar-mensaje', function () { $('#mensaje-enviado, #fondo-transparente').fadeOut(); $('#mensaje-enviado').modal('hide'); $('#fondo-transparente').hide(); }); }); // ENVIO DE CORREO ------------------------------ FIN // Abrir el modal con datos del asistencias seleccionado $(document).on('click', '.editarasistencia', function () { let idasistencia = $(this).data('idasistencia'); console.log("ID del asistencia seleccionado: ", idasistencia); $.ajax({ url: 'obtener_asistencia_e.php?id='+idasistencia, // Esto se procesará correctamente en PHP type: 'GET', dataType: 'json', success: function (asistencias) { console.log("Datos de asistencias recibidos:", asistencias); let asistencia = asistencias.find(emp => emp.id == idasistencia); if (asistencia) { // Llenar el modal con los datos de la asistencia $('#edit-id-asistencias').val(asistencia.id); $('#edit-hora_entrada').val(asistencia.hora_entrada); $('#edit-hora_salida').val(asistencia.hora_salida); $('#edit-fecha').val(asistencia.fecha); $('#edit-hora_entrada-text').text(asistencia.hora_entrada); $('#edit-hora_salida-text').text(asistencia.hora_salida); $('#edit-fecha-text').text(asistencia.fecha); $('#edit-detalles').val(asistencia.detalles); $('#edit-pago_hora').val(asistencia.pago_hora); $('#modal-editar-asistencias').modal('show'); } else { console.error("Asistencia no encontrada en la lista."); } }, error: function (xhr, status, error) { console.error("Error al obtener asistencia:", error); console.log("Respuesta del servidor:", xhr.responseText); } }); }); $('#form-asistencia-2').on('submit', function (e) { e.preventDefault(); console.log($(this).serialize()); $.ajax({ url: 'editar_asistencia.php', type: 'POST', data: $(this).serialize(), success: function (response) { alert("Actualizado ok"); $("#mensaje").text("Actualizado asistencia OK") .removeClass("alert-danger").addClass("alert-success").removeClass("d-none"); console.log("Actualizado ok"); $('#modal-editar-asistencias').modal('hide'); // Recuperar los valores actuales del formulario de filtro let empleado_id = $('#empleado_id').val(); let fecha_inicio = $('#fecha_inicio').val(); let fecha_fin = $('#fecha_fin').val(); // Hacer una nueva consulta para obtener los datos actualizados $.ajax({ url: 'obtener_asistencias.php', type: 'GET', data: { empleado_id, fecha_inicio, fecha_fin }, dataType: 'json', success: function (reporteActualizado) { console.log("Datos actualizados:", reporteActualizado); mostrarReporte(reporteActualizado); // Ahora llamamos a la función con datos actualizados }, error: function (xhr, status, error) { console.error("Error al obtener datos actualizados:", error); } }); } }); }); // eliminar sistencia ---- $(document).ready(function() { $("#btn-eliminar-asistencia").click(function() { var idAsistencia = $("#edit-id-asistencias").val(); if (!idAsistencia) { alert("No se ha seleccionado una asistencia válida."); return; } if (confirm("¿Estás seguro de que deseas eliminar esta asistencia? Esta acción no se puede deshacer.")) { $.ajax({ url: "eliminar_asistencia.php", type: "POST", data: { id: idAsistencia }, dataType: "json", success: function(response) { if (response.success) { alert("Asistencia eliminada correctamente."); $("#modal-editar-asistencias").modal("hide"); // location.reload(); $('#form-reporte').trigger('submit'); } else { alert("Error al eliminar: " + response.error); } }, error: function() { alert("Hubo un error en la solicitud."); } }); } }); }); // fin eliminar asistencia ----------------------- });