app.controller("fornecedorController", function ($scope, $modal, $log, $http, dataService, fornecedorFactory, notificationFactory, httpRequestFactory) {
    $scope.fornecedores = [];

    

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


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

        fornecedorFactory.getFornecedores().success(getSuccessCallback).error(errorCallback);
    };

    

    $scope.inserirFornecedor = function (item) {
        if (item == null)
            return;

        var successCallback = function (data, status, headers, config) {
            //alert(data);
            //$scope.items.push(it);
            notificationFactory.success(data);
            $scope.carregarFornecedores();
        };


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

        fornecedorFactory.addFornecedor(item).success(successCallback).error(errorCallback);
    };

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

        fornecedorFactory.updateFornecedor(elem).success(successCallback).error(errorCallback);
    };

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

       
        var successCallback = function (data, status, headers, config) {
            
            //$scope.carregarFornecedor();
            notificationFactory.success(data);
            var arr = $scope.fornecedores;
            for (i = 0; i < arr.length; i++) {
                if (arr[i] == elem) {
                    arr.splice(i, 1);

                        break;
                   
                }
            }

            $scope.selectedRow=null
        };


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

        fornecedorFactory.deleteFornecedor(elem).success(successCallback).error(errorCallback);
    };

    $scope.selectItem = function (row) {
        $scope.selectedRow = row;

    };

    $scope.fornecedorEditRow = function (row) {
        if (row == null) {
            row = {

                Pk_Fornecedor: 0,
                Nome: "Nome",
                NIF: ""
            };

            row.op = "Novo";
            $scope.editarFornecedor(row);
        }
        else {
            row.op = "Editar";
            //Nif<400000000 e preenchido, forçar o log de rgpd

            var isNumero = $scope.isNumeric(row.NIF);
            if (isNumero == true) {
                if (Number(row.NIF) < 400000000) {
                    $scope.confirmarDadosSensiveis(row);
                }
                else
                    $scope.editarFornecedor(row);

                return;
            }

            $scope.editarFornecedor(row);
        }
                
    };

    $scope.isNumeric = function (n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

    $scope.editarFornecedor = function (row) {
        
        if (row == null) {
            row = {

                Pk_Fornecedor: 0,
                Nome: "Nome",
                NIF: ""
            };

            row.op = "Novo";
        }
        else {
            if (row.Pk_Fornecedor==0)
                row.op = "Novo";
            else
                row.op = "Editar";
        }

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalEditarFornecedor.html?v=' + new Date(),
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {
            if (item.op == "Editar") {
                $scope.selectedRow = item;
                $scope.updateFornecedor(item);
            }
            else
                $scope.inserirFornecedor(item);

        }, function () {

        });

    };

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

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmarApagar.html?v=' + new Date(),
            controller: 'modalController',
            resolve: {

                items: function () { return row; },

                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {

            $scope.apagarItem(item);

        }, function () {

        });

    };

    $scope.atribuirFornecedorCadastro=function(row,cadastro) {
        if (row == null || cadastro == null)
            return;
        $scope.selectItem(row)
        cadastro.NomeFornecedor = row.Nome;
        cadastro.Fk_Fornecedor = row.Pk_Fornecedor;
    };

    $scope.ativarLinha = function (row, cadastro) {
        if (row == null || cadastro == null)
            return;
        if (row.Pk_Fornecedor == cadastro.Fk_Fornecedor)
        {
            $scope.selectItem(row)
            cadastro.NomeFornecedor = row.Nome;
            cadastro.Fk_Fornecedor = row.Pk_Fornecedor;
        }
        
        
    };

    $scope.saveLogRGPD = function (row) {
        var getSuccessCallback = function (data, status) {
            
            $scope.editarFornecedor(row);
        };

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

        var dados = $scope.selectedRow;
        httpRequestFactory.postData('../api/fornecedor/RGPD', dados).success(getSuccessCallback).error(errorCallback);
        
    };

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

        
        row.mensagem = "A janela que pretende aceder contêm dados pessoais. Deseja continuar?"
        

        var modalInstance = $modal.open(
        {

            templateUrl: 'views/modalConfirmar.html?v=' + new Date(),
            controller: 'modalController',
            resolve: {
                items: function () { return row; },
                //  isNew: false
            }
        });

        modalInstance.result.then(function (item) {
            $scope.saveLogRGPD(row);
            
        }, function () {

        });

    };


});

