public EDDN.OutfittingObject GetOutfittingFromFDevIDs(SQL.Datasets.dsEliteDB.tboutfittingbaseDataTable basedata, Newtonsoft.Json.Linq.JToken outfittingItem, bool param1) { EDDN.OutfittingObject outfitting = null; List <String> nameParts; String nameFull; try { if (outfittingItem != null) { if (outfittingItem.SelectToken("id", false) == null) { throw new NotSupportedException(String.Format("Missing id : {0}", outfittingItem.ToString())); } nameFull = outfittingItem.SelectToken("name", false).ToString().ToLower(); nameParts = nameFull.Split(new char[] { '_' }).ToList(); if (!ignoreStuff.Contains(nameParts[0])) { SQL.Datasets.dsEliteDB.tboutfittingbaseRow itemData = basedata.FindByid((Int32)outfittingItem.SelectToken("id", false)); if (itemData != null) { outfitting = new EDDN.OutfittingObject(); outfitting.Id = itemData.id; outfitting.Category = itemData.category; outfitting.Name = itemData.name; outfitting.Mount = itemData.mount; outfitting.Guidance = itemData.guidance.ToNString(); outfitting.Ship = itemData.ship.ToNString(); outfitting.Class = itemData._class; outfitting.Rating = itemData.rating; outfitting.Entitlement = itemData.entitlement; } else { throw new NotSupportedException(String.Format("Unknown id : {0}", outfittingItem.ToString())); } } } } catch (NotSupportedException ex) { Program.MainLog.Log(String.Format("Converting error: {0}", ex.Message)); } catch (Exception ex) { throw new Exception("Error while converting companion data to shipyard object", ex); } return(outfitting); }
/// <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); } }