(function(window)
{
var Gitana = window.Gitana;
Gitana.InteractionUser = Gitana.AbstractReportableWarehouseObject.extend(
/** @lends Gitana.InteractionUser.prototype */
{
/**
* @constructs
* @augments Gitana.AbstractReportableWarehouseObject
*
* @class InteractionUser
*
* @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.InteractionUser"; };
this.interactionObjectTypeId = "user";
},
/**
* @OVERRIDE
*/
getType: function()
{
return Gitana.TypedIDConstants.TYPE_INTERACTION_SESSION;
},
/**
* @OVERRIDE
*/
getUri: function()
{
return "/warehouses/" + this.getWarehouseId() + "/users/" + this.getId();
},
/**
* @override
*/
clone: function()
{
return this.getFactory().interactionUser(this.getWarehouse(), this);
},
getKey: function()
{
return this.get("key");
},
//////////////////////////////////////////////////////////////////////////////////////////
//
// INTERACTIONS
//
//////////////////////////////////////////////////////////////////////////////////////////
/**
* Lists the interactions.
*
* @param pagination
*
* @chained interaction map
*/
listInteractions: function(pagination)
{
return this.queryInteractions(null, pagination);
},
/**
* Queries for interactions.
*
* @chained interaction map
*
* @param {Object} query
* @param [Object] pagination pagination (optional)
*/
queryInteractions: function(query, pagination)
{
if (!query)
{
query = {};
}
query["interactionUserId"] = this.getId();
return this.subchain(this.getWarehouse()).queryInteractions(query, pagination);
}
});
})(window);