public EDDN.ShipyardObject GetShipFromFDevIDs(SQL.Datasets.dsEliteDB.tbshipyardbaseDataTable basedata, Newtonsoft.Json.Linq.JToken shipyardItem, bool param1) { EDDN.ShipyardObject shipyardObject = null; String skuString = null; try { if (shipyardItem != null) { if (shipyardItem.SelectToken("id", false) == null) { throw new NotSupportedException(String.Format("Missing id : {0}", shipyardItem)); } SQL.Datasets.dsEliteDB.tbshipyardbaseRow itemData = basedata.FindByid((Int32)shipyardItem.SelectToken("id", false)); if (itemData != null) { shipyardObject = new EDDN.ShipyardObject(); shipyardObject.Id = itemData.id; shipyardObject.Name = itemData.name; shipyardObject.BaseValue = shipyardItem.SelectToken("basevalue").ToString(); shipyardObject.Sku = skuString = (shipyardItem.SelectToken("sku", false) ?? "").ToString(); if (shipyardItem.SelectToken("unavailableReason", false) != null) { shipyardObject.UnavailableReason = shipyardItem.SelectToken("unavailableReason", false).ToString(); } if (shipyardItem.SelectToken("factionId", false) != null) { shipyardObject.FactionID = shipyardItem.SelectToken("factionId", false).ToString(); } if (shipyardItem.SelectToken("requiredRank", false) != null) { shipyardObject.RequiredRank = shipyardItem.SelectToken("requiredRank", false).ToString(); } } else { throw new NotSupportedException(String.Format("{0}: Unknown ship", shipyardItem)); } } else { Debug.Print("!"); } return(shipyardObject); } 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(null); }
/// <summary> /// send the shipyard data of this station /// </summary> /// <param name="stationData">json object with companion data</param> public void SendShipyardData(JObject dataObject) { Int32 objectCount = 0; Boolean writeToFile = false; StreamWriter writer = null; String debugFile = @"C:\temp\shipyard_ibe.csv"; SQL.Datasets.dsEliteDB.tbshipyardbaseDataTable baseData; try { if(m_SenderIsActivated && m_lDBCon.getIniValue<Boolean>(IBE.EDDN.EDDNView.DB_GROUPNAME, "EDDNPostShipyardData", 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_Shipyard_Station.Item1 != systemName + "|" + stationName) || ((DateTime.Now - m_ID_of_Shipyard_Station.Item2).TotalMinutes >= 60)) { StringBuilder shipyardStringEDDN = new StringBuilder(); shipyardStringEDDN.Append(String.Format("\"message\": {{")); shipyardStringEDDN.Append(String.Format("\"systemName\":\"{0}\", ",dataObject.SelectToken("lastSystem.name").ToString())); shipyardStringEDDN.Append(String.Format("\"stationName\":\"{0}\", ",dataObject.SelectToken("lastStarport.name").ToString())); shipyardStringEDDN.Append(String.Format("\"timestamp\":\"{0}\", ", DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture))); shipyardStringEDDN.Append(String.Format("\"ships\": [")); if(writeToFile) { if(File.Exists(debugFile)) File.Delete(debugFile); writer = new StreamWriter(File.OpenWrite(debugFile)); } if(dataObject.SelectToken("lastStarport.ships", false) != null) { baseData = new SQL.Datasets.dsEliteDB.tbshipyardbaseDataTable(); m_lDBCon.Execute("select * from tbShipyardBase;", (System.Data.DataTable)baseData); List<JToken> allShips = dataObject.SelectTokens("lastStarport.ships.shipyard_list.*").ToList(); allShips.AddRange(dataObject.SelectTokens("lastStarport.ships.unavailable_list.[*]").ToList()); foreach (JToken outfittingItem in allShips) { if(!String.IsNullOrWhiteSpace(outfittingItem.Value<String>("name"))) { ShipyardObject shipyardItem = cmpConverter.GetShipFromFDevIDs(baseData, outfittingItem, false); //ShipyardObject shipyardItem = cmpConverter.GetShipFromCompanion(outfittingItem, false); if(writeToFile) { writer.WriteLine(String.Format("{0},{1},{2},{3}", systemName, stationName, shipyardItem.Name, DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture))); } shipyardStringEDDN.Append(String.Format("\"{0}\", ", outfittingItem.Value<String>("name"))); objectCount++; } } shipyardStringEDDN.Remove(shipyardStringEDDN.Length-2, 2); shipyardStringEDDN.Append("]}"); if(objectCount > 0) { _Send_Shipyard.Enqueue(shipyardStringEDDN); _SendDelayTimer_Shipyard.Start(); m_ID_of_Shipyard_Station = new Tuple<String, DateTime>(systemName +"|" + stationName, DateTime.Now); } if(writeToFile) { writer.Close(); writer.Dispose(); } } } } } catch (Exception ex) { throw new Exception("Error while extracting shipyard data for eddn", ex); } }