public void SendOutfittingData(JObject dataObject)
{
Int32 objectCount = 0;
Boolean writeToFile = false;
StreamWriter writer = null;
String debugFile = @"C:\temp\outfitting_ibe.csv";
SQL.Datasets.dsEliteDB.tboutfittingbaseDataTable baseData;
System.Text.RegularExpressions.Regex allowedPattern = new System.Text.RegularExpressions.Regex("(^Hpt_|^Int_|_Armour_)");
try
{
if(m_SenderIsActivated && m_lDBCon.getIniValue<Boolean>(IBE.EDDN.EDDNView.DB_GROUPNAME, "EDDNPostOutfittingData", true.ToString(), false))
{
IBECompanion.CompanionConverter cmpConverter = new IBECompanion.CompanionConverter();
String systemName = dataObject.SelectToken("lastSystem.name").ToString();
String stationName = dataObject.SelectToken("lastStarport.name").ToString();
if((m_ID_of_Outfitting_Station.Item1 != systemName + "|" + stationName) || ((DateTime.Now - m_ID_of_Outfitting_Station.Item2).TotalMinutes >= 60))
{
m_ID_of_Outfitting_Station = new Tuple<String, DateTime>(systemName +"|" + stationName, DateTime.Now);
StringBuilder outfittingStringEDDN = new StringBuilder();
outfittingStringEDDN.Append(String.Format("\"message\": {{"));
outfittingStringEDDN.Append(String.Format("\"systemName\":\"{0}\", " , dataObject.SelectToken("lastSystem.name").ToString()));
//outfittingStringEDDN.Append(String.Format("\"systemId\":\"{0}\", " , dataObject.SelectToken("lastSystem.id").ToString()));
//outfittingStringEDDN.Append(String.Format("\"systemAddress\":\"{0}\", " , dataObject.SelectToken("lastSystem.address").ToString()));
outfittingStringEDDN.Append(String.Format("\"stationName\":\"{0}\", " , dataObject.SelectToken("lastStarport.name").ToString()));
//outfittingStringEDDN.Append(String.Format("\"stationId\":\"{0}\", " , dataObject.SelectToken("lastStarport.id").ToString()));
outfittingStringEDDN.Append(String.Format("\"timestamp\":\"{0}\", ", DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture)));
outfittingStringEDDN.Append(String.Format("\"modules\": ["));
if(writeToFile)
{
if(File.Exists(debugFile))
File.Delete(debugFile);
writer = new StreamWriter(File.OpenWrite(debugFile));
}
baseData = new SQL.Datasets.dsEliteDB.tboutfittingbaseDataTable();
m_lDBCon.Execute("select * from tbOutfittingBase;", (System.Data.DataTable)baseData);
foreach (JToken outfittingItem in dataObject.SelectTokens("lastStarport.modules.*"))
{
if(allowedPattern.IsMatch(outfittingItem.Value<String>("name")) &&
((outfittingItem.Value<String>("sku") == null) || (outfittingItem.Value<String>("sku").Equals("ELITE_HORIZONS_V_PLANETARY_LANDINGS"))) &&
(!outfittingItem.Value<String>("name").Equals("Int_PlanetApproachSuite")))
{
OutfittingObject outfitting = cmpConverter.GetOutfittingFromFDevIDs(baseData, outfittingItem, false);
if(objectCount > 0)
outfittingStringEDDN.Append(", ");
if(writeToFile)
{
writer.WriteLine(String.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}",
systemName, stationName, outfitting.Category, outfitting.Name, outfitting.Mount,
outfitting.Guidance, outfitting.Ship, outfitting.Class, outfitting.Rating,
DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture)));
}
outfittingStringEDDN.Append(String.Format("\"{0}\", ", outfittingItem.Value<String>("name")));
outfittingStringEDDN.Remove(outfittingStringEDDN.Length-1, 1);
outfittingStringEDDN.Replace(",", "", outfittingStringEDDN.Length-1, 1);
objectCount++;
}
}
outfittingStringEDDN.Append("]}");
if(objectCount > 0)
{
_Send_Outfitting.Enqueue(outfittingStringEDDN);
_SendDelayTimer_Outfitting.Start();
m_ID_of_Outfitting_Station = new Tuple<String, DateTime>(systemName +"|" + stationName, DateTime.Now);
}
if(writeToFile)
{
writer.Close();
writer.Dispose();
}
}
}
}
catch (Exception ex)
{
throw new Exception("Error while extracting outfitting data for eddn", ex);
}
}