(function () {
    "use strict";

    angular.module('pos').controller('vendedorRealocarController', controller);
    controller.$inject = ['$scope', '$window', 'vendedorService', '$state'];

    function controller($scope, $window, vendedorService, $state) {
        $scope.$parent.initializeLayout('Vendedores');

        $scope.state = {
            data: [],
            vendedoresVolante: [],
            carregando: false,
            vazio: true,
            showModalRealocar: false,
            filtro: "",
            nomeFiltro: "",
            filtragem: { ativo: false },
            BuscarPor: "Nome"
        };

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

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

        $scope.toggleModalRealocar = function () {
            $scope.state.showModalRealocar = !$scope.state.showModalRealocar;
        };

        $scope.getAll = function () {
            $scope.state.carregando = true;
            $scope.state.vazio = true;
            vendedorService
                .getAll()
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.data);

                        $scope.state.carregando = false;
                        $scope.state.vazio = !(response.Data && response.Data.length > 0);
                    },
                    function (err) {
                        $scope.$parent.toastr.error(err);
                        $scope.state.carregando = false;
                    }
                );
        };
        $scope.getVendedoresVolante = function () {
            $scope.state.carregando = true;
            vendedorService
                .getVendedoresVolante()
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.vendedoresVolante);
                        $scope.state.carregando = false;
                    },
                    function (err) {
                        $scope.$parent.toastr.error(err);
                        $scope.state.carregando = false;
                    }
                );
        }


        $scope.refresh = function () {
            $scope.getAll();
            $scope.getVendedoresVolante();
        };

        $scope.save = function () {
            var array = [];
            var aux = [];

            angular.copy($scope.state.vendedoresVolante, aux);

            for (var i = aux.length - 1; i >= 0; i--) {
                var item = aux[i];
                if (item.selecionado) {
                    $scope.state.vendedoresVolante.splice(i, 1);
                    array.push({ Codigo: item.Codigo, Filial: { Codigo: item.Filial.Codigo } });
                }
            }
            $scope.saveVendedorVolante(array);
        };

        $scope.saveVendedorVolante = function (vendedoresVolante) {
            $scope.state.carregando = true;
            vendedorService
                 .saveVendedoresVolante(vendedoresVolante)
                 .then(
                     function (response) {
                         if (response.Status < 0)
                             $scope.$parent.toastr.error(response.Message, 'Serviço');
                         else {
                             $scope.getAll();
                             $scope.toggleModalRealocar();
                         }


                         $scope.state.carregando = false;
                     },
                     function (err) {
                         $scope.$parent.toastr.error(err);
                         $scope.state.carregando = false;
                     }
                 );
        };

        $scope.filterByName = function (item) {
            if ($scope.state.BuscarPor == "Nome")
                return item.Nome.toUpperCase().indexOf($scope.state.filtro.toUpperCase()) >= 0 || $scope.state.filtro == "" || item.selecionado;
            else
                return item.Filial.Nome.toUpperCase().indexOf($scope.state.filtro.toUpperCase()) >= 0 || $scope.state.filtro == "" || item.selecionado;
        };
        $scope.filterByNameVendor = function (item) {
            return item.Nome.toUpperCase().indexOf($scope.state.nomeFiltro.toUpperCase()) >= 0 || $scope.state.nomeFiltro == "";
        };

        $scope.toggleFilter = function () {
            $scope.state.filtro = "";
            $scope.state.BuscarPor = "Nome"
            $scope.state.filtragem.ativo = !$scope.state.filtragem.ativo;
        }

        $scope.clearFilter = function () {
            $scope.state.nomeFiltro = ""
        }

        $scope.editUser = function (id) {
            $state.go('state-usuario-detail', { codigo: id })
        }

        $scope.initialize();
    }

})();