(function () {
    "use strict";

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

    function factory($http, $q) {

        var _getToken = function () {
            var deferred = $q.defer();
            $http.post('/fidelidade/gettoken')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _getInfo = function (token, cpf) {
            var deferred = $q.defer();
            var args = { token: token, cpf: cpf };
            $http.post('/fidelidade/getinfo', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _setResgate = function (token, cpf, pedido, valorResgate, valorVenda) {
            var deferred = $q.defer();
            var args = { token: token, cpf: cpf, pedido: pedido, valorResgate: valorResgate, valorVenda: valorVenda };
            $http.post('/fidelidade/setresgate', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _setCreditoTroco = function (token, cpf, pedido, valorTroco) {
            var deferred = $q.defer();
            var args = { token: token, cpf: cpf, pedido: pedido, valorTroco: valorTroco };
            $http.post('/fidelidade/setcreditotroco', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _setCredito = function (token, cpf, pedido, valorTroco) {
            var deferred = $q.defer();
            var args = { token: token, cpf: cpf, pedido: pedido, valorTroco: valorTroco, mensagem: "Parabéns, você acaba de receber  " + valorTroco + " reais em créditos referentes a troca da venda de número " + pedido };
            $http.post('/fidelidade/setcredito', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };



        return {
            getToken: _getToken,
            getInfo: _getInfo,
            setResgate: _setResgate,
            setCreditoTroco: _setCreditoTroco,
            setCredito: _setCredito
        };
    }

})();