(function () {
    "use strict";

    angular.module('pos').factory('valeProdutoService', factory);
    factory.$inject = ['$http', '$q'];

    function factory($http, $q) {
        var service = {};

        //service.getAll = function (inicio, fim, numeroCartao) {
        //    var deferred = $q.defer();
        //    var args = {
        //        'inicio': inicio,
        //        'fim': fim,
        //        'codigoCartao': numeroCartao,
        //    };

        //    $http.post('/valeProduto/ConsultarCartoes', args)
        //        .success(function (data) {
        //            deferred.resolve(data);
        //        })
        //        .error(function (data, status, headers, config) {
        //            deferred.reject(data);
        //        });

        //    return deferred.promise;
        //};

        service.getAll = function (inicio, fim, numeroCartao, chaveCartao, numeroCliente, nomeCliente, aberto) {
            var deferred = $q.defer();
            var args = {
                'inicio': inicio,
                'fim': fim,
                'codigoCartao': numeroCartao,
                'chaveCartao': chaveCartao,
                'numeroCliente': numeroCliente,
                'nomeCliente': nomeCliente,
                'aberto': aberto,
            };

            $http.post('/valeProduto/ConsultarCartoes', args)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, headers, config) {
                    deferred.reject(data);
                });

            return deferred.promise;
        };

        service.getAllWithFilter = function (filter) {
            var deferred = $q.defer();
            var args = {
                'inicio': (filter.emissao && filter.emissao.de ? filter.emissao.de : null),
                'fim': (filter.emissao && filter.emissao.ate ? filter.emissao.ate : null),
                'codigoCartao': (filter.numero ? filter.numero : null),
                'chaveCartao': (filter.chave ? filter.chave : null),
                'numeroCliente': (filter.cliente && filter.cliente.codigo ? filter.cliente.codigo : null),
                'nomeCliente': (filter.cliente && filter.cliente.nome ? filter.cliente.nome : null),
                'aberto': (filter.aberto ? filter.aberto : null),
            };

            $http.post('/valeProduto/ConsultarCartoes', args)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, headers, config) {
                    deferred.reject(data);
                });

            return deferred.promise;
        };


        service.verificarComunicacao = function () {
            var deferred = $q.defer();

            $http.post('/valeProduto/VerificarComunicacao')
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, headers, config) {
                    deferred.reject(data);
                });

            return deferred.promise;
        };

        service.consultarCartao = function (codigoCartao) {
            var deferred = $q.defer();
            var args = {
                'codigoCartao': codigoCartao
            };

            $http.post('/valeProduto/ConsultarCartao', args)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, headers, config) {
                    deferred.reject(data);
                });

            return deferred.promise;
        };


        return service
    }

})();