Tag Cloud

CRM 2011 (161) CRM 4.0 (144) C# (116) JScript (109) Plugin (92) Registry (90) Techpedia (77) PyS60 (68) WScript (43) Plugin Message (31) Exploit (27) ShellCode (26) FAQ (22) JavaScript (21) Killer Codes (21) Hax (18) VB 6.0 (17) Commands (16) VBScript (16) Quotes (15) Turbo C++ (13) WMI (13) Security (11) 1337 (10) Tutorials (10) Asp.Net (9) Safe Boot (9) Python (8) Interview Questions (6) video (6) Ajax (5) VC++ (5) WebService (5) Workflow (5) Bat (4) Dorks (4) Sql Server (4) Aptitude (3) Picklist (3) Tweak (3) WCF (3) regex (3) Config (2) LINQ (2) PHP (2) Shell (2) Silverlight (2) TSql (2) flowchart (2) serialize (2) ASHX (1) CRM 4.0 Videos (1) Debug (1) FetchXml (1) GAC (1) General (1) Generics (1) HttpWebRequest (1) InputParameters (1) Lookup (1) Offline Plug-ins (1) OutputParameters (1) Plug-in Constructor (1) Protocol (1) RIA (1) Sharepoint (1) Walkthrough (1) Web.config (1) design patterns (1) generic (1) iframe (1) secure config (1) unsecure config (1) url (1)

Pages

Wednesday, March 20, 2013

Calculate Distance

The following sample uses the MapPoint service to calculate the distance between two zip codes using a simple route. It has two input parameters for the start and end zip codes and one output parameter for the total distance calculated.



using System;
using System.Collections.Generic;
using System.Text;
using System.Workflow.Activities;
using System.Workflow.ComponentModel;
using System.Configuration;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.Workflow;
using System.Net;
using System.Xml;

namespace CustomWorkflowActivity
{
// Get more information about the mappoint assembly from http://staging.mappoint.net/standard-30/
using net.mappoint.staging;

[CrmWorkflowActivity("Calculate Distance", "Mappoint Utilities")]
public class DistanceCalculator : SequenceActivity
{
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
// Set the MapPoint ID and password you created with your Bing Developer/License Account.
ICredentials creds = new NetworkCredential("MappointID", "MappointPassword");
string DataSourceName = "MapPoint.NA";
FindServiceSoap findService = new FindServiceSoap();
findService.Credentials = creds;
findService.PreAuthenticate = true;

RouteServiceSoap routeService = new RouteServiceSoap();
routeService.Credentials = creds;
routeService.PreAuthenticate = true;
routeService.UserInfoRouteHeaderValue = new UserInfoRouteHeader();
routeService.UserInfoRouteHeaderValue.DefaultDistanceUnit = DistanceUnit.Mile;

FindAddressSpecification addressSpecStart = new FindAddressSpecification();
addressSpecStart.DataSourceName = DataSourceName;
addressSpecStart.InputAddress = new Address();
addressSpecStart.InputAddress.PostalCode = this.zipCodeStart;

FindAddressSpecification addressSpecEnd = new FindAddressSpecification();
addressSpecEnd.DataSourceName = DataSourceName;
addressSpecEnd.InputAddress = new Address();
addressSpecEnd.InputAddress.PostalCode = this.zipCodeEnd;

FindResults resultsStart = findService.FindAddress(addressSpecStart);
FindResults resultsEnd = findService.FindAddress(addressSpecEnd);

LatLong startLatLong = resultsStart.Results[0].FoundLocation.LatLong;
LatLong endLatLong = resultsEnd.Results[0].FoundLocation.LatLong;

RouteSpecification routeSpec = new RouteSpecification();
routeSpec.DataSourceName = DataSourceName;
routeSpec.Segments = new SegmentSpecification[2];

routeSpec.Segments[0] = new SegmentSpecification();
routeSpec.Segments[0].Waypoint = new Waypoint();
routeSpec.Segments[0].Waypoint.Location = resultsStart.Results[0].FoundLocation;

routeSpec.Segments[1] = new SegmentSpecification();
routeSpec.Segments[1].Waypoint = new Waypoint();
routeSpec.Segments[1].Waypoint.Location = resultsEnd.Results[0].FoundLocation;


Route route = routeService.CalculateSimpleRoute(new LatLong[] { startLatLong, endLatLong }, DataSourceName, SegmentPreference.Quickest);
this.totalDistance = new CrmNumber((int)route.Itinerary.Distance);

return ActivityExecutionStatus.Closed;
}

public static DependencyProperty zipCodeStartProperty = DependencyProperty.Register("zipCodeStart", typeof(string), typeof(DistanceCalculator));

[CrmInput("Starting Zip Code")]
public string zipCodeStart
{
get
{
return (string)base.GetValue(zipCodeStartProperty);
}
set
{
base.SetValue(zipCodeStartProperty, value);
}
}

public static DependencyProperty zipCodeEndProperty = DependencyProperty.Register("zipCodeEnd", typeof(string), typeof(DistanceCalculator));

[CrmInput("Ending Zip Code")]
public string zipCodeEnd
{
get
{
return (string)base.GetValue(zipCodeEndProperty);
}
set
{
base.SetValue(zipCodeEndProperty, value);
}
}

public static DependencyProperty totalDistanceProperty = DependencyProperty.Register("totalDistance", typeof(CrmNumber), typeof(DistanceCalculator));

[CrmOutput("Total Distance")]
public CrmNumber totalDistance
{
get
{
return (CrmNumber)base.GetValue(totalDistanceProperty);
}
set
{
base.SetValue(totalDistanceProperty, value);
}

}
}

}




No comments: