var tabla;
function init(){
   
    listardetalle();

    $("#frmForm").on("submit", function(e) {
        guardaryeditar_visita(e);
    });


        $.post("../../ajax/cliente.php?op=selectCliente", function(r){
            if ($.fn.select2 && $('#idpersona').data('select2')) {
            $('#idpersona').select2('destroy');
            }
            // Limpiar las opciones antes de agregar las nuevas
            $("#idpersona").html('<option value="">Seleccione Cliente</option>'); 
            // Actualizar el contenido del select con las opciones de producto
            $("#idpersona").append(r);
        
            // Inicializar Select2 nuevamente
            $('#idpersona').select2({
            theme: 'bootstrap4',
            placeholder: 'Seleccione un cliente',
            allowClear: true,
            });
        });

        $("#idpersona").on("change", function () {
          var idpersona = $("#idpersona").val(); // Obtener el ID del plan seleccionado

          if (idpersona) {
            // Hacer la solicitud AJAX para traer los datos del plan
            $.post("../../ajax/contrato.php?op=obtenerDatosPersona&idpersona=" + idpersona, function (data) {
              var planContrato = JSON.parse(data); // Convertir la respuesta a JSON
              
              // Llenar los campos de descripción y mensualidad
              $("#direccion").val(planContrato.address);
              $("#iddireccion").val(planContrato.iddireccion);
              $("#referencia").val(planContrato.description);
              $("#celular1").val(planContrato.celular);
              $("#celular2").val(planContrato.whatsapp);
            }).fail(function () {
              alert("Error al obtener los datos del plan. Intente nuevamente.");
            });
          } else {
            // Limpiar los inputs si no hay plan seleccionado
              $("#direccion").val("");
              $("#referencia").val("");
              $("#celular1").val("");
              $("#celular2").val("");
          }
        });

        $.post("../../ajax/tecnologia.php?op=selectTecnologia", function(r){
          if ($.fn.select2 && $('#tecnologia').data('select2')) {
            $('#tecnologia').select2('destroy');
          }
        
          // Actualizar el contenido del select
          $("#tecnologia").html('<option value="">Seleccione Tecnologia</option>');
          // Actualizar el contenido del select
           $("#tecnologia").append(r);
        
          // Inicializar Select2 nuevamente
          $('#tecnologia').select2({
            theme: 'bootstrap4',
            placeholder: 'Seleccione una tecnologia',
            allowClear: true,
          });
        });

        $.post("../../ajax/averia.php?op=selectEstado", function(r){
          if ($.fn.select2 && $('#idestado').data('select2')) {
          $('#idestado').select2('destroy');
          }
          // Limpiar las opciones antes de agregar las nuevas
          $("#idestado").html('<option value="">Seleccione Estado</option>'); 
          // Actualizar el contenido del select con las opciones de producto
          $("#idestado").append(r);
      
          // Inicializar Select2 nuevamente
          $('#idestado').select2({
          theme: 'bootstrap4',
          placeholder: 'Seleccione un estado',
          allowClear: true,
          });
      });



        $.post("../../ajax/usuario.php?op=selectTecnico", function(r){
            if ($.fn.select2 && $('#idtecnico').data('select2')) {
              $('#idtecnico').select2('destroy');
            }
               // Limpiar las opciones antes de agregar las nuevas
               $("#idtecnico").html('<option value="">Seleccione Tecnico</option>'); 
               // Actualizar el contenido del select con las opciones de producto
               $("#idtecnico").append(r);
          
            // Inicializar Select2 nuevamente
            $('#idtecnico').select2({
              theme: 'bootstrap4',
              placeholder: 'Seleccione un Tecnico',
              allowClear: true,
            });
          });


      $.post("../../ajax/categoriaingreso.php?op=selectCategoriaIngreso", function(r){
        if ($.fn.select2 && $('#idcategoria_ingreso').data('select2')) {
          $('#idcategoria_ingreso').select2('destroy');
        }
           // Limpiar las opciones antes de agregar las nuevas
           $("#idcategoria_ingreso").html('<option value="">Seleccione Categoria</option>'); 
           // Actualizar el contenido del select con las opciones de producto
           $("#idcategoria_ingreso").append(r);
      
        // Inicializar Select2 nuevamente
        $('#idcategoria_ingreso').select2({
          theme: 'bootstrap4',
          placeholder: 'Seleccione una categoria',
          allowClear: true,
        });
      });

      $("#idcategoria_ingreso").on("change", function() {
        var idcategoria_ingreso = $("#idcategoria_ingreso").val(); // Obtener el ID del cliente seleccionado
        // Establecer el ID del cliente seleccionado directamente en el select de dirección
        $("#idconcepto_ingreso").html('<option value="">Seleccione Tipo Trabajo</option>');
        // Hacer la solicitud AJAX para cargar las direcciones del cliente
        $.post("../../ajax/registroingreso.php?op=selectIngreso&idcategoria_ingreso=" + idcategoria_ingreso, function(r) {
          if ($.fn.select2 && $('#idconcepto_ingreso').data('select2')) {
            $('#idconcepto_ingreso').select2('destroy'); // Destruir Select2 si ya está inicializado
          }
          // Actualizar las opciones con la respuesta de AJAX
          $("#idconcepto_ingreso").html('<option value="">Seleccione Tipo Trabajo</option>');
          $("#idconcepto_ingreso").append(r);
          // Inicializar nuevamente Select2 para el select de direcciones
          $('#idconcepto_ingreso').select2({
            theme: 'bootstrap4',
            placeholder: 'Seleccione Tipo Trabajo',
            allowClear: true,
          });
        });
      });
}


//Función limpiar
function limpiar()
{
	$("#idaveria").val("");
	$("#idcliente").val("");
	$("#direccion").val("");
	$("#referencia").val("");
	$("#distrito").val("");
	$("#celular1").val("");
	$("#celular2").val("");
	$("#detalle_problema").val("");
	$("#observacion").val("");
	$("#imagenactual").val("");
	$("#imagen").val("");
}

function listardetalle() {
  tabla=$("#detalles_averia").DataTable({
      "responsive": true,
      "autoWidth": false,
      "ajax": {
          url: '../../ajax/averia.php?op=listardetalle',
          type: "GET",
          dataType: "json",
          error: function(e) {
              console.error("Error en la solicitud AJAX:", e.responseText);
              alert("No se pudo cargar la tabla. Verifique la consola.");
          }
      },
      "language": {
          "sProcessing": "Procesando...",
          "sLengthMenu": "Mostrar _MENU_ registros",
          "sZeroRecords": "No se encontraron resultados",
          "sEmptyTable": "Ningún dato disponible en esta tabla",
          "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
          "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0",
          "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
          "sSearch": "Buscar:",
          "oPaginate": {
              "sFirst": "Primero",
              "sLast": "Último",
              "sNext": "Siguiente",
              "sPrevious": "Anterior"
          }
        },
        "bDestroy": true
  });
}
const swalWithBootstrapButtons = Swal.mixin({
  customClass: {
    confirmButton: "btn btn-success mx-2", // Añadimos margen (Bootstrap `me-2`) para separar los botones
    cancelButton: "btn btn-danger mx-2"
  },
  buttonsStyling: false
});
// Función para guardar o editar
function guardaryeditar_visita(e) {
  e.preventDefault(); // Evitar acción predeterminada
  $("#btnGuardar").prop("disabled", true); // Deshabilitar el botón para evitar múltiples envíos
  var formData = new FormData($("#frmForm")[0]);

  swalWithBootstrapButtons.fire({
    title: "¿Estás seguro?",
    text: "¿Deseas guardar los cambios realizados?",
    icon: "warning",
    showCancelButton: true,
    confirmButtonText: "Sí, guardar",
    cancelButtonText: "No, cancelar",
    reverseButtons: true
  }).then((result) => {
    if (result.isConfirmed) {
      // Si el usuario confirma, realizar la solicitud AJAX
      $.ajax({
        url: "../../ajax/averia.php?op=guardaryeditar_visita",
        type: "POST",
        data: formData,
        contentType: false,
        processData: false,
        success: function (datos) {
          // Mostrar mensaje de éxito o error según la respuesta del backend
          swalWithBootstrapButtons.fire({
            title: 'Resultado',
            text: datos, // Mostrar el mensaje devuelto por el backend
            icon: datos.includes("Visita Registrado") || datos.includes("Visita Actualizada") ? 'success' : 'error',
            confirmButtonText: 'Aceptar'
          }).then(() => {
            if (datos.includes("Visita Registrado") || datos.includes("Visita Actualizada")) {
              // Redirigir al listado si la operación fue exitosa
              window.location.href = "list.php";
              limpiar();
            } else {
              // Si hubo un error, redirigir al formulario de creación
              window.location.href = "create.php";
            }
          });
        },
        error: function (err) {
          // Manejar errores en la solicitud AJAX
          swalWithBootstrapButtons.fire({
            title: 'Error',
            text: 'Hubo un problema con la solicitud. Intente nuevamente.',
            icon: 'error',
            confirmButtonText: 'Aceptar'
          }).then(() => {
            $("#btnGuardar").prop("disabled", false); // Rehabilitar el botón tras un error
          });
        }
      });
    } else if (result.dismiss === Swal.DismissReason.cancel) {
      // Si el usuario cancela, mostrar un mensaje de cancelación
      swalWithBootstrapButtons.fire({
        title: "Cancelado",
        text: "No se realizaron cambios.",
        icon: "error",
        confirmButtonText: "Aceptar"
      }).then(() => {
        $("#btnGuardar").prop("disabled", false); // Rehabilitar el botón si se cancela
      });
    }
  }).finally(() => {
    $("#btnGuardar").prop("disabled", false); // Asegurar que el botón se habilite al final
  });
}

function eliminar(idcaja) {
  const swalWithBootstrapButtons = Swal.mixin({
    customClass: {
      confirmButton: "btn btn-success mx-2",
      cancelButton: "btn btn-danger mx-2"
    },
    buttonsStyling: false
  });

  swalWithBootstrapButtons.fire({
    title: "¿Estás seguro?",
    text: "¡No podrás revertir esto!",
    icon: "warning",
    showCancelButton: true,
    confirmButtonText: "Sí, eliminar",
    cancelButtonText: "No, cancelar",
    reverseButtons: true
  }).then((result) => {
    if (result.isConfirmed) {
      // Realizar la eliminación vía AJAX
      $.post("../../ajax/caja.php?op=eliminar", { idaveria: idaveria }, function (e) {
        swalWithBootstrapButtons.fire({
          title: "Eliminado",
          text: "La averia ha sido eliminada exitosamente.",
          icon: "success"
        });

        // Recargar la tabla después de eliminar
        tabla.ajax.reload();
      });
    } else if (result.dismiss === Swal.DismissReason.cancel) {
      swalWithBootstrapButtons.fire({
        title: "Cancelado",
        text: "La caja está segura :)",
        icon: "error"
      });
    }
  });
}

  


init();