Monday, April 15, 2019

Ckeck Users Exists in Team D365

function Teammemberexists()
{
var returnresult = false;
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/teammemberships?$select=systemuserid,teamid&$filter=systemuserid eq "+systemuserid+" and  teamid eq "+Teamid, true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 200) {
            var results = JSON.parse(this.response);
            if(results.value.length > 0)
            returnresult = true;
           
        } else {
            Xrm.Utility.alertDialog(this.statusText);
            return returnresult;
        }
    }
};
req.send();
return returnresult;
}

Sunday, April 14, 2019

Show/Hide Ribbonbutton Based on current userroles


Step:1
Create ribbon button

Step:2
Add Enable Rule

Step:3
Add Custom Rule

Call Below "showhideribbonbutton" function
NOTE: mention role names for whom button has to be shown


function showhideribbonbutton(rowdata, userLCID) {
var result=false;
        var currentUserId = Xrm.Page.context.getUserId();
        currentUserId = currentUserId.replace('{', '').replace('}', '');
        var currentUserRoles = getCurrentUserRoles(currentUserId);
        for (var i = 0; i < currentUserRoles.length; i++) {
            if (currentUserRoles[i] == "System Administrator" ||currentUserRoles[i] == "CSR MANAGER") {
               result=true;
            }
        }
 
    return result;
}


function getCurrentUserRoles(currentUserId) {
    var userRoleName = new Array();
    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.1/systemuserrolescollection?$select=roleid&$filter=systemuserid eq " + currentUserId, false);
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
    req.onreadystatechange = function () {
        if (this.readyState === 4) {
            req.onreadystatechange = null;
            if (this.status === 200) {
                var results = JSON.parse(this.response);
                for (var i = 0; i < results.value.length; i++) {
                    var userRoleId = results.value[i]["roleid"];

                    userRoleName[i] = GetRoleName(userRoleId);
                }
            } else {
                Xrm.Utility.alertDialog(this.statusText);
                return userRoleName;
            }
        }
    };
    req.send();
    return userRoleName;
}

function GetRoleName(userRoleId) {
    var userRoleName;
    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/roles(" + userRoleId + ")?$select=name,roleid", false);
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
    req.onreadystatechange = function () {
        if (this.readyState === 4) {
            req.onreadystatechange = null;
            if (this.status === 200) {
                var result = JSON.parse(this.response);
                userRoleName = result["name"];
                //var roleid = result["roleid"];
                return userRoleName;
            } else {
                Xrm.Utility.alertDialog(this.statusText);
                return userRoleName;
            }
        }
    };
    req.send();
    return userRoleName;
}