/// <summary> /// send the outfitting data of this station /// </summary> /// <param name="stationData">json object with companion data</param> 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); } }