(function () {
    "use strict";

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

    function factory($http, $q) {
         
        var _get = function (numero) {
            var deferred = $q.defer();
            var args = { 'numero': numero }
            $http.post('/compra/get', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getAll = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'chaves': filtro.chaves,
                'numero': filtro.numero,
                'filialOrigem': filtro.filialOrigem,
                'terceiro': filtro.terceiro,
                'emissaoDe': filtro.emissao.de,
                'emissaoAte': filtro.emissao.ate,
                'valorTotalDe': filtro.valorTotal.de,
                'valorTotalAte': filtro.valorTotal.ate,
                'skip': filtro.skip,
                'take': filtro.take
            }
            $http.post('/compra/getall', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _count = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'chaves': filtro.chaves,
                'numero': filtro.numero,
                'filialOrigem': filtro.filialOrigem,
                'terceiro': filtro.terceiro,
                'emissaoDe': filtro.emissao.de,
                'emissaoAte': filtro.emissao.ate,
                'valorTotalDe': filtro.valorTotal.de,
                'valorTotalAte': filtro.valorTotal.ate
            }
            $http.post('/compra/count', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getAllPendente = function (codigoTerceiro, numero) {
            var deferred = $q.defer();
            var args = {
                codigoTerceiro: codigoTerceiro,
                numero: numero
            };
            $http.post('/compra/getallpendente', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _getAllFornecedorPendente = function () {
            var deferred = $q.defer();
            $http.post('/compra/getallfornecedorpendente')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        return {
            get: _get,
            getAll: _getAll,
            count: _count,
            getAllPendente: _getAllPendente,
            getAllFornecedorPendente: _getAllFornecedorPendente
        };
    }

})();