app.controller("mapasController", function ($scope, $modal, cadastroFactory, localizacaoFactory, notificationFactory, entidadeFactory, Base64, httpRequestFactory, ngProgress) {
    
    $scope.listaMapas = [];
    $scope.listaMeses = [];
    $scope.selectedCadastro = null;
    $scope.MAPAF1 = 'MAPAF1';
    $scope.MAPAF2 = 'MAPAF2';
    $scope.MAPAF3 = 'MAPAF3';
    $scope.MAPA_RELACAO_EXISTENCIAS = 'MAPA_RELACAO_EXISTENCIAS';
    $scope.MAPA_RELACAO_BENS = 'MAPA_RELACAO_BENS';
    $scope.MAPAF4 = 'MAPAF4';
    $scope.MAPA_ETIQUETAS = 'MAPA_ETIQUETAS';
    $scope.MAPA_BENS_EXCEL = 'MAPA_BENS_EXCEL';
    $scope.MAPA_VALORLIQUIDO_BENS_EXCEL = 'MAPA_VALORLIQUIDO_BENS_EXCEL';
    $scope.MAPA_AQUISICAO_BENS = 'MAPA_AQUISICAO_BENS';
    
    $scope.setCadastro = function (inv) {
        $scope.selectedCadastro = inv;
    }

    $scope.printValoresTotaisPorContasPatrimoniais = function (ano,mes,excel) {
        var w = window.open("../api/mapas/valoresContaPatrimonial/"+ano+"/"+mes+"?excel=" + excel );
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.printValoresTotaisPorContasFinanceira = function (ano, mes, excel) {
        var w = window.open("../api/mapas/valoresContaPatrimonial/SNC/" + ano + "/" + mes + "?excel=" + excel);
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.printPropostaAbate = function (IdInventario) {
        var w = window.open("../api/mapas/propostaAbate/" + IdInventario);
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.printAutoAbate = function (IdInventario) {
        var w = window.open("../api/mapas/autoAbate/" + IdInventario);
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.printAutoAquisicao = function (IdInventario) {
        var w = window.open("../api/mapas/autoAquisicao/" + IdInventario);
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.printFichaF1 = function () {
        if ($scope.selectedCadastro == null)
            return;

        var id = $scope.selectedCadastro.Pk_Inventario;
        var op = { Pk_inventario: id, NumInventario: $scope.selectedCadastro.NumInventario }
        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalFidMoveis.html?v=' + new Date().getTime(),
            controller: 'modalController',
            resolve: {
                items: function () { return op; }

            }
        });

        modalInstance.result.then(function () {

        }, function () {
        });
    };

    $scope.printFichaInvF2 = function () {

        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalFInv.html',
            controller: 'modalController',
            resolve: {
                items: {}
            }
        });

        modalInstance.result.then(function () {

        }, function () {
        });
    };

    $scope.printFichaAmortF3 = function () {
        var row = $scope.selectedCadastro;
        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalFAmort.html',
            controller: 'modalController',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function () {

        }, function () {
        });
    };

    $scope.printMapaInvRelacaoExistencias = function (codigo) {
        var mRelacaoBens = false;
        var mRelacaoExistencias = false;
        var tituloJanela = "Relação de bens";
        if (codigo == $scope.MAPA_RELACAO_EXISTENCIAS) {
            mRelacaoExistencias = true;
            tituloJanela = "Relação de existências";
        }
        if (codigo == $scope.MAPA_RELACAO_BENS) {
            mRelacaoBens = true;
            tituloJanela = "Relação de bens";
        }

        var row = {
            mostrarBtRelBens: mRelacaoBens,
            mortrarBtRelExist: mRelacaoExistencias,
            titulo: tituloJanela
        };
        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalMapaInv.html',
            controller: 'modalController',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function () {

        }, function () {
        });
    };

    $scope.printFichaMapaBensF4 = function () {
        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalFMapaBens.html',
            controller: 'modalController',
            resolve: {
                items: {}
            }
        });

        modalInstance.result.then(function () {

        }, function () {
        });

    };

    $scope.ExportarInventarioExcel = function () {
        window.open("../api/ExportarInventarioExcel/?tk=" + sessionStorage.getItem("CibeAtk"));
    };

    $scope.openModalEtiquetas = function () {
        
        var op = {
            numI: 0,
            numF: 0
        };

        if ($scope.selectedCadastro != null) {
            op.numI = $scope.selectedCadastro.NumInventario;
            op.numF = $scope.selectedCadastro.NumInventario;
        }
        

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

        modalInstance.result.then(function () {

        }, function () {
        });
    };

    $scope.printMapaExcelGetValorLiquidoDosBens = function (ano, mes) {
        var w = window.open("../api/mapas/valorLiquidoBens/" + ano + "/" + mes + "?tk=" + sessionStorage.getItem("CibeAtk"));
        $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
    };

    $scope.listarMapas = function () {
        $scope.listaMapas = [];
        
        if ($scope.selectedCadastro != null) {
            $scope.listaMapas.push({ Descricao: 'Auto de Abate. NºInv: ' + $scope.selectedCadastro.NumInventario, codigo: 'AUTOABATE' });
            $scope.listaMapas.push({ Descricao: 'Auto de Aquisição. NºInv: ' + $scope.selectedCadastro.NumInventario, codigo: 'AUTOAQUISICAO' });
        }

        $scope.listaMapas.push({ Descricao: 'Etiquetas', codigo: $scope.MAPA_ETIQUETAS });
        if ($scope.selectedCadastro != null) {
            $scope.listaMapas.push({ Descricao: 'F1 - Ficha de Identificação', codigo: $scope.MAPAF1 });
        }

        $scope.listaMapas.push({ Descricao: 'F2 - Ficha de Inventário', codigo: $scope.MAPAF2 });
        if ($scope.selectedCadastro != null)
            $scope.listaMapas.push({ Descricao: 'F3 - Ficha de Amortizações', codigo: $scope.MAPAF3 });
        $scope.listaMapas.push({ Descricao: 'F4 - Mapa de Bens Inventariados', codigo: $scope.MAPAF4 });

        if ($scope.selectedCadastro != null) {
            $scope.listaMapas.push({ Descricao: 'Proposta de Abate. NºInv: ' + $scope.selectedCadastro.NumInventario, codigo: 'PROPABATE' });
        }

        $scope.listaMapas.push({ Descricao: 'Relação de Bens', codigo: $scope.MAPA_RELACAO_BENS });
        $scope.listaMapas.push({ Descricao: 'Relação de Existências', codigo: $scope.MAPA_RELACAO_EXISTENCIAS });
        $scope.listaMapas.push({ Descricao: 'Valores totais por conta Financeira', codigo: 'VCONTAFIN' });
        $scope.listaMapas.push({ Descricao: 'Valores totais por conta Patrimonial', codigo: 'VCONTAPAT' });
        $scope.listaMapas.push({ Descricao: 'Exportar Bens para Excel', codigo: $scope.MAPA_BENS_EXCEL });
        $scope.listaMapas.push({ Descricao: 'Valor liquido dos Bens em Excel', codigo: $scope.MAPA_VALORLIQUIDO_BENS_EXCEL });
        $scope.listaMapas.push({ Descricao: 'Aquisição de Bens', codigo: $scope.MAPA_AQUISICAO_BENS });
                        
    };

    $scope.listarMeses = function () {
        $scope.listaMeses = [];
        
        $scope.listaMeses.push({ Mes: 1, Descricao: 'Janeiro' });
        $scope.listaMeses.push({ Mes: 2, Descricao: 'Fevereiro' });
        $scope.listaMeses.push({ Mes: 3, Descricao: 'Março' });
        $scope.listaMeses.push({ Mes: 4, Descricao: 'Abril' });
        $scope.listaMeses.push({ Mes: 5, Descricao: 'Maio' });
        $scope.listaMeses.push({ Mes: 6, Descricao: 'Junho' });
        $scope.listaMeses.push({ Mes: 7, Descricao: 'Julho' });
        $scope.listaMeses.push({ Mes: 8, Descricao: 'Agosto' });
        $scope.listaMeses.push({ Mes: 9, Descricao: 'Setembro' });
        $scope.listaMeses.push({ Mes: 10, Descricao: 'Outubro' });
        $scope.listaMeses.push({ Mes: 11, Descricao: 'Novembro' });
        $scope.listaMeses.push({ Mes: 12, Descricao: 'Dezembro' });

    };
    
    $scope.selMapa = function (row) {
        $scope.selectedMapa = row;
    };

    $scope.imprimirMapa = function (mapa) {
        if (mapa == null)
            return;
        if (mapa.codigo == 'VCONTAPAT' || mapa.codigo==$scope.MAPA_VALORLIQUIDO_BENS_EXCEL || mapa.codigo == 'VCONTAFIN') {
            $scope.escolheAnoMes(mapa);
            return;
        }
        if (mapa.codigo == $scope.MAPA_AQUISICAO_BENS) {
            $scope.escolheAno(mapa);
            return;
        }
        
        if (mapa.codigo == 'PROPABATE') {
            
            var id = 0;
            if ($scope.selectedCadastro!=null)
                id=$scope.selectedCadastro.Pk_Inventario;
            $scope.printPropostaAbate(id);
            return;
        }
        if (mapa.codigo == 'AUTOABATE') {

            var id = 0;
            if ($scope.selectedCadastro != null)
                id = $scope.selectedCadastro.Pk_Inventario;
            $scope.printAutoAbate(id);
            return;
        }
        if (mapa.codigo == 'AUTOAQUISICAO') {

            var id = 0;
            if ($scope.selectedCadastro != null)
                id = $scope.selectedCadastro.Pk_Inventario;
            $scope.printAutoAquisicao(id);
            return;
        }
        if (mapa.codigo == $scope.MAPAF1) {
            $scope.printFichaF1();
            return;
        }
        if (mapa.codigo == $scope.MAPAF2) {
            $scope.printFichaInvF2();
            return;
        }
        if (mapa.codigo == $scope.MAPAF3) {
            $scope.printFichaAmortF3();
            return;
        }
        if (mapa.codigo == $scope.MAPA_RELACAO_EXISTENCIAS) {
            $scope.printMapaInvRelacaoExistencias(mapa.codigo);
            return;
        }
        if (mapa.codigo == $scope.MAPA_RELACAO_BENS) {
            $scope.printMapaInvRelacaoExistencias(mapa.codigo);
            return;
        }
        if (mapa.codigo == $scope.MAPAF4) {
            $scope.printFichaMapaBensF4();
            return;
        }
        if (mapa.codigo == $scope.MAPA_ETIQUETAS) {
            $scope.openModalEtiquetas();
            return;
        }
        if (mapa.codigo == $scope.MAPA_BENS_EXCEL) {
            $scope.ExportarInventarioExcel();
            return;
        }
    };

    $scope.escolheAnoMes = function (mapa) {
        
        if (mapa == null)
            return;

        $scope.listarMeses();

        var row = { ano: new Date().getFullYear(), mes: 1, excel: 0, lstMeses: $scope.listaMeses, soExcel: false, soPDF: false };
        if (mapa.codigo == $scope.MAPA_VALORLIQUIDO_BENS_EXCEL) {
            row.soExcel = true;
        }
        
        var modalInstance = $modal.open(
        {
            templateUrl: 'views/modalEscolhaAnoMes.html',
            controller: 'modalController',
            resolve: {
                items: function () { return row; }
            }
        });

        modalInstance.result.then(function (item) {
            if (mapa.codigo == 'VCONTAPAT') {
                $scope.printValoresTotaisPorContasPatrimoniais(item.ano, item.mes, item.excel);
                return;
            }
            if (mapa.codigo == 'VCONTAFIN') {
                $scope.printValoresTotaisPorContasFinanceira(item.ano, item.mes, item.excel);
                return;
            }
            if (mapa.codigo==$scope.MAPA_VALORLIQUIDO_BENS_EXCEL) {
                $scope.printMapaExcelGetValorLiquidoDosBens(item.ano, item.mes);
                return;
            }
           
            
        }, function () {
        });
    };

    $scope.escolheAno = function (mapa) {

        if (mapa == null)
            return;
      
        var row = { ano: new Date().getFullYear(), excel: 0 , soExcel: false, soPDF: false };
        
        if (mapa.codigo == $scope.MAPA_AQUISICAO_BENS) {
            row.soPDF = true;
        }

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

        modalInstance.result.then(function (item) {
           
            if (mapa.codigo == $scope.MAPA_AQUISICAO_BENS) {
                $scope.imprimirMapaAquisicao(item.ano);
                return;
            }

        }, function () {
        });
    };

    $scope.imprimirMapaAquisicao = function (ano) {
        
        var getSuccessCallback = function (data, status) {
            
            ngProgress.complete();

            var file = new Blob([data], { type: 'application/pdf' });
            var fileURL = URL.createObjectURL(file);
           
            var a = document.createElement('a');
            a.href = fileURL;
            a.download = "AquisicaoBens.pdf";
            a.click();
            window.URL.revokeObjectURL(fileURL);
        };

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

        var dados = {
            Ano: ano
        };
        httpRequestFactory.getDownload('../api/mapas/aquisicaoBens', dados).success(getSuccessCallback).error(errorCallback);
        ngProgress.start();
    };


});