// getting current user id
function GetGUIDofCurrentUser() {
debugger;
var UserGUID = Xrm.Page.context.getUserId();
if (UserGUID != null) {
//alert(UserGUID);
var currentid = UserGUID.replace('{', '').replace('}', '');
var managerid =Validateposition_getManagerId(currentid);
var opportunitiesrec = getopportunitys(currentid);
AssignRecordToManager(managerid, opportunityrec);
}
}
//getting user record details
function Validateposition_getManagerId(currentid) {
var _parentsystemuserid_value;
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/systemusers("+ currentid +")?$select=systemuserid,_parentsystemuserid_value,_positionid_value", false);
//req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/systemusers(' + currentid +')?$select=_parentsystemuserid_value,_positionid_value", 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 result = JSON.parse(this.response);
_parentsystemuserid_value = result["_parentsystemuserid_value"];
//var _parentsystemuserid_value_formatted = result["_parentsystemuserid_value@OData.Community.Display.V1.FormattedValue"];
//var _parentsystemuserid_value_lookuplogicalname = result["_parentsystemuserid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
var _positionid_value = result["_positionid_value"];
var _positionid_value_formatted = result["_positionid_value@OData.Community.Display.V1.FormattedValue"];
//var _positionid_value_lookuplogicalname = result["_positionid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
if (_positionid_value_formatted == "bankmanger") {
return _parentsystemuserid_value;
}
}
else {
Xrm.Utility.alertDialog(this.statusText);
return _parentsystemuserid_value;
}
}
};
req.send();
return _parentsystemuserid_value;
}
//getting all opportunities records owned by user
function getopportunities(currentid) {
var results;
//var opportunityid = UserGUID.replace('{', '').replace('}', '');
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/opportunities?$select=name,opportunityid&$filter=statecode eq 0 and _ownerid_value eq "+currentid+"", 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) {
results = JSON.parse(this.response);
return results;
} else {
Xrm.Utility.alertDialog(this.statusText);
return results;
}
}
};
req.send();
return results;
}
//update ownerid to assign on the record
function AssignRecordToManager(managerid, results) {
for (var i = 0; i < results.value.length; i++) {
var opportunityid = results.value[i]["opportunityid"];
opportunityid = opportunityid.replace('{', '').replace('}', '');
var entity = {};
entity.new_ownerid = managerid;
var req = new XMLHttpRequest();
req.open("PATCH", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/opportunities("+opportunityid+")", 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.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 204) {
//Success - No Return Data - Do Something
var a =67;
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send(JSON.stringify(entity));
}
}
//trigger plugin on ownerid field update to assign to manager
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;
using System.ServiceModel;
using Microsoft.Crm.Sdk.Messages;
namespace opportunities
{
public class assignopportunity:IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
ITracingService tracingservice = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
Entity _opportunity = null;
string _ownerid=string.Empty;
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
_opportunity = (Entity)context.InputParameters["Target"];
tracingservice.Trace("entity");
}
if (_opportunity.Attributes.Contains("new_ownerid") && _opportunity.Attributes["new_ownerid"] != null)
{
_ownerid = (string)_opportunity.Attributes["new_ownerid"];
if (!string.IsNullOrEmpty(_ownerid))
{
tracingservice.Trace("ownerid" + _ownerid);
Entity _user = service.Retrieve("systemuser", new Guid(_ownerid), new Microsoft.Xrm.Sdk.Query.ColumnSet("systemuserid"));
AssignRequest assign = new AssignRequest
{
// User or team assigned to the child records
Assignee = _user.ToEntityReference(),
//Target child record
Target = _opportunity.ToEntityReference()
};
// Execute the Request
service.Execute(assign);
}
}
}
}
}