(function () {
    'use strict';

    angular
        .module('app')
        .controller('PaginacaoController', PaginacaoController);

    PaginacaoController.$inject = ['$scope', 'PaginacaoService'];

    function PaginacaoController($scope, PaginacaoService) {
        // Variáveis
        $scope.Take = 10;
        PaginacaoService.Skip = $scope.Skip = 0;
        $scope.HabilitaPaginaAnterior = false;
        $scope.HabilitaProximaPagina = true;
        $scope.Quantidade = 10;

        PaginacaoService.Paginar = _Paginar;
        PaginacaoService.AtualizarRodapePaginacao = AtualizarRodapePaginacao;

        // Functions
        $scope.AlterarQuantidadeExibida = AlterarQuantidadeExibida;
        $scope.ProximaPagina = ProximaPagina;
        $scope.PaginaAnterior = PaginaAnterior;

        _Paginar(PaginacaoService.successCallBack);
        RegistrarInputs();

        function AlterarQuantidadeExibida(take) {
            $scope.Take = take;
            PaginacaoService.Skip = $scope.Skip = 0;
            _Paginar(PaginacaoService.filterSuccessCallBack);
        };

        function ProximaPagina() {
            if (($scope.Skip + $scope.Take) < $scope.Total) {
                PaginacaoService.Skip = $scope.Skip = $scope.Skip + $scope.Take;
                _Paginar(PaginacaoService.filterSuccessCallBack);
            }
        };

        function PaginaAnterior() {
            if ($scope.Skip > 0) {
                PaginacaoService.Skip = $scope.Skip = $scope.Skip - $scope.Take;
                _Paginar(PaginacaoService.filterSuccessCallBack);
            }
        };

        function _Paginar(callback) {
            try {
                PaginacaoService.Consultar($scope.Take, $scope.Skip, callback);
            }
            catch (e) {
            }
        };

        function AtualizarRodapePaginacao() {
            $scope.Total = PaginacaoService.Total;
            $scope.Skip = PaginacaoService.Skip;
            $scope.Quantidade = ($scope.Take + $scope.Skip) < $scope.Total ? ($scope.Take + $scope.Skip) : $scope.Total;
            $scope.HabilitaProximaPagina = $scope.Quantidade < $scope.Total;
            $scope.HabilitaPaginaAnterior = $scope.Skip > 0;
            if ($scope.Total == 0) $(".loading-div").fadeOut();
        }
    }
})();