angular.module('admin')
  .controller('CodigoDeBarrasRetirarController', function ($scope, $http, $route, $routeParams, $window) {
    $scope.login = {};
    $scope.mensagem = '';
    $scope.dock = $window.sessionStorage.dock;
    $scope.name = $window.sessionStorage.name;



    $scope.codigoDeBarrasRetirar = function () {
      window.location.assign("#/codigodebarrasretirar");
      window.location.reload(true);

    };

    var contadorInsere = '';

    $scope.executaQuagga = function () {
      setTimeout(() => {
        //var testeArray = [];
        contadorInsere = 0;
        var codigoPassadoBarra = "";
        var contador = 1;
        var segundos = 5;
        var urlCodRetirar = window.location.href;
        var valorDetectado = "";

        if (document.querySelector('#camera') !== null) {
          Quagga.init({
            inputStream: {
              name: "Live",
              type: "LiveStream",
              numOfWorkers: navigator.hardwareConcurrency,
              constraints: {
                width: 470,
                height: 480,
              },

              target: document.querySelector('#camera')
            },
            decoder: {
              readers: ["code_128_reader", "ean_reader"]
            }
          }, function (err) {
            if (err) {
              console.log(err);
              return
            }
            console.log("Initialization finished. Ready to start");
            Quagga.start();

            document.getElementById("voltar").onclick = function () {
              Quagga.stop();
            }

          });
        }


        Quagga.onDetected(function (data) {
          if (data && contadorInsere === 0) {
            var retiraArray = '';
            codigoPassadoBarra = retiraOuNao(contador, data);
            console.log(data);
            //$('#resultado').val(testeArray.join(''));
            //Quagga.stop();
            valorDetectado = codigoPassadoBarra;

            if (urlCodRetirar.substr(-21) === "codigodebarrasretirar") {
              //alert("Inserido"+testeArray.length);
              //$('#resultado').val(testeArray.join(''));
              inserirEstoque(valorDetectado);
            }

            //window.location.reload(true);
            contador++;
            contadorInsere++;
            Quagga.stop();
          }

        });

        function inserirEstoque(codigoDeBarras) {
          $scope.submeter(codigoDeBarras);
          $scope.codigoDeBarras = codigoDeBarras;
          console.log($scope);

        }

        $scope.submeter = function (codigoDeBarras) {
          $scope.codigoDeBarras = codigoDeBarras;

          if ($scope.dock) {
            if (codigoDeBarras) {
              bootbox.alert("Aguarde um momento");
              $http.put('../../api/seller/products/' + $scope.dock + '/' + 'barras-retira' + '/' + $scope.codigoDeBarras)
                .success(function () {
                  //alert("Produto retirado : " + $scope.codigoDeBarras);
                  $scope.mensagem = 'Estoque alterado com sucesso';
                  continuaLeitura();

                })
                .error(function (err) {

                  bootbox.alert("Este item nao está cadastrado na base : " + $scope.codigoDeBarras, function () {
                    $scope.mensagem = 'Não foi possível alterar o seu estoque ' + err;
                    $scope.executaQuagga();
                  });





                });
            };

          };


          $scope.codigoDeBarras = codigoDeBarras;

        };

        function continuaLeitura() {

          bootbox.confirm({
            message: "Continuar com a leitura?",
            buttons: {
              confirm: {
                label: 'Sim',
                className: 'btn-success'
              },
              cancel: {
                label: 'Não',
                className: 'btn-danger'
              }
            },
            callback: function (result) {
              if (result == true) {
                $scope.executaQuagga();
              } else if (result != true) {
                Quagga.stop();
                if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
                  window.location.href = '/split/public/seller/#/codigodebarras';
                } else {
                  window.location.href = '/split/public/seller/#/dash';
                }
              }
            }
          });

        }

        function retiraOuNao(contador, data) {
          var x;

          Quagga.stop();
          bootbox.confirm({
            message: "Retirar este código de barras? " + data.codeResult.code,
            buttons: {
              confirm: {
                label: 'Sim',
                className: 'btn-success'
              },
              cancel: {
                label: 'Não',
                className: 'btn-danger'
              }
            },
            callback: function (result) {

              if (result) {
                codigoPassadoBarra = data.codeResult.code;

                valorDetectado = codigoPassadoBarra;

                if (urlCodRetirar.substr(-21) === "codigodebarrasretirar") {
                  inserirEstoque(valorDetectado);
                }


                contador++;
                contadorInsere++;
                Quagga.stop();

              }
              else {
                codigoPassadoBarra = data.codeResult.code;

                bootbox.alert("Código cancelado = " + data.codeResult.code, function () {
                  continuaLeitura();
                });


              }
            }
          });

          //document.getElementById("demo").innerHTML = x;
          //testeArray.push(contador + " - " + data.codeResult.code + "\n")
        }

      }, 100);
    };

    $scope.executaQuagga();

  });
