app.controller("etiquetasController", function ($scope, notificationFactory, httpRequestFactory, etiquetasFactory, $upload) {

    $scope.altura = 28;
    $scope.nl = 1;
    $scope.nc = 1;
    $scope.margl = 0;
    $scope.margr = 0;
    $scope.margt = 0;
    $scope.margb = 0;
    $scope.inicial = 0;
    $scope.final = 0;
    $scope.todos = false;
    $scope.legenda = false;
    $scope.larguraPagina_mm = 50;
    $scope.espacamento_vertical_mm = 3;
    $scope.esticar = true;
    $scope.rollPaper = true;
    $scope.files = [];
    $scope.umaEtiquetaPorPagina = false;
    $scope.porLocalET = false;
    $scope.idEdificioET = 0;
    $scope.idPisoET = 0;
    $scope.idSalaET = 0;
    $scope.tamanhoTexto_pt = 5.67;
    $scope.espacamentoHorizontal = 0;
    $scope.filtroInicial = null;
    $scope.MostrarLocal = true;
    

    $scope.determinaNumeroLinhas = function () {
        var alturaLivre = 297 - (Number($scope.margb) + Number($scope.margt));
        
        if ($scope.altura == "") {
            $scope.nl = 0;
            return;
        }

        if ($scope.altura < 10) {
            $scope.nl = 0;
            return;
        }

        if ($scope.altura > 50)
        {
            $scope.nl = 0;
            return;
        }
            
        if (isNaN($scope.altura))
            $scope.altura = 16;

        

        if ($scope.altura == 0)
            $scope.nl = 0;
        else
            $scope.nl = Math.floor(alturaLivre / $scope.altura);
        
    };
    
    $scope.getEtiquetas=function () {
        if ($scope.validaValores() == false)
        {
            return;
        } 

        $scope.determinaNumeroLinhas();
        var legenda = 0;
        if ($scope.legenda == true)
            legenda = 1;


        var paramsPost = {
            al: $scope.altura,
            c: $scope.nc,
            ml: $scope.margl,
            mr: $scope.margr,
            mt: $scope.margt,
            mb: $scope.margb,
            inicial: $scope.inicial,
            final: $scope.final,
            tk: sessionStorage.getItem("CibeAtk"),
            legenda: legenda,
            lp: $scope.larguraPagina_mm,
            ev: $scope.espacamento_vertical_mm,
            est: $scope.esticar,
            rp: $scope.rollPaper,
            uep: $scope.umaEtiquetaPorPagina,
            //TamanhoTexto_pt: $scope.tamanhoTexto_pt,
            todos: $scope.todos,
            EspacamentoHorizontal: $scope.espacamentoHorizontal,
            MostrarLocal: $scope.MostrarLocal
        }

        if ($scope.files.length > 0)
        {
            etiquetasFactory.getEtiquetasByXLS(paramsPost, $scope.files[0]).
                success(function (data) {
                    //console.log(data);
                
                    var file = new Blob([data], { type: 'application/pdf' });
                    var fileURL = URL.createObjectURL(file);
                    var w = window.open(fileURL);
                   $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
               // alert("ss");
            })

           .error(function () {

           });
        }
        else
        {
            var params = "?al=" + $scope.altura +
                            "&c=" + $scope.nc +
                            "&ml=" + $scope.margl +
                            "&mr=" + $scope.margr +
                            "&mt=" + $scope.margt +
                            "&mb=" + $scope.margb +
                            "&inicial=" + $scope.inicial +
                            "&final=" + $scope.final +
                            "&tk=" + sessionStorage.getItem("CibeAtk") + "&legenda=" + legenda +
                            "&lp=" + $scope.larguraPagina_mm +
                            "&ev=" + $scope.espacamento_vertical_mm +
                            "&est=" + $scope.esticar +
                            "&rp=" + $scope.rollPaper +
                            "&uep=" + $scope.umaEtiquetaPorPagina +
                            "&idEdificio=" + $scope.idEdificioET +
                            "&idPiso=" + $scope.idPisoET +
                            "&idSala=" + $scope.idSalaET +
                            "&porLocal=" + $scope.porLocalET +
                            "&tamanhoTexto_pt=" + $scope.tamanhoTexto_pt +
                            "&todos=" + $scope.todos +
                            "&EspacamentoHorizontal=" + $scope.espacamentoHorizontal +
                            "&MostrarLocal=" + $scope.MostrarLocal;


            var w = window.open("../api/etiquetas/" + params);
            $(w.document.body).html('<p align="center">Por Favor Aguarde. Este Processo pode demorar um pouco...</p>');
        }



    };

    $scope.getEtiquetasLocal = function (idEdificio, idPiso, idSala) {
        $scope.atualizaDadosParaEmissaoPorLocal(idEdificio, idPiso, idSala);
        $scope.getEtiquetas();
    }

    $scope.atualizaDadosParaEmissaoPorLocal = function (idEdificio,idPiso,idSala) {
        $scope.idEdificioET = idEdificio;
        $scope.idPisoET = idPiso;
        $scope.idSalaET = idSala;
        $scope.porLocalET = "1";
    };

    $scope.actualizarPagina = function () {
        $scope.determinaNumeroLinhas();
        
        if ($scope.altura == null)
            $scope.nl = 0;

        
        var larg = 210 - (Number($scope.margl) + Number($scope.margr));

        var str = "<table style='border:1px solid #888; max-width:210px; width:"+larg+"px; margin-left:"+$scope.margl+"px; margin-top:"+$scope.margt+"px; '>";
        for (row = 0; row < $scope.nl; row++)
        {
            str += "<tr>";
            for (col = 0; col < $scope.nc; col++)
            {
                str += "<td style='border:1px solid #888; height:" + $scope.altura + "px; padding:0px; text-align:center; font-size:5px'>|||||||||||||</td>";
            }
            str += "</tr>";
        }
        str += "</table>";
        
        
        $scope.pagina = str;
        document.getElementById("prever").innerHTML = $scope.pagina;
    };

    $scope.validaValores = function () {
        
        if (isNaN($scope.nc) || $scope.nc == "") {
            $scope.nc = 4;
            notificationFactory.error("O numero de colunas tem valor inválido");
            return false;
        }

        if (isNaN($scope.altura) || $scope.altura == "") {
            $scope.altura = 16;
            notificationFactory.error("A altura da etiqueta tem valor inválido");
            return false;
        }

        if ($scope.nc<1 || $scope.nc >5) {
            $scope.nc = 4;
            notificationFactory.error("O numero de colunas é inválido");
            return false;
        }

        if ($scope.altura < 1 || $scope.altura > 50) {
            $scope.nc = 4;
            notificationFactory.error("O limite de altura é inválido");
            return false;
        }

        if ($scope.tamanhoTexto_pt <= 0) {
            $scope.tamanhoTexto_pt = 3;
            notificationFactory.error("O valor mínimo para o tamanho de texto é de 3pt");
            return false;
        }
        if ($scope.tamanhoTexto_pt > 25) {
            $scope.tamanhoTexto_pt = 25;
            notificationFactory.error("O valor máximo para o tamanho de texto é de 25pt");
            return false;
        }
        /*if (isNaN($scope.margl) || $scope.margl == "")
        {
            console.log($scope.margl);
            $scope.margl = 0;
            notificationFactory.error("A margem esquerda tem valor inválido");
            return false;
        }
            
        if (isNaN($scope.margr) || $scope.margr == "")
        {
            $scope.margr = 0;
            notificationFactory.error("A margem direita tem valor inválido");
            return false;
        }
            
        if (isNaN($scope.margt) || $scope.margt == "")
        {
            $scope.margt = 0;
            notificationFactory.error("A margem superior tem valor inválido");
            return false;
        }
            
        if (isNaN($scope.margb) || $scope.margb == "")
        {
            $scope.margb = 0;
            notificationFactory.error("A margem inferior tem valor inválido");
            return false;
        }*/

        if (isNaN($scope.inicial) || $scope.inicial == "") {
            $scope.inicial = 0;
        }

        if (isNaN($scope.final) || $scope.final == "") {
            $scope.final = 0;
        }

        return true;
            
    };

    $scope.atualizaIntervalo = function () {
        if ($scope.todos==true)
        {
            $scope.inicial = 0;
            $scope.final = 0;
        }
    };

    $scope.carregaConfiguracoes = function (filtroInicial) {
        
        var getSuccessCallback = function (data, status) {
            $scope.nl = 1;

            if ($scope.filtroInicial == null) {
                $scope.inicial = 0;
                $scope.final = 0;
            }

            $scope.todos = false;
            
            $scope.altura = data.Altura;
            $scope.nc = data.Colunas;
            $scope.margl = data.MarginLeft;
            $scope.margr = data.MarginRight;
            $scope.margt = data.MarginTop;
            $scope.margb = data.MarginBottom;
            $scope.legenda = data.ComLegenda;
            $scope.larguraPagina_mm = data.LargPagina;
            $scope.espacamento_vertical_mm = data.EspacamentoVertical;
            $scope.esticar = data.Esticar;
            $scope.rollPaper = data.RollPaper;
            $scope.tamanhoTexto_pt = data.TamanhoLetra_pt;
            $scope.logotipoSelFile = 'data:image/jpg;base64, ' + data.Logotipo;
            if (data.Logotipo == null) {
                $scope.logotipoSelFile = 'data:image/jpg;base64, R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
            }

            $scope.espacamentoHorizontal = data.EspacamentoHorizontal;
            $scope.MostrarLocal = data.MostrarLocal;
            
            $scope.actualizarPagina();

            if (filtroInicial != null) {
                $scope.inicial = filtroInicial.numI;
                $scope.final = filtroInicial.numF;

                $scope.filtroInicial = filtroInicial;
            }
        };

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

        httpRequestFactory.getData('../api/etiquetas/config').success(getSuccessCallback).error(errorCallback);

    };
   
    
    $scope.onFileSelect = function ($files) {
        var validExts = new Array(".xlsx", ".xls", ".csv");

   //     if (checkfile(sender)) {

            $scope.files = [];
            if ($files.length > 0) {
                for (var i = 0; i < $files.length; i++) {
                    var $file = $files[i];
                    //console.log($file);
                    var fileName = $file.name;
                    var fileExt = fileName.substring(fileName.lastIndexOf('.'));
                    console.log(validExts.indexOf(fileExt));
                    if (validExts.indexOf(fileExt) > -1) {
                       // console.log("certo");
                        $scope.files.push($file);
                        //console.log($file);
                    }
                    else
                    {
                        //console.log("errado");
                        //var file = document.getElementById("btUploa");
                        //file.removeAttribute('value');
                        //file.parentNode.replaceChild(file.cloneNode(true), file);
                        $('#btUpload').val(null);
                        var input = $('#btUpload');
                        input.replaceWith(input.val(null).clone(true));
                    }
                    }

            //}
        }
    };

    $scope.logotipoSelFile = "../app/images/defaultFoto.png";

    $scope.onLogotipoFileSelect = function ($files) {
        //$files: an array of files selected, each file has name, size, and type.

       
        var it = null;
        if ($files.length === 0)
            return;

            var $file = $files[0];
            (function (index) {
                $upload.upload({
                    url: "../api/etiquetas/upload/logotipo",
                    method: "POST",

                    data: it,

                    file: $file
                }).progress(function (evt) {
                    // get upload percentage
                    $scope.uploadprogress = parseInt(100.0 * evt.loaded / evt.total);

                }).success(function (data, status, headers, config) {
                    data = data.toString();
                    if (data.substr(0, 5) != "Erro:") {
                        notificationFactory.success(data);
                        $scope.carregaConfiguracoes(null);
                    }
                    else {
                        notificationFactory.error(data);
                    }

                }).error(function (data, status, headers, config) {

                    notificationFactory.error(data);
                });

            })(i);
        
    };

    $scope.removeLogotipo = function () {

        var getSuccessCallback = function (data, status) {
            
            $scope.logotipoSelFile = 'data:image/jpg;base64, R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
            notificationFactory.success(data);
        };

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

        httpRequestFactory.deleteData('../api/etiquetas/remover/logotipo',1).success(getSuccessCallback).error(errorCallback);

    };

    $scope.actualizarPagina();
      
});