(function(window) { var Gitana = window.Gitana; Gitana.InteractionReport = Gitana.AbstractWarehouseObject.extend( /** @lends Gitana.InteractionReport.prototype */ { /** * @constructs * @augments Gitana.AbstractWarehouseObject * * @class InteractionReport * * @param {Gitana.Warehouse} warehouse * @param [Object] object json object (if no callback required for populating) */ constructor: function(warehouse, object) { this.base(warehouse, object); this.objectType = function() { return "Gitana.InteractionReport"; }; }, /** * @OVERRIDE */ getType: function() { return Gitana.TypedIDConstants.TYPE_INTERACTION_REPORT; }, /** * @OVERRIDE */ getUri: function() { return "/warehouses/" + this.getWarehouseId() + "/reports/" + this.getId(); }, /** * @override */ clone: function() { return this.getFactory().interactionReport(this.getWarehouse(), this); }, getObjectTypeId: function() { return this.get("objectTypeId"); }, getObjectId: function() { return this.get("objectId"); }, getKey: function() { return this.get("key"); }, ////////////////////////////////////////////////////////////////////////////////////////// // // REPORT ENTRIES // ////////////////////////////////////////////////////////////////////////////////////////// /** * Lists the interaction report entries. * * @param pagination * * @chained interaction report entry map */ listEntries: function(pagination) { var self = this; var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } var chainable = this.getFactory().interactionReportEntryMap(self.getWarehouse()); return this.chainGet(chainable, this.getUri() + "/entries", params); }, /** * Reads an interaction report entry. * * @param interactionReportEntryId * * @chained interaction report entry */ readEntry: function(interactionReportEntryId) { var self = this; var chainable = this.getFactory().interactionReportEntry(self.getWarehouse()); return this.chainGet(chainable, this.getUri() + "/entries/" + interactionReportEntryId); }, /** * Queries for interaction report entries. * * @chained interaction map * * @param {Object} query * @param [Object] pagination pagination (optional) */ queryEntries: function(query, pagination) { var self = this; var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } var uriFunction = function() { return self.getUri() + "/entries/query"; }; var chainable = this.getFactory().interactionReportEntryMap(self.getWarehouse()); return this.chainPost(chainable, uriFunction, params, query); } }); })(window);