app.controller("entidadeController", function ($scope, $modal, $rootScope, entidadeFactory, notificationFactory, $location) {

 

    $scope.selEntidade = function (row) {

        
        $scope.selectedEntidade = row;
        
    };

    $scope.selEntidadePk=function(id) {
        
        /*var row = {
            PK_Entidade: 0,
            NomeEntidade:""
        };
        $scope.selEntidade(row);*/
        if ($scope.items != null)
        {
            
            for (i = 0; i < $scope.items.length; i++)
            {
                var row = $scope.items[i];
                
                if (row.PK_Entidade == id)
                {
                    $scope.selEntidade(row);
                    i = $scope.items.length;
                }
            }
        }
    };

    $scope.confirmarApagarEntidade = function (row,edificio) {

        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.apagarEntidade(item,edificio);

        }, function () {

        });

    };

    $scope.carregarEntidades = function (id) {
        
        var getSuccessCallback = function (data, status) {

            $scope.items = data;

            if ($scope.items.length > 0)
            {
                if (id==null)
                    $scope.selEntidade($scope.items[0]);
                else
                {
                    $scope.selEntidadePk(id);
                }
                    
            }
                
        };

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

        entidadeFactory.getEntidades().success(getSuccessCallback).error(errorCallback);
       
    };

    $scope.entidadeEditRow = function (row,id) {

        if (row == null) {
            row = {
                PK_Entidade: 0,
                NomeEntidade: '',
                op: "Novo"
            }
        }
        else {
            row.op = "Editar";
        }
        

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

        var modalInstance = $modal.open(
        {

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

        modalInstance.result.then(function (item) {

            item.perm = null;
            if (item.op == "Novo")
                $scope.inserirEntidade(item,id);
            else
                $scope.updateEntidade(item);
        }, function () {

        });

    };

    $scope.inserirEntidade = function (it,id) {
        if (it == null)
            return;

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

            $scope.carregarEntidades(id);

            
        };

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

        
        entidadeFactory.addEntidade(it).success(successCallback).error(errorCallback);
        
    };

    $scope.apagarEntidade = function (elem,edificio) {
        if (elem == null)
            return;


        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            
            $scope.selectedEntidade = null;
            $scope.atribuirEdificio(edificio);

            $scope.carregarEntidades();
            
        };

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

        entidadeFactory.deleteEntidade(elem).success(successCallback).error(errorCallback);
    };

    $scope.updateEntidade = 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);
        };

        entidadeFactory.updateEntidade(elem).success(successCallback).error(errorCallback);
        
    };

    $scope.atribuirEdificio=function(edificio)
    {
        if (edificio == null)
            return;

        

        if ($scope.selectedEntidade == null)
        {
            
            edificio.FK_Entidade = 0;
            edificio.NomeEntidade = "";
        }
        else
        {
            edificio.FK_Entidade = $scope.selectedEntidade.PK_Entidade;
            if (edificio.FK_Entidade == "" || isNaN(edificio.FK_Entidade))
            {
                edificio.FK_Entidade = 0;
            }
            else
                edificio.NomeEntidade = $scope.selectedEntidade.NomeEntidade;
        }
        
        
    }

 });