Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to avoid calling this method twice?
Message
 
 
General information
Forum:
Javascript
Category:
Other
Miscellaneous
Thread ID:
01611738
Message ID:
01611908
Views:
28
Viv,

I can not make it to work - somehow if I try to define it this way (var service first and then implementation, then I get function getInvoices undefined).

Here is my current code:
(function () {
    'use strict';
    
    var app = angular.module('sysMgrApp');

    app.factory('invoicesService', ['$http', '$q', function($http, $q) {

        // 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;

        var deferred = null;
        // Implementation
        var getMetaData = function () {
            
            if (deferred !== undefined) {
                return deferred.promise;
            }
            var deferred = $q.defer();

            if (service.metaData)
                deferred.resolve(service.metaData);
            else {

                $http.get('/api/invoices/metadata')
                    .success(function (data) {

                        service.metaData = data;
                        deferred.resolve(data);
                    })
                    .error(function (data, status, header, config) {

                        deferred.reject(status);
                    });
            }

            return deferred.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 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;
        };     
              
    }]);
})();
I can try moving functions declaration to the top of the code (as I've done yesterday to fix this problem) but I don't see why it has to be this way.

Do you see what is wrong here? Is it because we're on fairly old AngularJs version?
If it's not broken, fix it until it is.


My Blog
Previous
Reply
Map
View

Click here to load this message in the networking platform