private RouteServiceResultDTO GetRouteProximityTotals(RouteProximityOptions routeProximityOptions, RouteStop[] routes)
        {
            RouteServiceResultDTO routeServiceResult = new RouteServiceResultDTO();

            using (var routeProximitySoapClient = new RouteProximitySoapClient())
            {
                var getRouteProximityTotalsResponse = routeProximitySoapClient.getRouteProximityTotals(routes, routeProximityOptions, TOKEN);

                routeServiceResult.TotalDistance    = getRouteProximityTotalsResponse.totalDistance;
                routeServiceResult.TotalFuelCost    = getRouteProximityTotalsResponse.totalfuelCost;
                routeServiceResult.TotalTime        = getRouteProximityTotalsResponse.totalTime;
                routeServiceResult.TotalTollFeeCost = getRouteProximityTotalsResponse.totaltollFeeCost;
            }

            return(routeServiceResult);
        }
        public RouteServiceResultDTO Process(RouteServiceParameterRequestDTO routeParameterRequest)
        {
            RouteServiceResultDTO routeServiceResult = new RouteServiceResultDTO();

            try
            {
                if (routeParameterRequest == null || routeParameterRequest.originalRoute == null || routeParameterRequest.destinationRoute == null)
                {
                    ThrowFaultException("Invalid Input Parameters !");
                }

                RouteType routeType = routeParameterRequest.routeType;

                //Set GeoLocation Information from Original Route
                SetGeolocationInfo(routeParameterRequest.originalRoute);

                //Get GeoLocation Information from Destination Route
                SetGeolocationInfo(routeParameterRequest.destinationRoute);

                //Mount RouteStop Objects
                RouteStop originalRouteDetails    = GetRouteStopInfo(routeParameterRequest.originalRoute);
                RouteStop destinationRouteDetails = GetRouteStopInfo(routeParameterRequest.destinationRoute);

                //Get Route Proximity Options
                var routeProximityOptions = GetRouteProximityOptions(routeType);
                var routes = new[] { originalRouteDetails, destinationRouteDetails };

                //Get Summary Totals
                routeServiceResult = GetRouteProximityTotals(routeProximityOptions, routes);
            }
            catch (Exception)
            {
                ThrowFaultException("Problem while executing Process Call !");
            }

            return(routeServiceResult);
        }