(function () {
    "use strict";

    angular.module('pos').controller('relatorioEtiquetaProdutoController', controller);
    controller.$inject = ['$scope', 'relatorioService', 'entidadeAuxiliarService', '$window', 'configService', 'produtoService'];

    function controller($scope, relatorioService, entidadeAuxiliarService, $window, configService, produtoService) {
        $scope.state = {
            TabelaPreco: '',
            Quantidade: 3,
            Produto: '',
            listatabelaspreco: []
        }

        $scope.listaProdutos = [];

        $scope.initialize = function () {
            $scope.getTabelasPreco();
        };

        $scope.refresh = function () {
            $scope.initialize();
        }

        $scope.historyBack = function () {
            $window.history.back();
        };

        $scope.getTabelasPreco = function () {
            configService.getAllTabelasPreco()
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error(response.Message, 'Atenção'); }
                        else {
                            $scope.state.listatabelaspreco = response.Data;
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.AdicionarProduto = function () {
            
            if (!$scope.state.TabelaPreco) {
                $scope.$parent.toastr.error("Informe a tabela de preço.", "Atenção");
                return;
            }

            if (!$scope.state.Produto) {
                $scope.$parent.toastr.error("Informe o produto ou codigo de barras.", "Atenção");
                return;
            }

            if (!$scope.state.Quantidade) {
                $scope.$parent.toastr.error("Informe a quantidade de etiquetas para impressão.", "Atenção");
                return;
            }

            produtoService.getProdutoEPreco($scope.state.Produto, $scope.state.TabelaPreco.Codigo)
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error(response.Message, 'Atenção'); }
                        else
                        {
                            var d = response.Data;
                            if (!$scope.listaProdutos) $scope.listaProdutos = [];
                            $scope.listaProdutos.push(
                                {
                                    Referencia: d.Referencia,
                                    Descricao: d.Descricao,
                                    CodigoBarras: d.CodigoBarras,
                                    PrecoDe: d.Preco,
                                    Quantidade: $scope.state.Quantidade
                                }
                            );

                            $scope.state.Produto = '';
                            $("#codbaretiqueta").focus();
                        }
                    },
                    function (err) {
                        $scope.$parent.toastr.error(err);
                    }
                );

        }

        $scope.ImprimirLista = function () {
            
            if (!$scope.listaProdutos || $scope.listaProdutos.length == 0)
            {
                $scope.$parent.toastr.error("Não foram informados produtos para impressão.", "Atenção");
                return;
            }

            produtoService.imprimirListaEtiquetaProduto($scope.listaProdutos)
                .then(
                    function (response) {
                        
                        if (response.Status < 0)
                        {
                            $scope.$parent.toastr.error(response.Message, 'Atenção');
                        }
                        else
                        {
                            //mostrar mensagem de impresso
                            $scope.$parent.toastr.success("A lista de produtos foi enviada para a Fila de impressão.", 'Sucesso');

                            //limpar lista
                            $scope.listaProdutos = [];
                        }
                    },
                    function (err) {
                        $scope.$parent.toastr.error(err);
                    }
                );





        }
        $scope.enterAdicionarEtiqueta = function ($event) {
            if ($event.keyCode == 13) {
                $scope.AdicionarProduto();
            };
            

            };

        $scope.initialize();
    }

})();