Skip to content

Commit

Permalink
added support for Payments, however this is still in progress.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jordan Walsh committed Feb 16, 2017
1 parent 17ed660 commit 12a6070
Show file tree
Hide file tree
Showing 14 changed files with 656 additions and 562 deletions.
70 changes: 67 additions & 3 deletions lib/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,56 @@ _.extend(Application.prototype, {
});
return deferred.promise;
},
delete: function(path, options, callback) {
var self = this;
options = options || {};

var deferred, promise;
deferred = p.defer();
promise = deferred.promise;

deleteResource();

return promise;

function deleteResource() {
var endPointUrl = options.api === 'payroll' ? self.options.payrollAPIEndPointUrl : self.options.coreAPIEndPointUrl;
var url = endPointUrl + path;

self.oa.delete(url, self.options.accessToken, self.options.accessSecret, function(err, data, res) {
if (options.stream && !err) {
// Already done
return deferred.resolve();
}
if (err && data && data.indexOf('oauth_problem') >= 0) {
var dataParts = qs.parse(data);
var errObj = { statusCode: err.statusCode, data: dataParts };
deferred.reject(errObj);
callback && callback(errObj);
return;
}

self.xml2js(data)
.then(function(obj) {
var ret = { response: obj.Response, res: res };
if (err) {
var errObj = { statusCode: err.statusCode, exception: obj.ApiException };
deferred.reject(errObj);
callback && callback(errObj);
return;
}

done();

function done() {
deferred.resolve(ret);
callback && callback(null, obj, res);
}
})
}, { stream: options.stream });

}
},
get: function(path, options, callback) {
var self = this;
options = options || {};
Expand Down Expand Up @@ -169,11 +219,18 @@ _.extend(Application.prototype, {
})
}
}

/*
Added for where clause support on the GET requests.
*/
if (options.where) {
params['Where'] = options.where;
}
if (!_.isEmpty(params))

if (!_.isEmpty(params)) {
url += '?' + querystring.stringify(params);
}

self.oa.get(url, self.options.accessToken, self.options.accessSecret, function(err, data, res) {
if (options.stream && !err) {
// Already done
Expand Down Expand Up @@ -272,12 +329,18 @@ _.extend(Application.prototype, {
entities.push(entity);
}
},
deleteEntities: function(path, options) {
return this.delete(path, options)
.then(function(ret) {
if (ret && ret.response)
return ret;
})

},
getEntities: function(path, options) {
var self = this;
var clonedOptions = _.clone(options || {});


var callerPagerCallback;
if (clonedOptions.pager) {
callerPagerCallback = clonedOptions.pager.callback;
Expand Down Expand Up @@ -323,7 +386,8 @@ _.extend(Application.prototype, {
},
js2xml: function(obj, rootName) {
var builder = new xml2js.Builder({ rootName: rootName, headless: true });
return builder.buildObject(obj);
var obj = builder.buildObject(obj);
return obj;
}
})

Expand Down
39 changes: 19 additions & 20 deletions lib/core.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
var _ = require('lodash')
, logger = require('./logger')
var _ = require('lodash'),
logger = require('./logger')

var HELPERS = {
organisations: { file: 'organisations'},
contacts: { file: 'contacts'},
items: { file: 'items'},
bankTransactions: { file: 'banktransactions'},
bankTransfers: { file: 'banktransfers'},
journals: { file: 'journals'},
attachments: { file: 'attachments'},
accounts: { file: 'accounts'},
invoices: { file: 'invoices'},
trackingCategories: { file: 'trackingcategories'},
users: { file: 'users'}
organisations: { file: 'organisations' },
contacts: { file: 'contacts' },
items: { file: 'items' },
bankTransactions: { file: 'banktransactions' },
bankTransfers: { file: 'banktransfers' },
journals: { file: 'journals' },
attachments: { file: 'attachments' },
accounts: { file: 'accounts' },
invoices: { file: 'invoices' },
trackingCategories: { file: 'trackingcategories' },
users: { file: 'users' },
payments: { file: 'payments' }
};

function Core(application, options)
{
function Core(application, options) {
var self = this;
logger.debug('Core::constructor');
this._application = application;

_.each(HELPERS, function(entityHelper, id)
{
var instance = new (require('./entity_helpers/' + entityHelper.file))(application);
Object.defineProperty(self, id, {
_.each(HELPERS, function(entityHelper, id) {
var instance = new(require('./entity_helpers/' + entityHelper.file))(application);
Object.defineProperty(self, id, {
get: function() { return instance }
})
})
Expand All @@ -41,4 +40,4 @@ _.extend(Core.prototype, {

})

module.exports = Core;
module.exports = Core;
100 changes: 44 additions & 56 deletions lib/entities/entity.js
Original file line number Diff line number Diff line change
@@ -1,72 +1,60 @@
var logger = require('../logger')
, extend = require('../misc/extend')
, _ = require('lodash')
, q = require('q')
, util = require('util')
, qs = require('querystring')
, SchemaObject = require('../schemaobject/schemaobject')
, dateformat = require('dateformat')
var logger = require('../logger'),
extend = require('../misc/extend'),
_ = require('lodash'),
q = require('q'),
util = require('util'),
qs = require('querystring'),
SchemaObject = require('../schemaobject/schemaobject'),
dateformat = require('dateformat')

module.exports.SchemaObject = SchemaObject;
module.exports.dateToString = function(value)
{
return value && dateformat(value,'isoDateTime');
module.exports.dateToString = function(value) {
return value && dateformat(value, 'isoDateTime');
}
module.exports.extend = function(schema, classProps, staticProps)
{
module.exports.extend = function(schema, classProps, staticProps) {
schema.extend = extend;
var Entity = schema.extend(
{
constructor: function (application,data, options)
{
this._application = application;
options = options || {};
this.options = options;
schema.call(this, data);
wrap(this);
this._schemaToObject = this.toObject;
this.toObject = this._toObject;
_.isFunction(this.initialize) && this.initialize(options);
},
_toObject: function (options)
{
return this._schemaToObject(options);
},
makeError: function (code,message, data)
{
return { code: code, data: data, message: message };
},
changes: function (options)
{
return _.clone(this.tracking._changes);
},
fromXmlObj:function(obj)
{
return _.extend(this, obj);
},
extractArray: function(src, dest)
{
var items = this.application.asArray(src);
_.each(items, function (item)
{
dest.push(item);
})
var Entity = schema.extend({
constructor: function(application, data, options) {
this._application = application;
options = options || {};
this.options = options;
schema.call(this, data);
wrap(this);
this._schemaToObject = this.toObject;
this.toObject = this._toObject;
_.isFunction(this.initialize) && this.initialize(options);
},
_toObject: function(options) {
return this._schemaToObject(options);
},
makeError: function(code, message, data) {
return { code: code, data: data, message: message };
},
changes: function(options) {
return _.clone(this.tracking._changes);
},
fromXmlObj: function(obj) {
return _.extend(this, obj);
},
extractArray: function(src, dest) {
var items = this.application.asArray(src);
_.each(items, function(item) {
dest.push(item);
})

}
})
}
})

return Entity.extend(_.extend(classProps, { Entity: Entity }), staticProps);

}

function wrap(that)
{
function wrap(that) {
Object.defineProperties(that, {
application: {
get: function ()
{
get: function() {
return that._application;
}
}
})
}
}
Loading

0 comments on commit 12a6070

Please sign in to comment.