>(function () { > 'use strict'; > > var app = angular.module('sysMgrApp'); > > app.factory('invoicesService', ['$http', '$q', function($http, $q) { > > var deferredMeta = null; > > var invokeCallNumber = 0; > // Implementation > var getMetaData = function () { > > if (deferredMeta) { > return deferredMeta.promise; > } > > deferredMeta = $q.defer(); > > if (service.metaData) > deferredMeta.resolve(service.metaData); > else { > > $http.get('/api/invoices/metadata') > .success(function (data) { > invokeCallNumber++; > window.console && console.log('Calling http service ' + invokeCallNumber + ' time...') > service.metaData = data; > deferredMeta.resolve(data); > }) > .error(function (data, status, header, config) { > > deferredMeta.reject(status); > }); > } > > return deferredMeta.promise; > }; > > var getInvoices = function (queryRequest) { > var deferred = $q.defer(); > $http.get('/api/invoices', { params: queryRequest }) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var getAccountInvoices = function (queryRequest) { > var deferred = $q.defer(); > $http.get('/api/invoices/getAccountInvoices', { params: queryRequest }) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var getNonFinalizedInvoices = function(queryRequest) { > var deferred = $q.defer(); > $http.get('/api/invoices/getInvoicesToApplyFees', { params: queryRequest }) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var processPayments = function (transactionObject) { > var deferred = $q.defer(); > $http.post('/api/invoices/processPayments', transactionObject) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var getAccountInvoices = function (queryRequest) { > var deferred = $q.defer(); > $http.get('/api/invoices/getAccountInvoices', { params: queryRequest }) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var getInvoicesToBePaid = function (queryRequest) { > var deferred = $q.defer(); > $http.get('/api/invoices/getInvoicesToBePaid', { params: queryRequest }) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var getInvoice = function (id) { > var deferred = $q.defer(); > $http.get('/api/invoices/' + id) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var createInvoice = function (invoice) { > var deferred = $q.defer(); > $http.post('/api/invoices', invoice) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > var saveInvoice = function (invoice) { > var deferred = $q.defer(); > $http.put('/api/invoices', invoice) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(data, status); > }); > return deferred.promise; > }; > > var deleteInvoice = function (invoiceNo) { > var deferred = $q.defer(); > $http.delete('/api/invoices/' + invoiceNo) > .success(function (data) { > deferred.resolve(data); > }) > .error(function (data, status, header, config) { > deferred.reject(status); > }); > return deferred.promise; > }; > > // Interface > var service = { > metaData: null, > getMetaData: getMetaData, > getInvoices: getInvoices, > getAccountInvoices: getAccountInvoices, > getInvoicesToBePaid: getInvoicesToBePaid, > getInvoice: getInvoice, > createInvoice: createInvoice, > saveInvoice: saveInvoice, > deleteInvoice: deleteInvoice, > processPayments: processPayments > }; > > return service; > }]); >})(); >>