//Beep sound funkcija
var beep = (function () {
  var ctxClass = window.audioContext || window.AudioContext || window.AudioContext || window.webkitAudioContext;
  var ctx = new ctxClass();
  return function (duration, type, finishedCallback) {
    duration = +duration;

    // Only 0-4 are valid types.
    type = type % 5 || 0;

    if (typeof finishedCallback != 'function') {
      finishedCallback = function () {};
    }

    var osc = ctx.createOscillator();

    osc.type = type;
    //osc.type = "sine";

    osc.connect(ctx.destination);
    if (osc.noteOn) osc.noteOn(0);
    if (osc.start) osc.start();

    setTimeout(function () {
      if (osc.noteOff) osc.noteOff(0);
      if (osc.stop) osc.stop();
      finishedCallback();
    }, duration);
  };
})();

//Skener BARKODOVA
function docReady(fn) {
  // see if DOM is already available
  if (document.readyState === 'complete' || document.readyState === 'interactive') {
    // call on next available tick
    setTimeout(fn, 1);
  } else {
    document.addEventListener('DOMContentLoaded', fn);
  }
}

docReady(function () {
  var resultContainer = document.getElementById('qr-reader-results');
  var lastResult,
    countResults = 0;
  var isScanning = false; // Promjenljiva koja označava da li je trenutno u toku skeniranje

  function onScanSuccess(decodedText, decodedResult) {
    if (!isScanning && decodedText !== lastResult) {
      ++countResults;
      lastResult = decodedText;
      // Handle on success condition with the decoded message.
      console.log(`Scan result ${decodedText}`, decodedResult);
      beep(200, 2, function () {
        Swal.fire(`Scan result ${decodedText}`, decodedResult, '', 'error');
        Swal.fire({
          title: 'Spremi ovaj QR kod?',
          text: decodedText,
          showDenyButton: true,
          showCancelButton: true,
          confirmButtonText: 'Spremi',
          denyButtonText: `Nemoj spremati`
        }).then(result => {
          /* Read more about isConfirmed, isDenied below */
          if (result.isConfirmed) {
            spremi(decodedText);
          } else if (result.isDenied) {
            Swal.fire('QR kod nije spremljen', 'Ovaj QR kod možete poslije iskoristiti', 'error');
          }
        });
      });
    }
  }

  var html5QrcodeScanner = new Html5QrcodeScanner('qr-reader', {
    fps: 15,
    qrbox: { width: 250, height: 250 },
    formatsToSupport: [Html5QrcodeSupportedFormats.QR_CODE],
    rememberLastUsedCamera: true,
    supportedScanTypes: [Html5QrcodeScanType.SCAN_TYPE_CAMERA],
    showTorchButtonIfSupported: true
  });
  html5QrcodeScanner.render(onScanSuccess);
});

//Spremanje podataka

function spremi(qrcode) {
  var qrcode = qrcode;
  var id_korisnik = document.getElementById('id_korisnik').value;
  var token = document.querySelector('[name="_token"]').value;
  //console.log(token);

  if (qrcode.includes('*')) {
    racun_qr = qrcode.split('*');
    if (racun_qr[0] == 'BS061170') {
      var posljednjiDio = racun_qr.pop(); // Dobivanje zadnjeg dijela stringa
      var br_bodova = parseFloat(posljednjiDio.replace(',', '.'));

      $.ajax({
        url: '/skeniranje/qrcodes/skeniraj',
        type: 'POST',
        data: {
          qrcode: qrcode,
          id_korisnik: id_korisnik,
          br_bodova: br_bodova,
          tip: 'racun_qr',
          _token: token // Dodajte CSRF token
        },
        success: function (response) {
          console.log(response);
          if (response.greska === 'nije_pronadeno') {
            Swal.fire('Greška', 'QR Code je iskorišten ili je nepostojeći', 'error');
          }
          if (response.success == true) {
            Swal.fire('Spremljeno!', 'Uspješno ste skenirali QR Code i spremili nove bodove!', 'success');
          }
        },
        error: function (data, xhr, status, error) {
          console.log(data);
          console.log(error);
          Swal.fire('Greška', 'Došlo je do greške pri ažuriranju podataka', 'error');
        }
      });
    } else {
      Swal.fire('Greška', 'Račun nije izdat u ovom objektu', 'error');
    }
  } else {
    $.ajax({
      url: '/skeniranje/qrcodes/skeniraj',
      type: 'PUT',
      data: {
        qrcode: qrcode,
        id_korisnik: id_korisnik,
        tip: 'nargila_qr',
        _token: token // Dodajte CSRF token
      },
      success: function (response) {
        console.log(response);
        if (response.greska === 'nije_pronadeno') {
          Swal.fire('Greška', 'QR Code je iskorišten ili je nepostojeći', 'error');
        }
        if (response.success == true) {
          Swal.fire('Spremljeno!', 'Uspješno ste skenirali QR Code i spremili nove bodove!', 'success');
        }
      },
      error: function (data, xhr, status, error) {
        console.log(data);
        onsole.log(error);
        Swal.fire('Greška', 'Došlo je do greške pri ažuriranju podataka', 'error');
      }
    });
  }
}
