Name
global.SkillCategoryCodeResetMgr
Description
This class is responsible for resetting and recalculating all skill category codes and paths.
Script
var SkillCategoryCodeResetMgr = Class.create();
SkillCategoryCodeResetMgr.prototype = {
initialize: function() {
},
resetCategoryCodes: function() {
var updatedRecords = 0;
gs.setProperty('cmn_skill_category.code.last_generated', '');
var uniqueCodeGenerator = new UniqueCodeGenerator();
var categoryInfo = this.getCategories();
var categories = categoryInfo.topCategories;
var isTreeProcessed = categories.length === 0;
while (!isTreeProcessed) {
updatedRecords += this.updateCategoryCodes(categories, uniqueCodeGenerator);
categories = this.getNextLevelCategories(categoryInfo.categoryMap, categories);
isTreeProcessed = categories.length === 0;
}
return updatedRecords;
},
getCategories: function() {
var categories = {};
var topCategories = [];
var gr = new GlideRecord('cmn_skill_category');
gr.query();
while (gr.next()) {
var parent = gr.getValue('parent');
var child = gr.getUniqueValue();
if (gs.nil(parent))
topCategories.push(child);
else {
if(gs.nil(categories[parent]))
categories[parent] = [];
categories[parent].push(child);
}
}
return {
'topCategories' : topCategories,
'categoryMap' : categories
};
},
updateCategoryCodes: function(categories, uniqueCodeGenerator) {
var updatedRecords = 0;
var gr = new GlideRecord('cmn_skill_category');
gr.addQuery('sys_id', 'IN', categories);
gr.query();
gr.setWorkflow(false);
while (gr.next()) {
var code = uniqueCodeGenerator.generateUniqueCode();
var parentPath = gs.nil(gr.parent) ? '' : gr.parent.category_path;
var currentPath = code + '/';
gr.setValue('code', code);
gr.setValue('category_path', parentPath + currentPath);
if(gr.update())
updatedRecords++;
}
return updatedRecords;
},
getNextLevelCategories: function(categoryHierarchy, categories) {
var nextCategories = [];
categories.forEach(function(category) {
var children = categoryHierarchy[category];
if (!gs.nil(children))
nextCategories = nextCategories.concat(children);
});
return nextCategories;
},
type: 'SkillCategoryCodeResetMgr'
};
Sys ID
e02cb75ab3103300290ea943c6a8dcc4