app.controller("escolaController", function ($scope,$rootScope,configuracaoFactory,notificationFactory) {

    $scope.info = {}

    $scope.anoCivilBloqueado = false;
    $scope.selectedAnoCivil = null;
    $scope.estaAcriaAno = false;
    $scope.nomeEscola = "";
    $scope.selectedAnoLetivo = null;

    $scope.carregarEscola = function (comAnos) {
        var getSuccessCallback = function (data, status) {
            $scope.info = data;
            if (comAnos!=null)
                $scope.carregarAnos();
            if (data != null)
                $scope.nomeEscola = data.NomeEscola;

            $scope.carregarAnosLetivos();
        };


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

        configuracaoFactory.getEscola().success(getSuccessCallback).error(errorCallback);
    };

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



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

            $('#botaoAnoCivil').html($scope.selectedAnoCivil.Ano);
        };


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

        if ($scope.selectedAnoCivil != null)
            elem.Fk_Ano = $scope.selectedAnoCivil.Pk_Ano;
        if ($scope.selectedAnoLetivo != null)
            elem.AnoLetivo = $scope.selectedAnoLetivo.AnoLetivo;

        configuracaoFactory.updateEscola(elem).success(successCallback).error(errorCallback);
    };

    $scope.devAnoLista = function (id) {
        var ano = null;
        
        for (i = 0; i < $scope.infoAnos.length; i++)
        {
            
            if ($scope.infoAnos[i].Pk_Ano == id)
            {
                ano = $scope.infoAnos[i];
                break;
            }
        }
        
        return ano;
    };

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

            $scope.infoAnos = data;
            
            if ($scope.info != null)
                $scope.selectedAnoCivil = $scope.devAnoLista($scope.info.Fk_Ano);
            else {
                if ($scope.infoAnos.length > 0)
                    $scope.selectedAnoCivil = $scope.infoAnos[$scope.infoAnos.length - 1];
            }

            if ($scope.selectedAnoCivil!=null)
                $('#botaoAnoCivil').html($scope.selectedAnoCivil.Ano);
        };


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

        configuracaoFactory.getAnos().success(getSuccessCallback).error(errorCallback);
    };

    $scope.getEstadoAnoCivil = function () {
        if ($scope.infoAnos == null)
            return "";
        if ($scope.selectedAnoCivil == null)
        {
            return "";
        }
            

        if ($scope.selectedAnoCivil.Bloqueado == true)
            return "(Bloqueado)";

        if ($scope.selectedAnoCivil.Bloqueado == false)
            return "(Ativo)"

        return "";
    };

    $scope.getEstadoAnoCivilBotao = function () {
        if ($scope.infoAnos == null)
            return "";
        if ($scope.selectedAnoCivil == null) {
            return "";
        }


        if ($scope.selectedAnoCivil.Bloqueado == true)
            return "Ativar";
        if ($scope.selectedAnoCivil.Bloqueado == false)
            return "Bloquear ano civil";
        
        return "";
    };

    $scope.selAno = function (info) {
        $scope.selectedAnoCivil = info;
    };

    $scope.selAnoLetivo = function (info) {
        $scope.selectedAnoLetivo = info;
    };

    $scope.encerrarAtivarAno = function (infoAno) {
        
        if (infoAno == null)
            return;
        
        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            //infoAno.Bloqueado = true;
            $scope.carregarEscola(true);
        };

        var successCallbackAtivar = function (data, status, headers, config) {
            notificationFactory.success(data);
            //infoAno.Bloqueado = false;
            $scope.carregarEscola(true);
        };


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

        if ($scope.selectedAnoCivil.Bloqueado == true)
            configuracaoFactory.ativarAno(infoAno).success(successCallbackAtivar).error(errorCallback);
        else
            configuracaoFactory.encerrarAno(infoAno).success(successCallback).error(errorCallback);
    };

    $scope.novoAno = function () {
        $scope.estaAcriaAno = false;
        var elem = {
            Pk_Ano:0,
            Ano : 0,
            Bloqueado: true
        };

        var successCallback = function (data, status, headers, config) {
            notificationFactory.success(data);
            $scope.carregarEscola(true);
            $scope.estaAcriaAno = false;
        };


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

        if ($scope.selectedAnoCivil != null)
            elem.Fk_Ano = $scope.selectedAnoCivil.Pk_Ano;

        $scope.estaAcriaAno = true;
        configuracaoFactory.addAno(elem).success(successCallback).error(errorCallback);
    };

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


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

        configuracaoFactory.getAnoSel().success(getSuccessCallback).error(errorCallback);
    };

    $scope.devAnoLetivoLista = function (id) {
        var ano = null;

        for (i = 0; i < $scope.infoAnosLetivos.length; i++) {

            if ($scope.infoAnosLetivos[i].AnoLetivo == id) {
                ano = $scope.infoAnosLetivos[i];
                break;
            }
        }

        return ano;
    };

    $scope.carregarAnosLetivos = function () {
        $scope.infoAnosLetivos = [];
        var data = new Date();
        var ano=data.getFullYear();
        for (i = 2015; i <= ano; i++) {
            var r = { AnoLetivo: i, Desc: i + "/" + (i + 1) };
            $scope.infoAnosLetivos.push(r);
        }
                
        if ($scope.info != null)
            $scope.selectedAnoLetivo = $scope.devAnoLetivoLista($scope.info.AnoLetivo);
        else {
            if ($scope.infoAnosLetivos.length > 0)
                $scope.selectedAnoLetivo = $scope.infoAnosLetivos[$scope.infoAnosLetivos.length - 1];
        }
     
    };

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

});