Hi Bipin,
Below code tried but its returning value true/false as per condition but not working.
/// hide results button for other roles except system admin,system customizer & Tech Admin
Deal_Retail_Ribbon.hideResults = async function(PrimaryControl) {
"use strict";
try {
debugger;
var isValidate = false;
var roleName = await Deal_Retail_Ribbon.getRoleName();
var fetchXMLCondition = "";
var userSettings = Xrm.Utility.getGlobalContext().userSettings;
var loggedInUserSecurityRolesArray = userSettings.securityRoles;
if (loggedInUserSecurityRolesArray.length > 0) {
var i;
for (i = 0; i < loggedInUserSecurityRolesArray.length; i++) {
fetchXMLCondition += "<condition attribute='roleid' operator='eq' value='" + loggedInUserSecurityRolesArray[i] + "'/>";
}
var fetchXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
"<entity name='role'>" +
"<attribute name='roleid' />" +
"<attribute name='name' />" +
"<order attribute='name' descending='false' />" +
"<filter type='or'>" + fetchXMLCondition +
"</filter>" +
"</entity>" +
"</fetch>";
fetchXML = "?fetchXml=" + encodeURIComponent(fetchXML);
isValidate = await Deal_Retail_Ribbon.checkMatchRole(fetchXML,roleName);
Xrm.Page.ui.refreshRibbon();
}
return isValidate;
} catch (error) {
Xrm.Navigation.openAlertDialog("Ok", error.message);
//common_Retail.openAlertDialog("Ok", error.message);
}
};
///Get Logged in Role Names
Deal_Retail_Ribbon.getRoleName = function() {
"use strict";
try {
var roleName = new Array();
return new Promise(resolve => {
Xrm.WebApi.online.retrieveMultipleRecords("new_configuration", "?$select=new_name,new_value&$filter=new_name eq 'GetRoleName'").then(
function success(results) {
results.entities.forEach(function(result) {
var new_name = result["new_name"];
var new_value = result["new_value"];
roleName = new_value.split(',');
});
//console.log(roleName);
setTimeout(() => resolve(roleName, 1000))
},
function(error) {
Xrm.Navigation.openAlertDialog("Ok", error.message);
//common_Retail.openAlertDialog("Ok", error.message);
}
);
});
//return roleName;
} catch (error) {
Xrm.Navigation.openAlertDialog("Ok", error.message);
}
};
///check role matching or not
Deal_Retail_Ribbon.checkMatchRole = function(fetchXML,roleName) {
"use strict";
try {
var counter = 0;
return new Promise(resolve => {
Xrm.WebApi.retrieveMultipleRecords("role", fetchXML).then(
function success(result) {
if (result !== undefined && result !== null && result.entities.length > 0) {
result.entities.forEach(function(itemName) {
if (roleName.includes(itemName.name)) {
//flag = true;
counter++;
//resolve(true);
setTimeout(() => resolve(true, 1000));
}
else {
//resolve(false);
if(counter === 0){
setTimeout(() => resolve(false, 1000));
}
}
});
}
},
function(error) {
Xrm.Navigation.openAlertDialog("Ok", error.message);
//common_Retail.openAlertDialog("Ok", error.message);
}
);
//if(counter === 0){
//resolve(false);
//}
});
} catch (error) {
Xrm.Navigation.openAlertDialog("Ok", error.message);
}
};