(function () {
    "use strict";

    angular.module('pos').controller('relatorioValePresenteController', controller);
    controller.$inject = ['$scope', 'valeProdutoService'];

    function controller($scope, valeProdutoService) {
        $scope.state = {
            filtro: { ativo: false, },
            data: [],
            carregando: false,
            modal: false,
            consultaCartao: {},
            orderByField: '-Emissao', /* Inicialmente a ordenação é por Emissão (Crescente) */
        };

        $scope.refresh = function () {
            $scope.state.carregando = true;

            if ($scope.state.filtro.emissao.de) {
                var emissaoDe = $scope.state.filtro.emissao.de;
                var emissaoDeNoTime = getDateWithoutTime(emissaoDe);
                $scope.state.filtro.emissao.de = emissaoDeNoTime;
            }

            if ($scope.state.filtro.emissao.ate) {
                var emissaoAte = $scope.state.filtro.emissao.ate;
                var emissaoAteNoTime = getDateWithoutTime(emissaoAte);
                $scope.state.filtro.emissao.ate = emissaoAteNoTime;
            }

            valeProdutoService.getAllWithFilter($scope.state.filtro).then(
                function (response) {
                    $scope.state.carregando = false;
                    if (response.Status < 0) {
                        $scope.$parent.toastr.error(response.Message, 'Serviço');
                        return;
                    }
                    $scope.state.data = response.Data;
                }, function (error) {
                    $scope.state.carregando = false;
                    $scope.$parent.toastr.error(error, 'Carregando gráfico');
                });
        }
        $scope.toogleOrderBy = function (field) {
            if ($scope.state.orderByField == field) {
                $scope.state.orderByField = '-' + field;
            }
            else {
                $scope.state.orderByField = field;
            }
        }
        $scope.toggleFilter = function () {
            $scope.state.filtro.ativo = !$scope.state.filtro.ativo;
        }
        $scope.toggleModal = function () {
            $scope.state.modal = !$scope.state.modal;
        }

        $scope.setItem = function (item) {
            $scope.state.consultaCartao = item;
            $scope.toggleModal()
        }

        var initialize = function () {
            $scope.state.filtro.emissao = {}
            $scope.state.filtro.emissao.de = new Date((new Date()).setHours(0, 0, 0, 0));
            $scope.refresh();
        }

        function getDateWithoutTime(date) {
            var dateObj = new Date(date);
            var dateWithoutTime = dateObj.toLocaleDateString();

            return dateWithoutTime;
        }

        initialize();

    }

})();