/// <summary> /// Handles exception thrown from a solve operation. /// </summary> /// <param name="exception">The exception thrown from a solve operation.</param> private void _HandleSolveError(Exception exception) { Debug.Assert(exception != null); var routeException = exception as RouteException; if (routeException != null) { if (routeException.InvalidObjects != null) { // exception was thrown because any Routes or Orders are invalid. _ShowSolveValidationResult(routeException.InvalidObjects); } else { _ShowErrorMsg(RoutingCmdHelpers.FormatRoutingExceptionMsg(routeException)); } return; } // If we have error in sync response - show it. var restException = exception as RestException; if (restException != null) { var details = new List <MessageDetail>(); // If exception has details- process them. if (restException.Details != null) { foreach (var detail in restException.Details) { var detailMessage = GuidsReplacer.ReplaceGuids(detail, App.Current.Project); details.Add(new MessageDetail(MessageType.Error, detailMessage)); } } // Process exception message. var message = GuidsReplacer.ReplaceGuids(exception.Message, App.Current.Project); // Show error in messenger. App.Current.Messenger.AddError(message, details); return; } Logger.Error(exception); CommonHelpers.AddRoutingErrorMessage(exception); }
/// <summary> /// Method returns solver error message string /// </summary> /// <param name="res"></param> /// <returns></returns> public static string FormatSolverErrorMsg(SolveResult res) { StringBuilder messageSb = new StringBuilder(); foreach (ServerMessage msg in res.Messages) { if (msg.Type == ServerMessageType.Error || msg.Type == ServerMessageType.Warning) { messageSb.Append(_FixMessageText(msg.Text)); } } // Replace guids with names in message. var messageWithNames = GuidsReplacer.ReplaceGuids(messageSb.ToString(), App.Current.Project); return(messageWithNames); }