Name
sn_install_base.InstallBaseItemAPIDaoSNC
Description
No description available
Script
var InstallBaseItemAPIDaoSNC = Class.create();
InstallBaseItemAPIDaoSNC.prototype = {
initialize: function() {
this.apiHelper = new sn_install_base.InstallBaseItemAPIHelper();
},
/*
* Fetch the install base item by sysId
*
* @param id - SysId of the install base item
* @param ibTableName - SysId of the install base item
* @param restrictedAttributes - restricted fields.
*
*
* @return response object
* Incase of success:
* {
* "status" : "SUCCESS",
* "item" : {install base item obj1},
* "hasChildren" : "<BOOLEAN>",
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseItemByID: function(id, ibTableName, restrictedAttributes, paginationDetails) {
//get glide record
var response = {};
var parent = this._fetchRecord(ibTableName, id, restrictedAttributes);
response[InstallBaseItemAPIConstants.SYSPARM_DEPTH] = '1';
response.item = parent.item;
response.hasChildren = '' + this.apiHelper.installBaseItemHasChildren(id);
if (response.hasChildren == "true") {
response[InstallBaseItemAPIConstants.CHILD_INSTALL_BASE_ITEMS] = this._getInstallBaseChildForHiearchy(id, ibTableName, restrictedAttributes, 2, paginationDetails);
}
return response;
},
_getInstallBaseChildForHiearchy: function(parentSysId, ibTableName, restrictedAttributes, curDept, paginationDetails) {
if (curDept - 1 >= paginationDetails.depth)
return;
//get glide record
var installBaseGr = new GlideRecord(ibTableName);
installBaseGr.addQuery('parent', parentSysId);
//fetch results
var resp = {};
var childRecs = this._fetchMultipleRecords(installBaseGr, restrictedAttributes, null, paginationDetails, InstallBaseItemAPIConstants.CHILD_INSTALL_BASE_ITEMS_ARR);
for (var cur = 0; !gs.nil(childRecs.items) && cur < childRecs.items.length; cur++) {
var child = childRecs.items[cur];
var hasChildren = '' + this.apiHelper.installBaseItemHasChildren(child.sys_id);
child["hasChildren"] = hasChildren;
if (hasChildren == "true")
child[InstallBaseItemAPIConstants.CHILD_INSTALL_BASE_ITEMS_ARR] = this._getInstallBaseChildForHiearchy(child.sys_id, ibTableName, restrictedAttributes, curDept + 1, paginationDetails);
}
resp[InstallBaseItemAPIConstants.SYSPARM_DEPTH] = curDept.toString();
resp.items = childRecs.items;
return resp;
},
/*
* Fetch all the install base item for the given pagination window.
*
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{install base item obj1},{nstall base item obj2}]"
* }
*
* incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseItems: function(queryParams, restrictedAttributes, paginationDetails, nonQueryingParams) {
var installBaseGr = new GlideRecord(this._getInstallBaseTableName(queryParams));
if (!gs.nil(queryParams) && !gs.nil(queryParams[InstallBaseItemAPIConstants.RELATED_PARTY_ID])) {
var relatedParty = queryParams[InstallBaseItemAPIConstants.RELATED_PARTY_ID][0],
responsibility = queryParams[InstallBaseItemAPIConstants.RESPONSIBILITY];
if (!gs.nil(responsibility)) {
responsibility = responsibility[0];
}
var installBaseUtilSnc = new sn_install_base.InstallBaseUtil(),
params = {};
params.responsibility = responsibility;
var resultantSysIds = installBaseUtilSnc.getAllEntities(relatedParty, params);
installBaseGr.addQuery('sys_id', 'IN', resultantSysIds);
}
return this._fetchMultipleRecordsWithLimitParams(installBaseGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.INSTALL_BASE_ITEMS_ARR, nonQueryingParams);
},
/*
* Fetch all the child install base items for the given parent in a pagination window.
*
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{install base item obj1},{nstall base item obj2}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseChildItems: function(parentSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
var parentGr = this.apiHelper.getRecord(global.CSMBaseConstants.INSTALL_BASE_ITEM, parentSysId);
if (!parentGr)
return this.apiHelper.resourceNotFound();
var childGr = new GlideRecord(this._getInstallBaseTableName(queryParams));
childGr.addQuery((gs.nil(parentGr.root) ? 'root' : 'parent'), parentSysId);
//fetch results
return this._fetchMultipleRecords(childGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.CHILD_INSTALL_BASE_ITEMS_ARR);
},
/*
* Fetch all the sold products associated with the given install base item in a pagination window.
*
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{sold product obj1},{sold product obj2}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseSoldProducts: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var tableName = this._getExtendedTableName(queryParams, global.CSMBaseConstants.SOLD_PRODUCT);
var productGr = new GlideRecord(tableName);
productGr.addJoinQuery(global.CSMBaseConstants.M2M_INSTALLED_PRODUCT).addCondition('install_base_item.sys_id', ibItemSysId);
//fetch results
return this._fetchMultipleRecords(productGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.SOLD_PRODUCTS_ARR);
},
/*
* Fetch all the entitlement associated with the given install base item in a pagination window.
*
* @param ibItemSysId - Install base item sysId.
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{entitlement obj1},{entitlement obj2}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseEntitlements: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var tableName = this._getExtendedTableName(queryParams, global.CSMBaseConstants.ENTITLEMENT_TABLE);
var entitlementGr = new GlideRecord(tableName);
entitlementGr.addQuery("install_base_item.sys_id", ibItemSysId);
//fetch results
return this._fetchMultipleRecords(entitlementGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.ENTITLEMENTS_ARR);
},
/*
* Fetch all the cases associated with the given install base item in a pagination window.
*
* @param ibItemSysId - Install base item sysId.
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{case object},{case object}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseCases: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var tableName = this._getExtendedTableName(queryParams, global.CSMBaseConstants.CASE_TABLE);
var caseGr = new GlideRecord(tableName);
caseGr.addJoinQuery(global.CSMBaseConstants.AFFECTED_INSTALL_BASE_TABLE).addCondition('install_base_item.sys_id', ibItemSysId);
return this._fetchMultipleRecords(caseGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.CASES_ARR);
},
/*
* Fetch all the contracts associated with the given install base item in a pagination window.
*
* @param ibItemSysId - Install base item sysId.
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{contract object},{contract object}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseContracts: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var tableName = this._getExtendedTableName(queryParams, global.CSMBaseConstants.CONTRACT_TABLE);
var contractGr = new GlideRecord(tableName);
contractGr.addJoinQuery(global.CSMBaseConstants.M2M_CONTRACT_SOLD_PRODUCT).addCondition('install_base.sys_id', ibItemSysId);
return this._fetchMultipleRecords(contractGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.CONTRACTS_ARR);
},
/*
* Fetch all the related parties associated with the given install base item in a pagination window.
*
* @param ibItemSysId - Install base item sysId.
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{related party object},{related party object}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseRelatedParties: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var tableName = this._getExtendedTableName(queryParams, global.CSMBaseConstants.INSTALL_BASE_RELATED_PARTY);
var relatedPartyGr = new GlideRecord(tableName);
relatedPartyGr.addQuery('install_base_item.sys_id', ibItemSysId);
return this._fetchMultipleRecords(relatedPartyGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.RELATED_PARTIES_ARR);
},
/*
* Fetch all the work orders associated with the given install base item in a pagination window.
*
* @param ibItemSysId - Install base item sysId.
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{work order object},{work order object}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getInstallBaseWorkOrders: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var tableName = this._getExtendedTableName(queryParams, InstallBaseItemAPIConstants.WO_TABLE);
var workOrderGr = new GlideRecord(tableName);
workOrderGr.addQuery('install_base_item.sys_id', ibItemSysId);
return this._fetchMultipleRecords(workOrderGr, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.WORK_ORDERS_ARR);
},
/*
* Fetch all the maintenance plans associated with the given install base item in a pagination window.
*
* @param ibItemSysId - Install base item sysId.
* @param queryParams - filter params and its values.
* @param restrictedAttributes - restricted fields
* @param paginationDetails - Object that contains {startFrom,pageSize,lastRecord}
*
* @return response object
* Incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{maintenance plan object},{maintenance plan object}]"
* }
*
* Incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
getMaintenancePlansForIB: function(ibItemSysId, queryParams, restrictedAttributes, paginationDetails) {
//check if the install base id is valid if not then throw resource not found error.
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, ibItemSysId))
return this.apiHelper.resourceNotFound();
var maintenacePlans = this.apiHelper.getMaintenancePlansForIB(ibItemSysId);
var tableName = this._getExtendedTableName(queryParams, global.CSMBaseConstants.WORK_PLAN_TABLE);
var maintenacePlansGR = new GlideRecord(tableName);
maintenacePlansGR.addQuery('sys_id', "IN", maintenacePlans);
return this._fetchMultipleRecords(maintenacePlansGR, restrictedAttributes, queryParams, paginationDetails, InstallBaseItemAPIConstants.MAINTENANCE_PLANS_ARR);
},
/*
* If parent is populated, check for the owners existance.
* If no owner fields exist, copy the parent's owner fields.
*/
_verifyOwnerFields: function(paramMap) {
var fields = new sn_install_base.InstallBaseUtil().getInstallBaseItemOwnerFields();
var exits = false;
for (var i = 0; i < fields.length; i++) {
if (!gs.nil(paramMap[fields[i]])) {
exits = true;
break;
}
}
if (!exits) {
var installBaseGr = new GlideRecord(global.CSMBaseConstants.INSTALL_BASE_ITEM);
installBaseGr.get(paramMap.parent);
var ownerFields = new sn_install_base.InstallBaseUtil().getInstallBaseItemOwner(installBaseGr);
for (var idx = 0; idx < ownerFields.length; idx++) {
paramMap[ownerFields[idx]] = installBaseGr[ownerFields[idx]];
}
}
},
/*
* function to create the install base item
*/
createInstallBaseItem: function(paramMap) {
gs.info('Create item called->' + JSON.stringify(paramMap));
var installBaseGr = null;
if (!gs.nil(paramMap.sys_class_name))
installBaseGr = new GlideRecord(paramMap.sys_class_name);
else
installBaseGr = new GlideRecord(global.CSMBaseConstants.INSTALL_BASE_ITEM);
if (!this.apiHelper.canCreate(installBaseGr)) {
return this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.CREATE);
}
installBaseGr.initialize();
installBaseGr.newRecord();
if (!gs.nil(paramMap.parent)) {
this._verifyOwnerFields(paramMap);
}
var fields = Object.keys(paramMap);
for (curField = 0; curField < fields.length; curField++) {
if(InstallBaseItemAPIConstants.IgnoreTableAttributes.PostAttributes.indexOf(fields[curField]) < 0)
installBaseGr.setValue(fields[curField], paramMap[fields[curField]]);
}
var sys_id = installBaseGr.insert();
var resp = {};
if (gs.nil(sys_id)) {
var msg = InstallBaseItemAPIConstants.API_MESSAGES.REQUEST_CANNOT_BE_PROCESSED;
return InstallBaseItemAPIHelper.getErrorObject(msg, msg);
}
/* if (installBaseGr.root)
resp["root"] = installBaseGr.root;*/
resp.status = InstallBaseItemAPIConstants.SUCCESS;
resp.item = this.apiHelper.getJSONFromGR(installBaseGr, InstallBaseItemAPIConstants.ExcludeTableAttributes.GetInstallBaseRestrictedAttributes());
return resp;
},
/*
* Fetch the record with selected fields for the given table and sysId.
*
* @param tableName - table name
* @param id - sysId of the gliderecord.
* @param restrictedAttributes - restricted fields.
*
* @return response object
* incase of success:
* {
* "status" : "SUCCESS",
* "item" : {object},
* }
*
* incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
_fetchRecord: function(tableName, id, restrictedAttributes) {
try {
var recordObj = {},
errorObj = null,
recordGr = new GlideRecord(tableName);
if (recordGr.get(id)) {
var internalGr = recordGr;
if (recordGr.getTableName() != recordGr.getValue('sys_class_name')) {
internalGr = new GlideRecord(recordGr.getValue('sys_class_name'));
internalGr.get(recordGr.getValue('sys_id'));
}
if (this.apiHelper.canRead(internalGr)) {
//invoke API
recordObj = this.apiHelper.getJSONFromGR(internalGr, restrictedAttributes);
} else {
errorObj = this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.READ);
}
} else {
errorObj = this.apiHelper.resourceNotFound();
}
} catch (e) {
gs.error('[InstallBaseItemAPIDaoSNC][Unexpected error] ' + e);
errorObj = InstallBaseItemAPIHelper.getErrorObject('Unexpected error' + e);
}
var resp = {};
if (!gs.nil(errorObj)) {
resp = errorObj;
} else {
resp.status = InstallBaseItemAPIConstants.SUCCESS;
resp.item = recordObj;
}
return resp;
},
/*
* fetch the records for the given table with query(filter) parameters.getContentType()
*
* @param tableName - table name
* @param queryParams - query parameters used to filter the glide record.
* @param restrictedAttributes - restricted fields.
*
* @return response object
* incase of success,
* {
* "status" : "SUCCESS",
* "start_from" : "<INT>",
* "page_size" : "<INT>",
* "has_more" : "<BOOLEAN>",
* "items" : "[{object1},{Object2}]"
* }
*
* incase of failure:
* {
* "status" : "FAILED",
* "errorObj" : {
* "errorCode: "<STRING>",
* "errorMessage": <STRING>,
* "errorDetail": "<STRING>"
* }
* }
*/
_fetchMultipleRecords: function(recordGr, restrictedAttributes, queryParams, paginationDetails, arrayName) {
return this._fetchMultipleRecordsWithLimitParams(recordGr, restrictedAttributes, queryParams, paginationDetails, arrayName, []);
},
_fetchMultipleRecordsWithLimitParams: function(recordGr, restrictedAttributes, queryParams, paginationDetails, arrayName, nonQueryingParams) {
var items = [],
curRowCount = 0,
hasMore = false,
errorObject = null;
//add query params
try {
if (!gs.nil(queryParams)) {
var params = Object.keys(queryParams);
if (params.length > 0)
params.forEach(function(field) {
if (field != InstallBaseItemAPIConstants.SYSPARM_CONTEXT && (gs.nil(nonQueryingParams) || nonQueryingParams.indexOf(field) < 0))
recordGr.addQuery(field, queryParams[field]);
});
}
} catch (e) {
return {
"status": InstallBaseItemAPIConstants.ERROR,
"errorObject": this.apiHelper.operationCannotBePerformed(InstallBaseItemAPIConstants.OPERATION.READ)
};
}
recordGr.chooseWindow(paginationDetails.startFrom, paginationDetails.lastRecord);
recordGr.query();
//iterate
while (recordGr.next()) {
//check if you have gone beyond page size and set hasMore to true.
curRowCount++;
if (curRowCount > paginationDetails.pageSize) {
hasMore = true;
break;
}
var internalGr = recordGr;
var class_name = recordGr.getValue('sys_class_name');
if (!gs.nil(class_name) && (recordGr.getTableName() != class_name)){
internalGr = new GlideRecord(recordGr.getValue('sys_class_name'));
internalGr.get(recordGr.getValue('sys_id'));
}
if (this.apiHelper.canRead(internalGr)) {
items.push(this.apiHelper.getJSONFromGR(internalGr, restrictedAttributes));
} else {
errorObject = this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.READ);
}
}
var resp = {};
if (gs.nil(errorObject) || items.length > 0) {
/*Build response*/
resp[InstallBaseItemAPIConstants.SYSPARM_OFFSET] = paginationDetails.startFrom.toString();
resp[InstallBaseItemAPIConstants.SYSPARM_LIMIT] = paginationDetails.pageSize.toString();
resp.has_more = '' + hasMore;
resp[arrayName] = items;
resp.status = InstallBaseItemAPIConstants.SUCCESS;
} else {
resp = errorObject;
}
return resp;
},
/*
* Get the extended table name if passed in the query params.
*/
_getExtendedTableName: function(queryParams, tableName) {
//Get the tablename from the queryParams if provided
if (!gs.nil(queryParams) && queryParams[InstallBaseItemAPIConstants.CLASS_NAME]) {
tableName = queryParams[InstallBaseItemAPIConstants.CLASS_NAME];
}
return tableName;
},
/*
* Get the install base table name if passed in the query params.
*/
_getInstallBaseTableName: function(queryParams) {
var tableName = global.CSMBaseConstants.INSTALL_BASE_ITEM;
//Get the tablename from the queryParams if provided
if (!gs.nil(queryParams) && queryParams[InstallBaseItemAPIConstants.CLASS_NAME]) {
tableName = queryParams[InstallBaseItemAPIConstants.CLASS_NAME];
}
return tableName;
},
/*
* Update installbase Item for the given id and fields in the payload.
*/
updateInstallBaseItem: function(installBaseItemId, payload) {
var resp = {};
errorObj = null,
recordGr = new GlideRecord(payload.sys_class_name);
if (recordGr.get(installBaseItemId)) {
if (this.apiHelper.canWrite(recordGr)) {
var keys = Object.keys(payload);
for (var i = 0; i < keys.length; i++) {
if(InstallBaseItemAPIConstants.IgnoreTableAttributes.PatchAttributes.indexOf(keys[i]) < 0)
recordGr.setValue(keys[i], payload[keys[i]]);
}
//Update
if (gs.nil(recordGr.update())) {
var msg = InstallBaseItemAPIConstants.API_MESSAGES.REQUEST_CANNOT_BE_PROCESSED;
resp = InstallBaseItemAPIHelper.getErrorObject(msg, msg);
} else {
//on update
resp.status = InstallBaseItemAPIConstants.SUCCESS;
}
} else {
resp = this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.WRITE);
}
}
else {
msg = InstallBaseItemAPIConstants.API_MESSAGES.RESOURCE_NOT_FOUND;
return InstallBaseItemAPIHelper.getErrorObject(msg, msg, InstallBaseItemAPIConstants.API_STATUS_CODES.NOT_FOUND);
}
resp.item = this.apiHelper.getJSONFromGR(recordGr, InstallBaseItemAPIConstants.ExcludeTableAttributes.GetInstallBaseRestrictedAttributes());
return resp;
},
createRelatedParty: function(payload) {
var relatedPartyGr = null;
var resp = {};
errorObj = null;
if (!gs.nil(payload.sys_class_name))
relatedPartyGr = new GlideRecord(payload.sys_class_name);
else
relatedPartyGr = new GlideRecord(global.CSMBaseConstants.INSTALL_BASE_RELATED_PARTY);
if (!this.apiHelper.canCreate(relatedPartyGr)) {
return this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.CREATE);
}
relatedPartyGr.initialize();
relatedPartyGr.newRecord();
var fields = Object.keys(payload);
for (curField = 0; curField < fields.length; curField++) {
if(InstallBaseItemAPIConstants.IgnoreTableAttributes.PostAttributes.indexOf(fields[curField]) < 0)
relatedPartyGr.setValue(fields[curField], payload[fields[curField]]);
}
var sys_id = relatedPartyGr.insert();
if (gs.nil(sys_id)) {
var msg = InstallBaseItemAPIConstants.API_MESSAGES.REQUEST_CANNOT_BE_PROCESSED;
return InstallBaseItemAPIHelper.getErrorObject(msg, msg);
}
resp.status = InstallBaseItemAPIConstants.SUCCESS;
resp.item = this.apiHelper.getJSONFromGR(relatedPartyGr, InstallBaseItemAPIConstants.ExcludeTableAttributes.GetRelatedPartiesRestrictedAttributes());
return resp;
},
/*
* Uninstall installbase Item for the given id.
*/
uninstallInstallBaseItem: function(installBaseItemId, payload) {
if (!this.apiHelper.isValidSysId(global.CSMBaseConstants.INSTALL_BASE_ITEM, installBaseItemId))
return this.apiHelper.resourceNotFound();
var resp = {};
var recordGr = new GlideRecord(global.CSMBaseConstants.INSTALL_BASE_ITEM);
if (recordGr.get(installBaseItemId)) {
if (recordGr.getDisplayValue(InstallBaseItemAPIConstants.FIELD_ACTIVE) == 'false')
return InstallBaseItemAPIHelper.getErrorObject(InstallBaseItemAPIConstants.API_MESSAGES.MALFORMED_REQUEST, InstallBaseItemAPIConstants.API_MESSAGES.INSTALL_BASE_ALREADY_UNINSTALLED, InstallBaseItemAPIConstants.API_STATUS_CODES.ERROR);
if (this.apiHelper.canWrite(recordGr)) {
recordGr.setValue(InstallBaseItemAPIConstants.FIELD_ACTIVE, 'false');
var keys = Object.keys(payload);
for (var i = 0; i < keys.length; i++) {
recordGr.setValue(keys[i], payload[keys[i]]);
}
//Update
if (gs.nil(recordGr.update())) {
resp = this.apiHelper.requestCannotProcess(null, InstallBaseItemAPIConstants.API_MESSAGES.REQUEST_FAILED(InstallBaseItemAPIConstants.OPERATION.UNINSTALL), null);
} else {
//on update
resp.status = InstallBaseItemAPIConstants.SUCCESS;
resp.item = this.apiHelper.getJSONFromGR(recordGr, InstallBaseItemAPIConstants.ExcludeTableAttributes.GetInstallBaseRestrictedAttributes());
}
} else {
resp = this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.WRITE);
}
}
else {
msg = InstallBaseItemAPIConstants.API_MESSAGES.RESOURCE_NOT_FOUND;
return InstallBaseItemAPIHelper.getErrorObject(msg, msg, InstallBaseItemAPIConstants.API_STATUS_CODES.NOT_FOUND);
}
return resp;
},
updateRelatedPartyForIB: function(relatedPartyId, payload) {
var resp = {};
errorObj = null;
var recordGr;
if (!gs.nil(payload.sys_class_name))
recordGr = new GlideRecord(payload.sys_class_name);
else
recordGr = new GlideRecord(global.CSMBaseConstants.INSTALL_BASE_RELATED_PARTY);
if (recordGr.get(relatedPartyId)) {
if (this.apiHelper.canWrite(recordGr)) {
var keys = Object.keys(payload);
for (var i = 0; i < keys.length; i++) {
if(InstallBaseItemAPIConstants.IgnoreTableAttributes.PatchAttributes.indexOf(keys[i]) < 0)
recordGr.setValue(keys[i], payload[keys[i]]);
}
//Update
if (gs.nil(recordGr.update())) {
var msg = InstallBaseItemAPIConstants.API_MESSAGES.REQUEST_CANNOT_BE_PROCESSED;
resp = InstallBaseItemAPIHelper.getErrorObject(msg, msg);
} else {
//on update
resp.status = InstallBaseItemAPIConstants.SUCCESS;
}
} else {
resp = this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.WRITE);
}
}
else {
msg = InstallBaseItemAPIConstants.API_MESSAGES.RESOURCE_NOT_FOUND;
return InstallBaseItemAPIHelper.getErrorObject(msg, msg, InstallBaseItemAPIConstants.API_STATUS_CODES.NOT_FOUND);
}
resp.item = this.apiHelper.getJSONFromGR(recordGr, InstallBaseItemAPIConstants.ExcludeTableAttributes.GetInstallBaseRestrictedAttributes());
return resp;
},
/*
* delete related party with the given relatedPartyId
*/
deleteRelatedParty: function(relatedPartyId) {
var resp = {};
var RPGR = new GlideRecord(global.CSMBaseConstants.INSTALL_BASE_RELATED_PARTY);
if(RPGR.get(relatedPartyId)) {
if (this.apiHelper.canDelete(RPGR) && RPGR.deleteRecord()) {
resp.status = InstallBaseItemAPIConstants.SUCCESS;
} else {
resp = this.apiHelper.forBiddenMessage(InstallBaseItemAPIConstants.DELETE);
}
}
else {
msg = InstallBaseItemAPIConstants.API_MESSAGES.RESOURCE_NOT_FOUND;
return InstallBaseItemAPIHelper.getErrorObject(msg, msg, InstallBaseItemAPIConstants.API_STATUS_CODES.NOT_FOUND);
}
return resp;
},
type: 'InstallBaseItemAPIDaoSNC'
};
Sys ID
f3df3ce523d12110e32f13d1d7bf65d7