/* data table*/
$('.cliente').DataTable({
    "autoWidth": false,
    "deferRender":true,
    "retrieve":true,
    "scrollCollapse": true,
    "paging": false,
    "processing": false,
    "sScrollY": "75vh",
    "stateSave":  true,
    "language": {

            "decimal": "",
            "sEmptyTable": "No hay información",
            "sInfo": "Mostrando _START_ a _END_ de _TOTAL_ Entradas",
            "sInfoEmpty": "Mostrando 0 to 0 of 0 Entradas",
            "sInfoFiltered": "(Filtrado de _MAX_ total entradas)",
            "sInfoPostFix": "",
            "sInfoThousands": ",",
            "sLengthMenu": "Mostrar _MENU_ Entradas",
            "sLoadingRecords": "Cargando...",
            "sProcessing": "Procesando...",
            "sSearch": "Buscar:",
            "sZeroRecords": "Sin resultados encontrados",
            "oPaginate": {
                "sFirst": "Primero",
                "sLast": "Ultimo",
                "sNext": "Siguiente",
                "sPrevious": "Anterior"
            },
            "oAria": {
                "sSortAscending": ": Activar para ordenar la columna de manera ascendete",
                "sSortDescending": ": Activar para ordenar la columna de manera descendete",
            }
        },
        "dom": "Bfrtilp",
                "buttons": [
                    {
                        "extend": "excel",
                        "text": "<i class='fas fa-file-excel'></i>",
                        "titleAttr" : "Exportar a Excel",
                        "className": 'btn btn-success',
                        "filename": function() {
                            return "Lista de PACIENTES"      
                          },
                        "exportOptions": {
                            "columns": ["2","3","4","5", "6", "7"]
                        }
                    },
                    {
                        "extend": "pdfHtml5",
                        "download": "open",
                        "text": "<i class='fas fa-file-pdf'></i>",
                        "titleAttr" : "Exportar a pdf",
                        "className": 'btn btn-danger',
                        "filename" : function() {
                            return "Lista de PACIENTES"      
                          },      
                        "customize": function(doc) {
                            doc.defaultStyle.fontSize = 8; 
                            doc.defaultStyle.alignment = 'justify'
                            
                         
                        },
                         "exportOptions": {
                            "columns": ["2","3","4","5","6","7"],
                            "page": 'current'
                        },
                        "footer": true

                    },
                    {
                        "extend": "print",
                        "text": "<i class='fa fa-print'></i>",
                        "titleAttr" : "Imprimir",
                        "className": 'btn btn-info',
                        "customize": function (win) {
                            $(win.document.body)
                                .css( "font-size", "8pt" )
                            $(win.document.body).find( "table" )
                                .addClass( "compact" )
                                .css( "font-size", "8pt" );
                        },
                        "exportOptions": {
                            "columns": ["2","3","4","5","6","7"]
                        }
                    }
                ]
      
});

    /*=============================================
        REVISAR SI EL PACIENTE YA ESTÁ REGISTRADO
        =============================================*/

$("#nuevoRuc").change(function(){

    $(".alert").remove();

    var paciente = $(this).val();

    var datos = new FormData();
    datos.append("validarPaciente", paciente);

    $.ajax({
                url:"ajax/paciente.ajax.php",
                method:"POST",
                data: datos,
                cache: false,
                contentType: false,
                processData: false,
                dataType: "json",
                success:function(respuesta){
                    
                    if(respuesta){

                        $("#nuevoRuc").parent().after('<div class="alert alert-warning">Este dni ya existe en la base de datos</div>');

                        $("#nuevoRuc").val("");

                    }

                }

            })
 })

 function cargarUbigeoEdicion(tipo, idPadre, selectorDestino, valorSeleccionado) {
    var datos = new FormData();
    if(tipo == "provincia"){
        datos.append("idDepartamento", idPadre);
    } else {
        datos.append("idProvincia", idPadre);
    }

    return $.ajax({
        url: "ajax/ubigeo.ajax.php",
        method: "POST",
        data: datos,
        cache: false,
        contentType: false,
        processData: false,
        dataType: "json",
        success: function(respuesta) {
            $(selectorDestino).html('<option value="">Seleccionar...</option>');
            respuesta.forEach(res => {
                $(selectorDestino).append('<option value="' + res.id + '">' + res.name + '</option>');
            });
            $(selectorDestino).val(valorSeleccionado).trigger('change.select2');
        }
    });
}



/** EDITAR PACIENTE */

$(document).on("click", ".btnEditarPaciente", function(){

    var idPaciente = $(this).attr("idPaciente");

    var datos = new FormData();
    datos.append("idPaciente", idPaciente);

    $.ajax({

        url:"ajax/paciente.ajax.php",
        method: "POST",
        data: datos,
        cache: false,
        contentType: false,
        processData: false,
        dataType: "json",
        success: function(respuesta){
            
        

          $("#idPaciente").val(respuesta["id_paciente"]);
            $("#editarHistoria").val(respuesta["codigo_hc"]);
            $("#editarRuc").val(respuesta["dni"]);
            $("#editarNombre").val(respuesta["nombres"]);
            $("#editarApellido").val(respuesta["apellidos"]);
            $("#editarGenero").val(respuesta["sexo"]);
            $("#editarFecha").val(respuesta["fecha_nacimiento"]);
            $("#editarTelefono").val(respuesta["contacto"]);
            $("#editarDireccion").val(respuesta["direccion"]);
            $("#editarOcupacion").val(respuesta["ocupacion"]).trigger('change');
            $("#editarEstadoCivil").val(respuesta["estado_civil"]);
            $("#editarGradoInstruccion").val(respuesta["grado_instruccion"]);
            $("#editarReligion").val(respuesta["religion"]);
            $("#editarCorreo").val(respuesta["correo"]);

           // =============================================
            // LOGICA PARA NACIMIENTO (Sincronizada)
            // =============================================

            // 2. Cargamos Provincias manualmente para asegurar la selección
            $("#editarDepartamento").val(respuesta["id_dep_nac"]).trigger('change.select2');
            
            cargarUbigeoEdicion("provincia", respuesta["id_dep_nac"], "#editarProvincia", respuesta["id_prov_nac"])
            .then(function() {
                return cargarUbigeoEdicion("distrito", respuesta["id_prov_nac"], "#editarDistrito", respuesta["id_ubigeo_nacimiento"]);
            });

            // 3. PROCESAR PROCEDENCIA (Igualito)
            $("#editarProcedenciaDepartamento").val(respuesta["id_dep_pro"]).trigger('change.select2');

            cargarUbigeoEdicion("provincia", respuesta["id_dep_pro"], "#editarProcedenciaProvincia", respuesta["id_prov_pro"])
            .then(function() {
                return cargarUbigeoEdicion("distrito", respuesta["id_prov_pro"], "#editarProcedenciaDistrito", respuesta["id_ubigeo_procedencia"]);
            });
            
        
        }
    })
})

/*=============================================
ELIMINAR PACIENTE
=============================================*/
$(document).on("click", ".btnEliminarPaciente", function(){

	var idPaciente = $(this).attr("idPaciente");
  
	swal({
	  title: '¿Está seguro de borrar la Paciente?',
	  text: "¡Si no lo está puede cancelar la accíón!",
	  type: 'warning',
	  showCancelButton: true,
	  confirmButtonColor: '#3085d6',
		cancelButtonColor: '#d33',
		cancelButtonText: 'Cancelar',
		confirmButtonText: 'Si, borrar Paciente!'
	}).then(function(result){
  
	  if(result.value){
  
		window.location = "index.php?ruta=paciente&idPaciente="+idPaciente;
  
	  }
  
	})
  
  })


$(".nombre").change(function(){

	$(".alert").remove();
	var input = $(this).val();

	if(input.length < 4) {

		$(".nombre").parent().after('<div class="alert alert-warning">EL NOMBRE DEBE CONTENER MINIMO 4 LETRAS </div>');

		$(".nombre").val("");
	}
	
})

$(".apellidos").change(function(){

	$(".alert").remove();
	var input = $(this).val();

	if(input.length < 4) {

		$(".apellidos").parent().after('<div class="alert alert-warning">EL NOMBRE DEBE CONTENER MINIMO 4 LETRAS </div>');

		$(".nombre").val("");
	}
	
})

$(".direccion").change(function(){
	
	$(".alert").remove();
	var input = $(this).val();

	if(input.length < 10) {

		$(".direccion").parent().after('<div class="alert alert-warning">LA DIRECCION DEBE CONTENER COMO MINIMO 10 LETRAS </div>');

		$(".direccion").val("");
	}
	
})

$(".cliente").on("click", ".btnEnviarTriaje", function() {
    var idPaciente = $(this).attr("idPaciente");
    $("#idPacienteIngreso").val(idPaciente); // Pasa el ID al input oculto del modal
    $("#modalIngresoEmergencia").modal("show");
});

/*=============================================
UBIGEO PARA LUGAR DE NACIMIENTO
=============================================*/
$("#nuevoDepartamento").change(function(){
    var idDep = $(this).val();
    var datos = new FormData();
    datos.append("idDepartamento", idDep);

    $.ajax({
        url: "ajax/ubigeo.ajax.php",
        method: "POST",
        data: datos,
        cache: false,
        contentType: false,
        processData: false,
        dataType: "json",
        success: function(respuesta){
            $("#nuevoProvincia").html('<option value="">Seleccione Provincia</option>');
            $("#nuevoDistrito").html('<option value="">Seleccione Distrito</option>');
            respuesta.forEach(res => {
                $("#nuevoProvincia").append('<option value="'+res.id+'">'+res.name+'</option>');
            });
        }
    });
});

$("#nuevoProvincia").change(function(){
    var idProv = $(this).val();
    var datos = new FormData();
    datos.append("idProvincia", idProv);

    $.ajax({
        url: "ajax/ubigeo.ajax.php",
        method: "POST",
        data: datos,
        cache: false,
        contentType: false,
        processData: false,
        dataType: "json",
        success: function(respuesta){
            $("#nuevoDistrito").html('<option value="">Seleccione Distrito</option>');
            respuesta.forEach(res => {
                $("#nuevoDistrito").append('<option value="'+res.id+'">'+res.name+'</option>');
            });
        }
    });
});

/*=============================================
UBIGEO PARA LUGAR DE PROCEDENCIA (RESIDENCIA)
=============================================*/
$("#procedenciaDepartamento").change(function(){
    var idDep = $(this).val();
    var datos = new FormData();
    datos.append("idDepartamento", idDep);

    $.ajax({
        url: "ajax/ubigeo.ajax.php",
        method: "POST",
        data: datos,
        cache: false,
        contentType: false,
        processData: false,
        dataType: "json",
        success: function(respuesta){
            $("#procedenciaProvincia").html('<option value="">Seleccione Provincia</option>');
            $("#procedenciaDistrito").html('<option value="">Seleccione Distrito</option>');
            respuesta.forEach(res => {
                $("#procedenciaProvincia").append('<option value="'+res.id+'">'+res.name+'</option>');
            });
        }
    });
});

$("#procedenciaProvincia").change(function(){
    var idProv = $(this).val();
    var datos = new FormData();
    datos.append("idProvincia", idProv);

    $.ajax({
        url: "ajax/ubigeo.ajax.php",
        method: "POST",
        data: datos,
        cache: false,
        contentType: false,
        processData: false,
        dataType: "json",
        success: function(respuesta){
            $("#procedenciaDistrito").html('<option value="">Seleccione Distrito</option>');
            respuesta.forEach(res => {
                $("#procedenciaDistrito").append('<option value="'+res.id+'">'+res.name+'</option>');
            });
        }
    });
});

$(document).ready(function(){
    // Inicializar máscaras de entrada
    $('[data-mask]').inputmask();
});

// Si usas el modal, es mejor asegurar la carga al abrirlo
$('#modalAgregarPaciente').on('shown.bs.modal', function () {
    $('[data-mask]').inputmask();
});

/*=============================================
CAMBIO DINÁMICO DE UBIGEO EN EL MODAL EDITAR
=============================================*/

// 1. Cuando cambie el Departamento de Nacimiento
$("#editarDepartamento").change(function(){
    var idDepartamento = $(this).val();
    // Reutilizamos la función que ya creamos, pero sin pasar un "valorSeleccionado" 
    // para que simplemente cargue la lista y el usuario elija
    cargarUbigeoEdicion("provincia", idDepartamento, "#editarProvincia", null);
    $("#editarDistrito").html('<option value="">Seleccionar...</option>');
});

// 2. Cuando cambie la Provincia de Nacimiento
$("#editarProvincia").change(function(){
    var idProvincia = $(this).val();
    cargarUbigeoEdicion("distrito", idProvincia, "#editarDistrito", null);
});

// 3. Cuando cambie el Departamento de Procedencia
$("#editarProcedenciaDepartamento").change(function(){
    var idDepartamento = $(this).val();
    cargarUbigeoEdicion("provincia", idDepartamento, "#editarProcedenciaProvincia", null);
    $("#editarProcedenciaDistrito").html('<option value="">Seleccionar...</option>');
});

// 4. Cuando cambie la Provincia de Procedencia
$("#editarProcedenciaProvincia").change(function(){
    var idProvincia = $(this).val();
    cargarUbigeoEdicion("distrito", idProvincia, "#editarProcedenciaDistrito", null);
});