Added models for qb request and responses to communicate with web app.
This commit is contained in:
@@ -327,6 +327,8 @@
|
|||||||
<Compile Include="Models\DTO_Base.cs" />
|
<Compile Include="Models\DTO_Base.cs" />
|
||||||
<Compile Include="Models\DTO_QueueItem.cs" />
|
<Compile Include="Models\DTO_QueueItem.cs" />
|
||||||
<Compile Include="Models\Monitor.cs" />
|
<Compile Include="Models\Monitor.cs" />
|
||||||
|
<Compile Include="Models\QbRequestItem.cs" />
|
||||||
|
<Compile Include="Models\QbResponseItem.cs" />
|
||||||
<Compile Include="Models\QbXmlResponse.cs" />
|
<Compile Include="Models\QbXmlResponse.cs" />
|
||||||
<Compile Include="Properties\Resources.es-MX.Designer.cs">
|
<Compile Include="Properties\Resources.es-MX.Designer.cs">
|
||||||
<DependentUpon>Resources.es-MX.resx</DependentUpon>
|
<DependentUpon>Resources.es-MX.resx</DependentUpon>
|
||||||
|
|||||||
43
BodyshopUploader/Models/QbRequestItem.cs
Normal file
43
BodyshopUploader/Models/QbRequestItem.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace BodyshopPartner.Models
|
||||||
|
{
|
||||||
|
public class QbRequestItem : DTO_Base
|
||||||
|
{
|
||||||
|
public QbRequestItem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _id;
|
||||||
|
[JsonProperty("id")]
|
||||||
|
public string Id
|
||||||
|
{
|
||||||
|
get { return _id; }
|
||||||
|
set { SetProperty(ref _id, value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private string[] _okStatusCodes;
|
||||||
|
[JsonProperty("OkStatusCodes")]
|
||||||
|
public string[] OkStatusCodes
|
||||||
|
{
|
||||||
|
get { return _okStatusCodes; }
|
||||||
|
set { SetProperty(ref _okStatusCodes, value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _qbxml;
|
||||||
|
[JsonProperty("qbxml")]
|
||||||
|
public string QbXML
|
||||||
|
{
|
||||||
|
get { return _qbxml; }
|
||||||
|
set { SetProperty(ref _qbxml, value); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
41
BodyshopUploader/Models/QbResponseItem.cs
Normal file
41
BodyshopUploader/Models/QbResponseItem.cs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace BodyshopPartner.Models
|
||||||
|
{
|
||||||
|
public class QbResponseItem : DTO_Base
|
||||||
|
{
|
||||||
|
public QbResponseItem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _id;
|
||||||
|
[JsonProperty("id")]
|
||||||
|
public string Id
|
||||||
|
{
|
||||||
|
get { return _id; }
|
||||||
|
set { SetProperty(ref _id, value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _success;
|
||||||
|
[JsonProperty("success")]
|
||||||
|
public bool Success
|
||||||
|
{
|
||||||
|
get { return _success; }
|
||||||
|
set { SetProperty(ref _success, value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _errorMessage;
|
||||||
|
[JsonProperty("errorMessage")]
|
||||||
|
public string ErrorMessage
|
||||||
|
{
|
||||||
|
get { return _errorMessage; }
|
||||||
|
set { SetProperty(ref _errorMessage, value); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ using System.Xml.Linq;
|
|||||||
using Newtonsoft;
|
using Newtonsoft;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using BodyshopPartner.Models;
|
||||||
|
|
||||||
namespace BodyshopPartner.Utils
|
namespace BodyshopPartner.Utils
|
||||||
{
|
{
|
||||||
@@ -38,26 +39,48 @@ namespace BodyshopPartner.Utils
|
|||||||
|
|
||||||
private static void HandleQbPost(System.Net.HttpListenerRequest req, System.Net.HttpListenerResponse res)
|
private static void HandleQbPost(System.Net.HttpListenerRequest req, System.Net.HttpListenerResponse res)
|
||||||
{
|
{
|
||||||
logger.Debug("/qb/ - POST");
|
logger.Trace("/qb/ - POST");
|
||||||
//Input will be an array of XMLs.
|
|
||||||
|
|
||||||
string[] requestXMLstrings = ParseBodyToArray(req);
|
|
||||||
hlog("Received QuickBooks Receivable request.");
|
hlog("Received QuickBooks Receivable request.");
|
||||||
|
//Input will be an array of objects containing XMLs.
|
||||||
|
|
||||||
|
List<QbRequestItem> AllRequests = ParseRequest(req);
|
||||||
|
List<QbResponseItem> HttpResponse = new List<QbResponseItem>();
|
||||||
|
|
||||||
// string requestXMLstring = ParseBodyToString(req);
|
// string requestXMLstring = ParseBodyToString(req);
|
||||||
foreach (var requestXMLstring in requestXMLstrings)
|
foreach (QbRequestItem request in AllRequests)
|
||||||
{
|
{
|
||||||
XDocument requestXMLdoc = ParseStringToXml(requestXMLstring);
|
XDocument response = XDocument.Parse(QuickBooksInterop.ProcessQBXmlRequest(request.QbXML));
|
||||||
XDocument response = XDocument.Parse(QuickBooksInterop.ProcessQBXmlRequest(requestXMLstring));
|
QbXmlResponse ResponseStatus = QuickBooksInterop.ParseResponseXml(response);
|
||||||
Models.QbXmlResponse ResponseStatus = QuickBooksInterop.ParseResponseXml(response);
|
|
||||||
logger.Info(response.ToString());
|
logger.Trace(response.ToString());
|
||||||
logger.Info(ResponseStatus.ToString());
|
logger.Debug(ResponseStatus.ToString());
|
||||||
hlog(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);
|
||||||
}
|
}
|
||||||
|
|
||||||
hlog("Completed QuickBooks request.");
|
hlog("Completed QuickBooks request.");
|
||||||
res.WithCORS().Close();
|
|
||||||
|
res.WithCORS().AsText(JsonConvert.SerializeObject(HttpResponse));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<QbRequestItem> ParseRequest(System.Net.HttpListenerRequest req)
|
||||||
|
{
|
||||||
|
System.IO.Stream body = req.InputStream;
|
||||||
|
System.Text.Encoding encoding = req.ContentEncoding;
|
||||||
|
System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
|
||||||
|
string s = reader.ReadToEnd();
|
||||||
|
body.Close();
|
||||||
|
reader.Close();
|
||||||
|
|
||||||
|
return JsonConvert.DeserializeObject<List<QbRequestItem>>(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string[] ParseBodyToArray(System.Net.HttpListenerRequest req)
|
public static string[] ParseBodyToArray(System.Net.HttpListenerRequest req)
|
||||||
|
|||||||
Reference in New Issue
Block a user