By Proximity
Suppose you want to search using proximity. For this, we have created the custom action with name “Inogic.Maplytics.API.Proximity” (ikl_InogicMaplyticsAPIProximity).
Custom action accepts following parameters:
CurrentLocation: Location for which you want to do the proximity search.
Proximity: Provide the proximity radius. e.g., 3. If you want to do Concentric Proximity search, then specify multiple proximity radii separated by comma ‘,’. For example, 5, 10, 15.
DistanceUnit: Provide the radius unit. It can be either “mile or kilometer". If the unit is not specified then by default mile will be considered as the radius unit.
Records: EntityCollection
Entity: Provide the entity name. e.g. “Account"
ViewName: Specify the view name. e.g., “My Active Accounts”
When user passes the required parameters and executes this action then it will return records colle
To execute proximity action using the C#, use the following code.
//create request object
string requestName = "ikl_InogicMaplyticsAPIProximity";
//create request object
OrganizationRequest orgReq = new OrganizationRequest(requestName);
//for proximity
orgReq["CurrentLocation"] = "New York";
orgReq["Proximity"] = "10,25";
orgReq["DistanceUnit"] = "Mile";
//Entity & view
orgReq["Entity"] = "account";
orgReq["ViewName"] = "My Active Accounts";
OrganizationResponse response = service.Execute(orgReq);
EntityCollection recordsCollection = (EntityCollection)response.Results["RecordsCollection"];
To execute the action using the javascript (web api) you can use following code.
function executeCustomAction() {
try {
var actionObj = {
CurrentLocation: "New York",
Proximity: "10,25",
DistanceUnit: "Mile",
Entity: "account",
ViewName: "My Active Accounts",
}
// call this function to execute the action
execute(actionObj, "ikl_InogicMaplyticsAPIProximity()", function (data) {
alert("Success: " + data);
}, function (error) {
debugger;
alert("Error: " + error.message);
});
} catch (e) {
alert(e.message);
}
}
function execute(req, reqName, successCallback, errorCallback) {
//create AJAX request
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: encodeURI(getWebAPIPath() + reqName),
data: window.JSON.stringify(req),
beforeSend: function (xhr) {
//Specifying this header ensures that the results will be returned as JSON.
xhr.setRequestHeader("Accept", "application/json");
//xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.setRequestHeader("OData-MaxVersion", "4.0");
xhr.setRequestHeader("OData-Version", "4.0");
},
success: function (data, textStatus, xhr) {
//successCallback function
if (data != null && data.value != undefined) {
successCallback(data.value);
} else {
successCallback(data);
}
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(Inogic.Maplytics.ApiLib.errorHandler(xhr));
}
});
}
function getWebAPIPath() {
return Xrm.Page.context.getClientUrl() + "/api/data/v8.0/";
}
Last updated
Was this helpful?