Improved error handling when QBW file does not exist or SDK not installed. BOD-142
This commit is contained in:
@@ -45,50 +45,60 @@ namespace BodyshopPartner.Utils
|
||||
|
||||
List<QbRequestItem> AllRequests = ParseRequest(req);
|
||||
List<QbResponseItem> HttpResponse = new List<QbResponseItem>();
|
||||
|
||||
hlog("Connecting to QuickBooks. This may take a moment...");
|
||||
QuickBooksInterop.ConnectToQuickBooks();
|
||||
|
||||
foreach (QbRequestItem request in AllRequests)
|
||||
try
|
||||
{
|
||||
try
|
||||
hlog("Connecting to QuickBooks. This may take a moment...");
|
||||
QuickBooksInterop.ConnectToQuickBooks();
|
||||
|
||||
foreach (QbRequestItem request in AllRequests)
|
||||
{
|
||||
hlog("Processing QuickBooks request. ImEX Online Record ID:" + request.Id);
|
||||
XDocument response = XDocument.Parse(QuickBooksInterop.ProcessQBXmlRequestUnManaged(request.QbXML));
|
||||
QbXmlResponse ResponseStatus = QuickBooksInterop.ParseResponseXml(response);
|
||||
|
||||
logger.Trace(response.ToString());
|
||||
logger.Debug(ResponseStatus.ToString());
|
||||
hlog(ResponseStatus.ToString());
|
||||
|
||||
QbResponseItem r = new QbResponseItem()
|
||||
try
|
||||
{
|
||||
Id = request.Id,
|
||||
Success = ResponseStatus.StatusCode == "0" || request.OkStatusCodes.Contains(ResponseStatus.StatusCode),
|
||||
ErrorMessage = ResponseStatus.StatusMessage
|
||||
};
|
||||
hlog("Processing QuickBooks request. ImEX Online Record ID:" + request.Id);
|
||||
XDocument response = XDocument.Parse(QuickBooksInterop.ProcessQBXmlRequestUnManaged(request.QbXML));
|
||||
QbXmlResponse ResponseStatus = QuickBooksInterop.ParseResponseXml(response);
|
||||
|
||||
HttpResponse.Add(r);
|
||||
}
|
||||
catch (Exception Ex)
|
||||
{
|
||||
//Shouldn't really get here unless something is malformed.
|
||||
logger.Error(Ex, "Error encountered when processing QbXML Request.\n {0}", request.QbXML);
|
||||
QbResponseItem r = new QbResponseItem()
|
||||
logger.Trace(response.ToString());
|
||||
logger.Debug(ResponseStatus.ToString());
|
||||
hlog(ResponseStatus.ToString());
|
||||
|
||||
QbResponseItem r = new QbResponseItem()
|
||||
{
|
||||
Id = request.Id,
|
||||
Success = ResponseStatus.StatusCode == "0" || request.OkStatusCodes.Contains(ResponseStatus.StatusCode),
|
||||
ErrorMessage = ResponseStatus.StatusMessage
|
||||
};
|
||||
|
||||
HttpResponse.Add(r);
|
||||
}
|
||||
catch (Exception Ex)
|
||||
{
|
||||
Id = request.Id,
|
||||
Success = false,
|
||||
ErrorMessage = Ex.Message
|
||||
};
|
||||
//Shouldn't really get here unless something is malformed.
|
||||
logger.Error(Ex, "Error encountered when processing QbXML Request.\n {0}", request.QbXML);
|
||||
QbResponseItem r = new QbResponseItem()
|
||||
{
|
||||
Id = request.Id,
|
||||
Success = false,
|
||||
ErrorMessage = Ex.Message
|
||||
};
|
||||
|
||||
HttpResponse.Add(r);
|
||||
}
|
||||
|
||||
HttpResponse.Add(r);
|
||||
}
|
||||
QuickBooksInterop.DisconnectFromQuickBooks();
|
||||
|
||||
hlog("Completed QuickBooks requests.");
|
||||
|
||||
}
|
||||
QuickBooksInterop.DisconnectFromQuickBooks();
|
||||
|
||||
hlog("Completed QuickBooks requests.");
|
||||
catch (Exception Ex)
|
||||
{
|
||||
logger.Error(Ex, "Error encountered while processing QuickBooks requests.");
|
||||
hlog("Error encountered while processing QuickBooks requests.");
|
||||
HttpResponse.Add(new QbResponseItem() { Id = "-1", Success = false, ErrorMessage = Ex.Message });
|
||||
}
|
||||
res.WithCORS().AsText(JsonConvert.SerializeObject(HttpResponse));
|
||||
|
||||
}
|
||||
|
||||
public static List<QbRequestItem> ParseRequest(System.Net.HttpListenerRequest req)
|
||||
|
||||
Reference in New Issue
Block a user