Name
sn_appclient.ProductInfoHelper
Description
No description available
Script
var ProductInfoHelper = Class.create();
ProductInfoHelper.prototype = {
initialize: function() {
this.pluginInfoHelper = new PluginInfoHelper();
this.productsData = new ProductsData();
this.productsDao = new ProductsDao();
},
_getProductsFromPlugins: function(searchExpression, filterParams) {
var map = {};
var products = [];
var plugins = this.pluginInfoHelper.getAllMatchedPluginsByProductName(searchExpression, filterParams);
plugins.forEach(function(plugin) {
if (!map[plugin.lineage_id]) {
map[plugin.lineage_id] = {
productId: plugin.lineage_id,
productName: plugin.lineage_name,
source: 'platform'
};
products.push(map[plugin.lineage_id]);
}
});
return products;
},
_getProductsFromAvailableApps: function(searchExpression, filterParams, apiUtil) {
return this.productsDao.getProducts(searchExpression, filterParams, apiUtil);
},
getProducts: function(apiUtil) {
var params = apiUtil.getRequestParams();
var searchExpression = params.queryParams[Constants.SEARCH_EXPRESSION];
var filterParams = apiUtil.getRequestBody();
var pluginProducts = this._getProductsFromPlugins(searchExpression, filterParams);
var appProducts = this._getProductsFromAvailableApps(searchExpression, filterParams, apiUtil);
var products = CommonUtils.getUnionOfProducts(pluginProducts, appProducts);
products.sort(this._sortProductsByName);
var response = CommonUtils.getResultByParams(products, params.queryParams);
apiUtil.addTotalCountHeader(products.length);
return response;
},
getProduct: function(params) {
var productId = params.pathParams[Constants.PRODUCT_ID];
var source = CommonUtils.getProductSource(params.queryParams);
return this._getProductById(productId, source);
},
_getProductById: function(productId, source) {
var productScheduleDetails = this._getProductScheduleDetailsById(productId);
var tracker = new ProgressTracker().getInProgressInstallationByAppId(productId);
if (source == Constants.PLATFORM) {
var plugins = this.pluginInfoHelper.getAllPluginsByProductId(productId);
return {
productId: productId,
install_tracker_id: tracker.id,
productName: this._getProductNameByPlugins(plugins),
plugins: plugins,
productScheduleDetails: productScheduleDetails
};
} else {
var apps = this.getAllAppsByProductId(productId);
return {
productId: productId,
install_tracker_id: tracker.id,
productName: this._getProductNameByApps(apps, productId),
apps: apps,
productScheduleDetails: productScheduleDetails
};
}
},
getAllAppsByProductId: function(productId) {
return this.productsDao.getAllAppsByProductId(productId);
},
_getProductNameByApps: function(apps, productId) {
var app = apps[0] || {};
var productFamilies = app.products || [];
for (var idx in productFamilies) {
if (productFamilies[idx].productId == productId)
return productFamilies[idx].productName;
}
},
_getProductNameByPlugins: function(plugins) {
return plugins[0] && plugins[0].lineage_name;
},
_sortProductsByName: function(x, y) {
var a = x.productName.toLowerCase();
var b = y.productName.toLowerCase();
if (a < b)
return -1;
else if (a > b)
return 1;
return 0;
},
_getProductScheduleDetailsById: function(productId) {
var allSchedules = new ScheduledInstallService().fetchAllActiveScheduledItems();
var productScheduleDetails = {};
if (allSchedules.hasOwnProperty(productId)) {
var productScheduleId = allSchedules[productId].schedule_id;
for (var key in allSchedules) {
if (allSchedules[key].schedule_id == productScheduleId) {
productScheduleDetails[key] = allSchedules[key];
}
}
}
return productScheduleDetails;
},
type: 'ProductInfoHelper'
};
Sys ID
4bbefec577e21110c918256a5b5a99e2