app.controller("localCadastroController", function ($scope, $modal, $rootScope, cadastroFactory, dataService, localizacaoFactory, notificationFactory, httpRequestFactory, ngProgress) {

    $scope.edificios = [];
    $scope.mostrartab = [];

    $scope.mostrartab[0] = true;
    $scope.mostrartab[1] = false;

    $scope.changeTab = function (n) {
        $scope.mostrartab[0] = false;
        $scope.mostrartab[1] = false;
        $scope.mostrartab[n] = true;
       
        if (n == 1)
        {
            $scope.isCollapsedTab2 = false;
            
            $scope.focusCodbarras = !$scope.focusCodbarras;
        }
            
        
    };
        
    $scope.isCollapsedTab2 = true;

    $scope.changeTab(0);
    
    $scope.dadosModificados = function (modificado) {
        //console.log(0);
        $rootScope.$broadcast('houveAlteracoes', modificado);
        
    };

    $scope.listarEdificios = function (limitePorPagina) {
        
        var getSuccessCallback = function (data, status) {


            $scope.edificios = data;
            $scope.edificios = $scope.ordernar($scope.edificios);
            if ($scope.edificios.length > 0)
                $scope.selEdificio($scope.edificios[0], limitePorPagina);

            
        };



        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.getEdificios().success(getSuccessCallback).error(errorCallback);
    };

    $scope.inserirEdificio = function (item) {

        if (item == null)
            return;

        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data.Msg);
            $scope.edificios.push(data.Conteudo);
            
            if ($scope.edificios.length > 0)
            {
                //selecciona ultimo piso guardado
                //$scope.selEdificio($scope.edificios[$scope.edificios.length - 1]);
                $scope.selEdificio(data.Conteudo,null);
            }
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data.Msg);
        };

        

        localizacaoFactory.addEdificio(item).success(successCallback).error(errorCallback);

    };


    $scope.apagarEdificio = function (elem) {
        if (elem == null)
            return;

        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            $scope.selectedEdificio = null;
            $scope.selectedPiso = null;
            $scope.selectedSala = null;
            $scope.listarEdificios(null);
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.deleteEdificio(elem).success(successCallback).error(errorCallback);
    };

    $scope.confirmarApagarEdificio = function (row) {

        if (row == null)
            return;

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmarApagar.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {

            $scope.apagarEdificio(item);
        }, function () {

        });

    };

    $scope.updateEdificio = function (elem) {
        if (elem == null)
            return;



        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.updateEdificio(elem).success(successCallback).error(errorCallback);
    };

    $scope.selEdificio = function (item, limitePorPagina) {
        $scope.selectedSala = null;
        $scope.selectedPiso = null;
        $scope.selCadastro(null);
        
        if (item == null)
        {
            $scope.carregarCadastroLocalizacao(null, limitePorPagina);
            return;
        }
            
        $scope.selectedEdificio = item;
        
        if ($scope.selectedEdificio.LstPiso.length > 0)
        {
            $scope.selectedEdificio.LstPiso = $scope.ordernar($scope.selectedEdificio.LstPiso);
            $scope.selPiso($scope.selectedEdificio.LstPiso[0], limitePorPagina);
            
        }
        else
            $scope.carregarCadastroLocalizacao(null, limitePorPagina);
    };

    $scope.selEdificioDestino = function (item) {
        $scope.selectedSalaDestino = null;
        $scope.selectedPisoDestino = null;
       
        $scope.selectedEdificioDestino = item;

        if ($scope.selectedEdificioDestino!=null && $scope.selectedEdificioDestino.LstPiso.length > 0) {
            $scope.selectedEdificioDestino.LstPiso = $scope.ordernar($scope.selectedEdificioDestino.LstPiso);
            $scope.selPisoDestino($scope.selectedEdificioDestino.LstPiso[0]);
        }
        
    };

    $scope.edificioEditRow = function (row) {

        if (row == null) {
            row = {
                PK_Edificio: 0,
                Descricao: 'Edificio'
            };
            row.op = "Novo";
        }
        else
            row.op = "Editar";

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalEditarEdificio.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {
            if (item.op == "Editar") {
                $scope.selectedEdificio = item;
                $scope.updateEdificio(item);
            }
            else
                $scope.inserirEdificio(item);

        }, function () {

        });

    };

    //Pisos
    $scope.inserirPiso = function (item) {

        if (item == null)
            return;
        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data.Msg);

            $scope.selectedEdificio.LstPiso.push(data.Conteudo);
            if ($scope.selectedEdificio.LstPiso.length > 0)
                //selecciona ultimo piso guardado
                $scope.selPiso($scope.selectedEdificio.LstPiso[$scope.selectedEdificio.LstPiso.length - 1],null);
            
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.addPiso(item).success(successCallback).error(errorCallback);

    };


    $scope.apagarPiso = function (elem) {
        if (elem == null)
            return;
        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);


            $scope.selectedPiso.LstSala = [];
            var arr = $scope.selectedEdificio.LstPiso;

            if (arr == null)
                return;
            for (i = 0; i < arr.length; i++) {
                if (arr[i] == elem) {
                    arr.splice(i, 1);
                    break;

                }
            }
            $scope.selectedSala = null;
            $scope.selectedPiso = null;
            if ($scope.selectedEdificio.LstPiso.length > 0)
                $scope.selPiso($scope.selectedEdificio.LstPiso[0],null);

        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.deletePiso(elem).success(successCallback).error(errorCallback);
    };

    $scope.updatePiso = function (elem) {

        if (elem == null)
            return;
        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.updatePiso(elem).success(successCallback).error(errorCallback);
    };

    $scope.selPiso = function (item, limitePorPagina) {
        $scope.selectedSala = null;
        if (item == null)
        {
            $scope.carregarCadastroLocalizacao(null, limitePorPagina);
            return;
        }
        
        $scope.selectedPiso = item;
        if ($scope.selectedPiso.LstSala.length > 0)
        {
            $scope.selectedPiso.LstSala = $scope.ordernar($scope.selectedPiso.LstSala);
            $scope.selSala($scope.selectedPiso.LstSala[0], limitePorPagina);
        }
            
        else
            $scope.carregarCadastroLocalizacao(null, limitePorPagina);
    };

    $scope.selPisoDestino = function (item) {
        $scope.selectedSalaDestino = null;
        
        $scope.selectedPisoDestino = item;
        if ($scope.selectedPisoDestino.LstSala.length > 0) {
            $scope.selectedPisoDestino.LstSala = $scope.ordernar($scope.selectedPisoDestino.LstSala);
            $scope.selSalaDestino($scope.selectedPisoDestino.LstSala[0]);
        }

    };

    $scope.pisoEditRow = function (row) {

        if ($scope.selectedEdificio == null) {
            notificationFactory.error("Seleccione o Edificio");
            return;
        }


        if (row == null) {


            row = {
                PK_Piso: 0,
                FK_Edificio: $scope.selectedEdificio.PK_Edificio,
                Descricao: 'Piso'
            };
            row.op = "Novo";
        }
        else {
            if ($scope.selectedPiso == null) {
                notificationFactory.error("Seleccione o Piso");
                return;
            }

            row.op = "Editar";
        }


        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalEditarPiso.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {

            if (item.op == "Editar") {

                $scope.selectedPiso = item;
                $scope.updatePiso(item);
            }
            else
                $scope.inserirPiso(item);

        }, function () {

        });

    };

    $scope.confirmarApagarPiso = function (row) {

        if (row == null)
            return;

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmarApagar.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {

            $scope.apagarPiso(item);
        }, function () {

        });

    };

    //Sala

    $scope.selSala = function (item, limitePorPagina) {
        $scope.selectedSala = item;
        $scope.carregarCadastroLocalizacao(null, limitePorPagina);
    };

    $scope.selSalaDestino = function (item) {
        $scope.selectedSalaDestino = item;
    };

    $scope.salaEditRow = function (row) {

        if ($scope.selectedEdificio == null || $scope.selectedPiso == null) {
            notificationFactory.error("Seleccione a Piso");
            return;
        }

        if (row == null) {
            row = {
                PK_Sala: 0,
                FK_Piso: $scope.selectedPiso.PK_Piso,
                Descricao: 'Sala'
            };
            row.op = "Nova";
        }
        else {
            if ($scope.selectedSala == null) {
                notificationFactory.error("Seleccione a Sala");
                return;
            }
            row.op = "Editar";
        }


        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalEditarSala.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {

            if (item.op == "Editar") {

                $scope.selectedSala = item;
                $scope.updateSala(item);
            }
            else
                $scope.inserirSala(item);

        }, function () {

        });

    };

    $scope.confirmarApagarSala = function (row) {

        if (row == null)
            return;

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmarApagar.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {

            $scope.apagarSala(item);
        }, function () {

        });

    };

    $scope.inserirSala = function (item) {

        if (item == null)
            return;

        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data.Msg);

            $scope.selectedPiso.LstSala.push(data.Conteudo);
            if ($scope.selectedPiso.LstSala.length > 0)
                //selecciona ultimo piso guardado
                $scope.selSala($scope.selectedPiso.LstSala[$scope.selectedPiso.LstSala.length - 1],null);
            
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.addSala(item).success(successCallback).error(errorCallback);

    };


    $scope.apagarSala = function (elem) {
        if (elem == null)
            return;

        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);

            //$scope.carregarSalas();
            var arr = $scope.selectedPiso.LstSala;
            if (arr == null)
                return;
            for (i = 0; i < arr.length; i++) {
                if (arr[i] == elem) {
                    arr.splice(i, 1);
                    break;

                }
            }
            $scope.selectedSala = null;
            if ($scope.selectedPiso.LstSala.length > 0)
                $scope.selSala($scope.selectedPiso.LstSala[0],null);
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.deleteSala(elem).success(successCallback).error(errorCallback);
    };

    $scope.updateSala = function (elem) {
        if (elem == null)
            return;



        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        localizacaoFactory.updateSala(elem).success(successCallback).error(errorCallback);
    };
    $scope.itemsLoaded = true;
    $scope.carregarCadastroLocalizacao = function (recomecar, limitePorPagina) {
        $scope.selectedCadastro = null;
        $scope.itemsLoaded = false;
        $scope.totalLoaded = 0;
        if (limitePorPagina == null)
            limitePorPagina = 50;

        if (recomecar == null)
            recomecar = true

        var getSuccessCallback = function (data, status) {
            $scope.totalLoaded = data.length;
            if (recomecar == true) {
                $scope.items = data;
                if ($scope.items.length > 0)
                    $scope.selCadastro($scope.items[0]);
            }
            else {
                if ($scope.items != null)
                {
                    for (i = 0; i < data.length; i++)
                        $scope.items.push(data[i]);
                }
            }

            $("#tabCadastro").scrollTop($("#tabCadastro")[0].scrollHeight);

            $scope.dadosModificados(false);
            $scope.itemsLoaded = true;

            /*$scope.items = data;
            if ($scope.items.length > 0)
                $scope.selCadastro($scope.items[0]);*/
            
        };

        var errorCallback = function (data, status, headers, config) {
            //notificationFactory.error(data);
        };
        var ed = 0;
        var pi = 0;
        var sa = 0;
        var locCompleto = false;
        

        if ($scope.selectedEdificio != null)
            ed=$scope.selectedEdificio.PK_Edificio;
        if ($scope.selectedPiso != null)
            pi=$scope.selectedPiso.PK_Piso;
        if ($scope.selectedSala != null)
            sa = $scope.selectedSala.PK_Sala;
        if ($scope.localCompleto != null)
            locCompleto = $scope.localCompleto;

        
        var pos = 0;
        if ($scope.items != null)
        {
            if ($scope.items.length > 0 && recomecar == false)
                pos = $scope.items[$scope.items.length - 1].NumInventario;
        }
        
        cadastroFactory.getCadastrosLocalizacao(ed, pi, sa, locCompleto, pos, limitePorPagina).success(getSuccessCallback).error(errorCallback);

        //Conferencia de bens no local
        $scope.carregarConferencias();

    };

    $scope.carregarCadastroId = function (row) {
       
        if (row == null)
            return;
        var getSuccessCallback = function (data, status) {
            //angular.copy(data, $scope.selectedCadastro);
            angular.copy(data, row);

            $scope.selectedCadastro = row;
            
            $rootScope.root_podeMexerDadosDoBem = $scope.selectedCadastro.PodeMexer;
        };

        var errorCallback = function (data, status, headers, config) {
            //notificationFactory.error(data);
        };

        cadastroFactory.getCadastrosId(row).success(getSuccessCallback).error(errorCallback);
        $scope.dadosModificados(false);
    };

    $scope.selCadastro = function (row) {

        if (row == null)
            return;
        $scope.selectedCadastro = row;
        $scope.carregarCadastroId(row);
    };

    $scope.openModalNovoCadastro = function (row) {

        var ed = 0;
        var pi = 0;
        var sa = 0;

        //alert(JSON.stringify(row));
        if ($scope.selectedEdificio != null)
            ed = $scope.selectedEdificio.PK_Edificio;
        if ($scope.selectedPiso != null)
            pi = $scope.selectedPiso.PK_Piso;
        if ($scope.selectedSala != null)
            sa = $scope.selectedSala.PK_Sala;

        if (row == null) {
            var row = {
                Pk_Inventario: 0,
                NumInventario: 0,
                Nome: 'Descrição',
                Data: dataService.devDataHoje(),
                FK_Edificio: ed,
                FK_Piso: pi,
                FK_Sala: sa,
                Aquisicao: { Valor: 0 },
                LocCompleta: true,
                op: "Novo",
                NumRepetir: 0,
                Abate: { Receita: 0 }
            };
        }
        else {
            if (row.Pk_Inventario>0)
                row.op = "Editar";
        }
        

        row.perm = $scope.$parent.mnuCadastro;

        var infoGestor = httpRequestFactory.getDataSync('../api/responsavel/utilizador/idResponsavel');
        if (infoGestor != null) {
            row.Fk_Responsavel = infoGestor.Id;
            row.NomeResponsavel = infoGestor.ValorStr;
        }

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalNovoCadastroLocal.html',
            controller: 'modalController',
            size: 'lg',
            backdrop: 'static',
            keyboard: false,
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            var datastr = $("#txtDataNovoBem").val();
            if (datastr == "" || isNaN(Date.parse(datastr))) {

            } else {
                item.Data = datastr;
                item.DataStr = item.Data;
            }
                
            

            item.perm = null;
            if (item.op=="Novo")
                $scope.inserirCadastro(item);
            else
                $scope.updateCadastro(item);
            $scope.dadosModificados(false);
                        

        }, function (op) {
            if (op == "recarregar")
            {
                
                $scope.carregarCadastroLocalizacao(null,50);
            }
            
        });
        $scope.dadosModificados(false);
    };

    /*$scope.xxx = function (item) {
        var datastr = $("#txtDataNovoBem").val();
        if (datastr == "" || isNaN(Date.parse(datastr))) {

        } else {
            item.Data = datastr;
            item.DataStr = item.Data;
        }



        item.perm = null;
        if (item.op == "Novo")
            $scope.inserirCadastro(item);
        else
            $scope.updateCadastro(item);
        $scope.dadosModificados(false);
    }*/

    $scope.inserirCadastro = function (it) {
        if (it == null)
            return;

        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            /*try {
                if ($scope.$parent != null) {
                    $scope.$parent.ok();
                    return;
                }
            }
            catch (err) {
                console.log(err);
            }*/


            $scope.carregarCadastroLocalizacao(null,50);

            /*var n = $scope.items.length;
            if (n > 0)
                $scope.selCadastro($scope.items[n - 1]);*/
            
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
            $scope.openModalNovoCadastro(it);
        };

        if (it.Aquisicao.Valor == "" || isNaN(it.Aquisicao.Valor))
            it.Aquisicao.Valor = 0;


        cadastroFactory.addCadastro(it).success(successCallback).error(errorCallback);
    };

    $scope.updateCadastro = function (elem) {
        if (elem == null)
            return;
        var successCallback = function (data, status, headers, config) {
            var d = data.split(":MsgCode=");
            var msg = data;
            if (d.length > 0)
                msg = d[0];

            notificationFactory.success(msg);
           

        };

        var errorCallback = function (data, status, headers, config) {
            var d = data.split(":MsgCode=");
            var msg = data;
            var tipo = "";
            if (d.length > 0) {
                msg = d[0];
                if (d.length > 1)
                    tipo = d[1];
            }

            if (tipo == "TIPO_ERRO_AMORTIZACAO")
                $scope.confirmaAlteracoesAmortizacoesDoBem(elem, msg);
            else {
                notificationFactory.error(msg);
                $scope.openModalNovoCadastro(elem);
            }

            //notificationFactory.error(data);
            //$scope.openModalNovoCadastro(elem);
            
        };

        if (elem.Aquisicao.Valor == "" || isNaN(elem.Aquisicao.Valor))
            elem.Aquisicao.Valor = 0;
        if (elem.Aquisicao.ValorRenda == "" || isNaN(elem.Aquisicao.ValorRenda))
            elem.Aquisicao.ValorRenda = 0;
        if (elem.Aquisicao.ValorResidual == "" || isNaN(elem.Aquisicao.ValorResidual))
            elem.Aquisicao.ValorResidual = 0;
        if (elem.Aquisicao.NumeroRendas == "" || isNaN(elem.Aquisicao.NumeroRendas))
            elem.Aquisicao.NumeroRendas = 0;
        if (elem.Abate.Receita == "" || isNaN(elem.Abate.Receita))
            elem.Abate.Receita = 0;


        cadastroFactory.updateCadastro(elem).success(successCallback).error(errorCallback);
    };

    $scope.confirmaAlteracoesAmortizacoesDoBem = function (info, msg) {

        var row = {
            mensagem: msg + "Esta ação vai recalcular e gravar as amortizações desde a data de aquisição para o 'Bem' nº" + info.NumInventario + ". Deseja continuar?",

        };

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmar.html',
            controller: 'modalController',
            backdrop: 'static',
            keyboard: false,
            resolve: {

                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            info.RecalcAmort = true;
            $scope.updateCadastro(info);
        }, function () {

        });
    };

    $scope.apagarCadastro = function (elem, todos) {
        if (elem == null)
            return;


        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            $scope.selectedCadastro = null;
            $scope.carregarCadastroLocalizacao(null,50);
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        cadastroFactory.deleteCadastro(elem).success(successCallback).error(errorCallback);
    };

    $scope.confirmarApagarCadastro = function (row) {

        if (row == null)
            return;

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmarApagar.html',
            controller: 'modalController',
            resolve: {

                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {

            $scope.apagarCadastro(item);

        }, function () {

        });

    };

    $scope.repetirCadastro = function (elem) {
        
        if (elem == null) {
            notificationFactory.success("Seleccione um Inventário");
            return;
        }

        
        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);

            $scope.carregarCadastroLocalizacao(true,50);

            var n = $scope.items.length;
            if (n > 0)
                $scope.selCadastro($scope.items[n - 1]); //selecciona ultimo guardado
        };


        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        if (elem.Aquisicao.Valor == "" || isNaN(elem.Aquisicao.Valor))
            elem.Aquisicao.Valor = 0;
        if (elem.Aquisicao.ValorRenda == "" || isNaN(elem.Aquisicao.ValorRenda))
            elem.Aquisicao.ValorRenda = 0;
        if (elem.Aquisicao.ValorResidual == "" || isNaN(elem.Aquisicao.ValorResidual))
            elem.Aquisicao.ValorResidual = 0;
        if (elem.Aquisicao.NumeroRendas == "" || isNaN(elem.Aquisicao.NumeroRendas))
            elem.Aquisicao.NumeroRendas = 0;
        if (elem.Abate.Receita == "" || isNaN(elem.Abate.Receita))
            elem.Abate.Receita = 0;

        cadastroFactory.duplicaCadastro(elem).success(successCallback).error(errorCallback);

    };

    $scope.confirmarDuplicarCadastro = function (row) {

        if (row == null)
            return;
        
        /*if ($scope.selectedEdificio == null || $scope.selectedPiso == null || $scope.selectedSala == null)
        {
            notificationFactory.error("Indique a Localização Completa");
            return;
        }*/
        var ed = 0;
        var pi = 0;
        var sa = 0;
        if ($scope.selectedEdificio != null)
            ed = $scope.selectedEdificio.PK_Edificio;
        if ($scope.selectedPiso != null)
            pi = $scope.selectedPiso.PK_Piso;
        if ($scope.selectedSala != null)
            sa = $scope.selectedSala.PK_Sala;

        row.NumRepetir = 1;
        //$scope.obrigaLocalCompleto();

        row.FK_Edificio = ed;
        row.FK_Piso = pi;
        row.FK_Sala = sa;
        

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalDuplicarInv.html',
            controller: 'modalController',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            
            $scope.repetirCadastro(item);

        }, function () {

        });
        $scope.dadosModificados(false);
    };

    $scope.obrigaLocalCompleto = function () {
        if ($scope.selectedCadastro != null)
            $scope.selectedCadastro.LocCompleta = true;
    }

    $scope.mostrarFornecedores = function (row) {
        
        if (row == null)
            return;
        row.perm = $scope.$parent.mnuTabelas;

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalFornecedores.html',
            controller: 'modalController',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            item.perm = null;
            
        }, function () {

        });
        $scope.dadosModificados(false);
    };

    if ($scope.localCompleto == null)
        $scope.localCompleto = true;
    $scope.MostrarLocalCompleto=function()
    {
        if ($scope.localCompleto == null)
            $scope.localCompleto = true;
        $scope.localCompleto = !$scope.localCompleto;
        
        $scope.carregarCadastroLocalizacao(null,50);
    }

    $scope.copiarItem = function (row) {
        if (row == null)
            return;
        $scope.itemAcopiar = row;

        $scope.itemAcopiar.FK_Edificio = $scope.selectedEdificio.PK_Edificio;
        $scope.itemAcopiar.FK_Piso = $scope.selectedPiso.PK_Piso;
        $scope.itemAcopiar.FK_Sala = $scope.selectedSala.PK_Sala;
    };

    $scope.mostrarAreaTransferencia = function () {
        if ($scope.itemAcopiar == null)
            return "";
        return $scope.strMax($scope.itemAcopiar.Nome,50,true);
    };

    $scope.strMax=function(str,max,mostrarCorte) {
        var c = "";
        if (mostrarCorte == true)
            c = "...";
        if (str.length>max)
            c="...";
        return str.substr(0,max)+c;
    };

    $scope.devolveLocalizacao = function (item, edificio, piso, sala) {

        if (item == null)
            return "";
        var edificioDescricao = "";
        var pisoDescricao = "";
        var salaDescricao = "";

        if (edificio == null) {

            item.FK_Edificio = 0;
        }
        else {
            edificioDescricao = edificio.Descricao;
            item.FK_Edificio = edificio.PK_Edificio;
        }


        if (piso == null) {
            item.FK_Piso = 0;
        }
        else {
            item.FK_Piso = piso.PK_Piso;
            pisoDescricao = " - " + piso.Descricao;
        }

        if (sala == null) {
            item.FK_Sala = 0;
        }
        else {
            salaDescricao = " - " + sala.Descricao;
            item.FK_Sala = sala.PK_Sala;
        }

        if (edificio != null && piso != null && edificio.PK_Edificio != piso.FK_Edificio) {
            $scope.selectedPiso = null;
            $scope.selectedSala = null;

            edificioDescricao = edificio.Descricao;
            pisoDescricao = "";
            salaDescricao = "";
            item.FK_Piso = 0;
            item.FK_Sala = 0;

        }

        if (edificio != null && piso != null && sala != null &&
            edificio.PK_Edificio != piso.FK_Edificio &&
            piso.PK_Piso != sala.FK_Piso) {
            $scope.selectedPiso = null;
            $scope.selectedSala = null;
            edificioDescricao = edificio.Descricao;
            pisoDescricao = "";
            salaDescricao = "";
            item.FK_Piso = 0;
            item.FK_Sala = 0;
        }
        if (piso != null && sala != null && piso.PK_Piso != sala.FK_Piso) {
            $scope.selectedSala = null;
            edificioDescricao = edificio.Descricao;
            pisoDescricao = pisoDescricao;
            salaDescricao = "";

            item.FK_Sala = 0;
        }
        $scope.caminhoLocalizacao = edificioDescricao + "" + pisoDescricao + "" + salaDescricao;
        item.Localizacao = $scope.caminhoLocalizacao;


    };

    $scope.getDescricaoLocal = function (comEntidade) {
        var entidade = "";
        var edificioDescricao = "";
        var pisoDescricao = "";
        var salaDescricao = "";
        
        if ($scope.selectedEdificio != null)
        {
            edificioDescricao = $scope.selectedEdificio.Descricao;
            entidade=$scope.selectedEdificio.NomeEntidade;
        }
            
        if ($scope.selectedPiso != null)
            pisoDescricao = $scope.selectedPiso.Descricao;
        if ($scope.selectedSala != null)
            salaDescricao = $scope.selectedSala.Descricao;
        if (comEntidade == true)
            return edificioDescricao + " - " + pisoDescricao + " - " + salaDescricao + " - " + entidade.toUpperCase();

        return edificioDescricao + " - " + pisoDescricao + " - " + salaDescricao;


        
    };

    $scope.getNomeEntidade = function () {
        var entidade = "";
        
        if ($scope.selectedEdificio != null) {
            entidade = $scope.selectedEdificio.NomeEntidade;
        }
        if (entidade == null)
            return "";
        return entidade.toUpperCase();
    };

    $scope.ordernar = function (lst) {
        return lst.sort(function (a, b) {
            var nameA = a.Descricao.toLowerCase(), nameB = b.Descricao.toLowerCase()
            if (nameA < nameB) //sort string ascending
                return -1
            if (nameA > nameB)
                return 1
            return 0 //default return value (no sorting)
        })
    };

    $scope.listaVerificacoes = [];
    

    $scope.getNumInvListaVerificacoes = function (num,cod) {
        var item = null;
        /*for (i = 0; i < $scope.listaVerificacoes.length; i++) {
            if ($scope.listaVerificacoes[i].NumInventario==num && $scope.listaVerificacoes[i].CodigoBarras==cod)
            {
                item = $scope.listaVerificacoes[i];
                break;
            }
        };*/
        return item;
    };

    $scope.getNumInvListaVerificacoes = function (num) {
        var item = null;
        for (i = 0; i < $scope.listaVerificacoes.length; i++) {
            if ($scope.listaVerificacoes[i].NumInventario==num)
            {
                item = $scope.listaVerificacoes[i];
                break;
            }
        };
        return item;
    };

    $scope.getConferidos = function () {
        if ($scope.listaVerificacoes == null)
            return 0;
        var totalConferidos = 0;
        for (i = 0; i < $scope.listaVerificacoes.length; i++) {
            if ($scope.listaVerificacoes[i].Conferido == true) {
                totalConferidos++;
            }
        };
        return totalConferidos;
    };

    

    $scope.getTotalPaginas = function () {
        if ($scope.paginas == null)
            return 0;
        return $scope.paginas.length;
    }

    $scope.getTotalBens = function () {
        if ($scope.listaVerificacoes == null)
            return 0;
        return $scope.listaVerificacoes.length;
    }

    $scope.getTotalErros = function () {
        if ($scope.listaVerificacoesErros == null)
            return 0;
        return $scope.listaVerificacoesErros.length;
    }

    $scope.selectedItemProcurado = null;

    $scope.encontraPaginaNumInventario = function (codbarras) {
        var pag = $scope.paginaAtual;
        if ($scope.listaVerificacoes == null)
            return pag;

        if (codbarras == null)
            return pag;

        if (codbarras.length < 13)
            return pag;
        var num = Number(codbarras.substr(3, 9));
        //console.log(num);

        var linha = 0;
        var alturaLinha = $("#tabconf tr").height();
        for (i = 0; i < $scope.listaVerificacoes.length; i++) {
            
            if ($scope.listaVerificacoes[i].NumInventario == num) {
                $scope.selectedItemProcurado = $scope.listaVerificacoes[i];
                if ($scope.itemsPorPagina == 0)
                    pag = 0;
                else
                {
                    pag = Math.floor(linha / $scope.itemsPorPagina);
                    $('#tabContainer').scrollTop(i * alturaLinha);
                }
                    
                break;
            }
            linha++;
        };
        //console.log(pag);
        return pag;

    };

    $scope.encontraPaginaNumInventarioPorNumero = function (num) {
        var pag = $scope.paginaAtual;
        if ($scope.listaVerificacoes == null)
            return pag;

        if (num == null)
            return pag;

        if (num.length ==0)
            return pag;
        if (isNaN(num))
            return pag;

        var numInv = Number(num);
        

        var linha = 0;
        var alturaLinha = $("#tabconf tr").height();
        
        for (i = 0; i < $scope.listaVerificacoes.length; i++) {


            if ($scope.listaVerificacoes[i].NumInventario == numInv) {
                $scope.selectedItemProcurado = $scope.listaVerificacoes[i];
                if ($scope.itemsPorPagina == 0)
                    pag = 0;
                else
                {
                    pag = Math.floor(linha / $scope.itemsPorPagina);
                    $('#tabContainer').scrollTop(i*alturaLinha);
                }
                    
                break;
            }
            linha++;
        };
        
        


        return pag;

    };
        

    $scope.getCadastroEAN13 = function () {

        
        var cod = $scope.codbarras;
        if (cod.length != 13)
            return;
        if (isNaN(cod))
            return;

        var getSuccessCallback = function (data, status) {
            

            var info = {
                FkLog : data.FkLog,
                AnoCivil: data.AnoCivil,
                NumInventario: data.NumInventario,
                FK_Entidade: data.FK_Entidade,
                FK_Edificio: data.FK_Edificio,
                FK_Piso: data.FK_Piso,
                FK_Sala: data.FK_Sala,
                ExisteErro:data.ExisteErro,
                Conferido: data.Conferido,
                NomeBem: data.NomeBem
            };

            //console.log(info);
            
            if (info.FkLog == 0) {
                notificationFactory.error("Erro. Não é possivel efectuar o registo.");
                return;
            };

            if (info.ExisteErro == true) {
                notificationFactory.error("Adicionado as erros");
                $scope.carregarConferenciasErros();
                return;
            };
            
            var linha = $scope.getNumInvListaVerificacoes(info.NumInventario);
            //console.log(linha);
            if (linha != null)
            {
                linha.Conferido = info.Conferido;
                notificationFactory.success("Conferido");

                var pag = $scope.encontraPaginaNumInventario(cod);
                $scope.selPagina(pag);
                return;
            }
                                    
            //$scope.listaVerificacoes.push(info);
          
        };
        

        var errorCallback = function (data, status, headers, config) {
            console.log(data);
        };

        var ed = 0;
        var pi = 0;
        var sa = 0;
        var idEnt = 0;

        if ($scope.selectedEdificio != null)
        {
            ed = $scope.selectedEdificio.PK_Edificio;
            idEnt = $scope.selectedEdificio.FK_Entidade;
        }
            
        if ($scope.selectedPiso != null)
            pi = $scope.selectedPiso.PK_Piso;
        if ($scope.selectedSala != null)
            sa = $scope.selectedSala.PK_Sala;
        
        
        localizacaoFactory.getCadastroEAN13(cod, idEnt, ed, pi, sa).success(getSuccessCallback).error(errorCallback);
        $scope.codbarras = "";

    };

    $scope.paginaAtual = 0;

    $scope.selPagina = function (numPag) {
        if ($scope.paginas == null)
            return [];
        if (numPag > $scope.paginas.length - 1)
            numPag = $scope.paginas.length - 1;

        $scope.paginaAtual = numPag;
        $scope.selectedPagina=$scope.paginas[numPag];
    };

    $scope.selPaginaSeguinte = function () {
        if ($scope.paginas == null)
            return [];
        $scope.paginaAtual++;
        
        if ($scope.paginaAtual > $scope.paginas.length - 1)
            $scope.paginaAtual = $scope.paginas.length - 1;

        //console.log($scope.paginas[$scope.paginaAtual]);

        $scope.selectedPagina = $scope.paginas[$scope.paginaAtual];
    };

    $scope.selPaginaAnterior = function () {
        if ($scope.paginas == null)
            return [];
        $scope.paginaAtual--;

        if ($scope.paginaAtual < 0)
            $scope.paginaAtual = 0;

        $scope.selectedPagina = $scope.paginas[$scope.paginaAtual];
    };
    
    $scope.getPaginaAtual = function () {
        if ($scope.paginas == null)
        {
            $scope.paginas=[];
        }
            

        if ($scope.paginaAtual > $scope.paginas.length - 1)
            $scope.paginaAtual = $scope.paginas.length - 1;

        if ($scope.paginaAtual < 0)
            $scope.paginaAtual = 0;

        return Number($scope.paginaAtual) + 1;
    };

    $scope.conferenciaTrancada = function () {
        if ($scope.EstaTrancado == null)
            return false;
        return $scope.EstaTrancado;
    }

    $scope.descricaoBotaoTrancar = function () {
        if ($scope.EstaTrancado == true)
            return "Desbloquear para Recalcular";
        return "Encerrar Conferência neste Ano";
    };

    $scope.trancarConferencias = function () {
        if ($scope.listaVerificacoes == null)
            return;
        if ($scope.IdConf == 0)
            return;

        var getSuccessCallback = function (data, status) {
            notificationFactory.success(data);
            //$scope.EstaTrancado = true;
            $scope.carregarConferencias();
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        if ($scope.EstaTrancado == false)
            localizacaoFactory.trancarConferencias($scope.IdConf).success(getSuccessCallback).error(errorCallback);
        else
            localizacaoFactory.desbloquearConferencias($scope.IdConf).success(getSuccessCallback).error(errorCallback);

    };

    $scope.carregarConferencias = function () {
        
        $scope.selectedPagina = [];
        $scope.paginas = [];
        $scope.itemsPorPagina = 100;

        var getSuccessCallback = function (data, status) {
            if (data == null) {
                $scope.EstaTrancado = false;
                $scope.listaVerificacoes = [];
                $scope.IdConf = 0;
                $scope.ConfAnoCivil = 0;
                return;
            }
            $scope.listaVerificacoes = data.LinhasConf;
            $scope.EstaTrancado = data.EstaTrancado;
            $scope.IdConf = data.IdConf;
            $scope.ConfAnoCivil = data.AnoCivil;
            $scope.totalPaginas = Math.ceil($scope.listaVerificacoes.length / $scope.itemsPorPagina);
                        

            var linha = 0;
            for (pag = 0; pag < $scope.totalPaginas; pag++) {
                var lst = [];
                var n = $scope.itemsPorPagina;
                var dif = $scope.listaVerificacoes.length - linha;
                if (dif < $scope.itemsPorPagina)
                    n = dif;

                for (i = 0; i < n; i++) {
                    lst.push($scope.listaVerificacoes[linha]);
                    linha++;
                }


                $scope.paginas.push(lst);
            }

            if ($scope.paginas == null)
                $scope.paginas = [];
            if ($scope.paginas.length>0)
                $scope.selectedPagina = $scope.paginas[0];
        };

        var errorCallback = function (data, status, headers, config) {
            
        };

        var ed = 0;
        var pi = 0;
        var sa = 0;
        var locCompleto = false;

        if ($scope.selectedEdificio != null)
            ed = $scope.selectedEdificio.PK_Edificio;
        if ($scope.selectedPiso != null)
            pi = $scope.selectedPiso.PK_Piso;
        if ($scope.selectedSala != null)
            sa = $scope.selectedSala.PK_Sala;
        if ($scope.localCompleto != null)
            locCompleto = $scope.localCompleto;
        
        var pos = 0;
             
        
        
        localizacaoFactory.getConferencias(ed, pi, sa, locCompleto, pos).success(getSuccessCallback).error(errorCallback);

    };

    $scope.guardarConferencias = function () {
        if ($scope.listaVerificacoes==null)
            return;

        var getSuccessCallback = function (data, status) {
            notificationFactory.success(data);
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };
                

        localizacaoFactory.guardarConferencias($scope.listaVerificacoes).success(getSuccessCallback).error(errorCallback);

    };

    $scope.carregarConferenciasErros = function () {

        var getSuccessCallback = function (data, status) {
            $scope.listaVerificacoesErros = data;
        };

        var errorCallback = function (data, status, headers, config) {

        };
               

        localizacaoFactory.getConferenciasErros().success(getSuccessCallback).error(errorCallback);

    };

    $scope.mostraErrosVerificacao = function () {

        if ($scope.listaVerificacoesErros == null)
            return;

       
        /*var ed = 0;
        var pi = 0;
        var sa = 0;
        if ($scope.selectedEdificio != null)
            ed = $scope.selectedEdificio.PK_Edificio;
        if ($scope.selectedPiso != null)
            pi = $scope.selectedPiso.PK_Piso;
        if ($scope.selectedSala != null)
            sa = $scope.selectedSala.PK_Sala;
                

        row.FK_Edificio = ed;
        row.FK_Piso = pi;
        row.FK_Sala = sa;*/
        var row = { lst: $scope.listaVerificacoesErros };

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalVerificacoesErros.html',
            controller: 'modalController',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
                       

        }, function () {

        });
        
    };

    

    $scope.procuraInventarioNum = function (num) {
        console.log("A procurar por nº inv "+num);
        var pag = $scope.encontraPaginaNumInventarioPorNumero(num);
        $scope.selPagina(pag);
    };

    $scope.verificaCorAbateBloqueio = function (item) {
        if (item == null)
            return {};
        if (item.TemAbate)
            return { "color": "orange" };
        return {};
    };

    $scope.printFichaConferencias = function (excel) {
       
        var xls = "";
        if (excel == true)
            xls = "&excel=1";

        var w = window.open("../api/mapasconferencias/" + $scope.IdConf + "/?tk=" + sessionStorage.getItem("CibeAtk") + xls);
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.printFichaConferenciasErros = function (excel) {

        var xls = "";
        if (excel == true)
            xls = "&excel=1";

        var w = window.open("../api/mapasconferencias/erros/" + $scope.ConfAnoCivil + "/?tk=" + sessionStorage.getItem("CibeAtk") + xls);
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.openModalCentroCustos = function () {
        var idEd=0;
        var idP = 0;
        var idS = 0;
               
        
        if ($scope.selectedEdificio != null) {
            idEd = $scope.selectedEdificio.PK_Edificio;
        }
        if ($scope.selectedPiso != null) {
            idP = $scope.selectedPiso.PK_Piso;
        }
        if ($scope.selectedSala != null) {
            idS = $scope.selectedSala.PK_Sala;
        }


        var row = {
            perm: $scope.$parent.mnuValorizacao,
            idEdificio: idEd,
            idPiso: idP,
            idSala: idS
        };

        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalCentroCustos.html',
            controller: 'modalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            item.perm = null;

        }, function () {
        });
    };

    $scope.openModalEtiquetas = function () {
        var idEd = 0;
        var idP = 0;
        var idS = 0;


        if ($scope.selectedEdificio != null) {
            idEd = $scope.selectedEdificio.PK_Edificio;
        }
        if ($scope.selectedPiso != null) {
            idP = $scope.selectedPiso.PK_Piso;
        }
        if ($scope.selectedSala != null) {
            idS = $scope.selectedSala.PK_Sala;
        }


        var row = {
            idEdificio: idEd,
            idPiso: idP,
            idSala: idS,
            locais: true
        };

        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalEtiquetas.html',
            controller: 'modalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {

        }, function () {
        });
    };

    $scope.openModalMudarDeLocal = function () {
        var idEd = 0;
        var idP = 0;
        var idS = 0;
        
        if ($scope.selectedEdificio != null) {
            idEd = $scope.selectedEdificio.PK_Edificio;
            
        }
        if ($scope.selectedPiso != null) {
            idP = $scope.selectedPiso.PK_Piso;
            
        }
        if ($scope.selectedSala != null) {
            idS = $scope.selectedSala.PK_Sala;
            
        }

        var row = {
            idEdificio: idEd,
            idPiso: idP,
            idSala: idS,
            locais: true
        };

        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalMudarLocal.html',
            controller: 'modalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            location.reload();
        }, function () {
        });
    };

    $scope.mudarBensDeLocal = function (items,idEdificio,idPiso,idSala) {
        if (items.length == 0) {
            notificationFactory.error('Não indicou que bens pretende mover de local');
            return;
        }
            
        var getSuccessCallback = function (data, status) {
            $scope.listarEdificios(-1);
            notificationFactory.success(data);
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
        };

        var IdsInv = [];
        items.forEach(function (item) {
            if (item.selecionado) {
                IdsInv.push(item.Pk_Inventario);
            }
        });

        if (IdsInv.length == 0) {
            notificationFactory.error('Não indicou que bens pretende mover de local');
            return;
        }
        var dados = {
            LstIdsInv: IdsInv,
            IdEdificio: idEdificio,
            IdPiso: idPiso,
            IdSala: idSala
        };

        localizacaoFactory.mudalBensDeLocal(dados).success(getSuccessCallback).error(errorCallback);

    };

    $scope.selecionarRegistosMoverLocal = function (items,estado) {
        
        items.forEach(function (item) {
            item.selecionado = estado;
        });
    };


    if ($scope.listaVerificacoesErros == null)
        $scope.listaVerificacoesErros = [];
    if ($scope.listaVerificacoesErros.length==0)
        $scope.carregarConferenciasErros();
    
    
    $scope.procurarPorNumInv = false;

    $scope.openModalResponsavelLocal = function () {
        if ($scope.mostraAplicarGestor() === false) {
            //notificationFactory.error('Não tem permissões com este perfil')
            return;
        }

        var idEd = 0;
        var idP = 0;
        var idS = 0;

        if ($scope.selectedEdificio != null) {
            idEd = $scope.selectedEdificio.PK_Edificio;

        }
        if ($scope.selectedPiso != null) {
            idP = $scope.selectedPiso.PK_Piso;

        }
        if ($scope.selectedSala != null) {
            idS = $scope.selectedSala.PK_Sala;

        }

        var row = {
            perm: $scope.$parent.mnuTabelas,
            IdResponsavel: 0,
            idEdificio: idEd,
            idPiso: idP,
            idSala: idS,
            locais: true
        };
        
        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalMudarResponsavelLocal.html',
            controller: 'modalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            location.reload();
        }, function () {
        });
    };

    $scope.aplicarResponsavelAoLocal = function (items, idEdificio, idPiso, idSala,idResponsavel) {
        if (items == null) {
            notificationFactory.error('Dados inválidos');
            return;
        }

        if (items.length == 0) {
            notificationFactory.error('Não indicou que bens pretende mover de gestor');
            return;
        }

        var IdsInv = [];
        items.forEach(function (item) {
            if (item.selecionado) {
                IdsInv.push(item.Pk_Inventario);
            }
        });

        if (IdsInv.length == 0) {
            notificationFactory.error('Não indicou que bens pretende mover de gestor');
            return;
        }

        
        if (idResponsavel==null ||idResponsavel == 0) {
            notificationFactory.error('Dados inválidos. Indique o gestor');
            return;
        }


        var dados = {
            LstIdsInv: IdsInv,
            IdEdificio: idEdificio,
            IdPiso: idPiso,
            IdSala: idSala,
            IdResponsavel: idResponsavel
        };


        var IdsInv = [];
        items.forEach(function (item) {
            if (item.selecionado) {
                IdsInv.push(item.Pk_Inventario);
            }
        });


        var getSuccessCallback = function (data, status) {
            notificationFactory.success(data);
            ngProgress.complete();
        };

        var errorCallback = function (data, status, headers, config) {
            notificationFactory.error(data);
            ngProgress.reset();
        };

        httpRequestFactory.postData('../api/cadastro/aplicar/responsavel/listabens', dados).success(getSuccessCallback).error(errorCallback);
        ngProgress.start();
    };

    $scope.mostraAplicarGestor = function () {
        //console.log($rootScope.root_nomePerfilSelecionado);
        return ($rootScope.root_nomePerfilSelecionado === 'Supervisor' || $rootScope.root_nomePerfilSelecionado === 'Responsável');
    }
       

});