/// <summary> /// imports prices from a JSON companion data object /// </summary> /// <param name="companionData">JSON object with companion data</param> /// <returns></returns> public Int32 ImportPrices(Newtonsoft.Json.Linq.JObject companionData) { String system; String starPort; Int32 commodityCount = 0; List<String> csvStrings = new List<string>(); List<EDStation> stationData = null; try { system = companionData["lastSystem"]["name"].ToString(); starPort = companionData["lastStarport"]["name"].ToString(); foreach (Newtonsoft.Json.Linq.JToken commodity in companionData.SelectTokens("lastStarport.commodities[*]")) { if(!commodity.Value<String>("categoryname").Equals("NonMarketable", StringComparison.InvariantCultureIgnoreCase)) { CsvRow csvData = new CsvRow(); csvData.SystemName = system; csvData.StationName = starPort; csvData.StationID = String.Format("{0} [{1}]", starPort, system); csvData.CommodityName = commodity.Value<String>("name"); csvData.SellPrice = commodity.Value<Int32>("sellPrice"); csvData.BuyPrice = commodity.Value<Int32>("buyPrice"); csvData.Demand = commodity.Value<Int32>("demand"); csvData.Supply = commodity.Value<Int32>("stock"); csvData.SampleDate = DateTime.Now; if((!String.IsNullOrEmpty(commodity.Value<String>("demandBracket"))) && (commodity.Value<Int32>("demandBracket") > 0)) csvData.DemandLevel = (String)Program.Data.BaseTableIDToName("economylevel", commodity.Value<Int32>("demandBracket") - 1, "level"); else csvData.DemandLevel = null; if((!String.IsNullOrEmpty(commodity.Value<String>("stockBracket"))) && (commodity.Value<Int32>("stockBracket") > 0)) csvData.SupplyLevel = (String)Program.Data.BaseTableIDToName("economylevel", commodity.Value<Int32>("stockBracket") - 1, "level"); else csvData.SupplyLevel = null; csvData.SourceFileName = ""; csvData.DataSource = ""; csvStrings.Add(csvData.ToString()); commodityCount++; } } if(csvStrings.Count > 0) stationData = ImportPricesFromCSVStrings(csvStrings.ToArray(), SQL.EliteDBIO.enImportBehaviour.OnlyNewer, SQL.EliteDBIO.enDataSource.fromIBE); return commodityCount; } catch (Exception ex) { throw new Exception("Error while importing prices from companion interface", ex); } }
private String[] ConvertCommodityV3_To_CSVRows(JObject commodityV3Data) { String system; String starPort; Int32 commodityCount = 0; List<String> csvStrings = new List<string>(); try { system = commodityV3Data["message"]["systemName"].ToString(); starPort = commodityV3Data["message"]["stationName"].ToString(); foreach (Newtonsoft.Json.Linq.JToken commodity in commodityV3Data.SelectTokens("message.commodities[*]")) { CsvRow csvData = new CsvRow(); csvData.SystemName = system; csvData.StationName = starPort; csvData.StationID = String.Format("{0} [{1}]", starPort, system); csvData.CommodityName = commodity.Value<String>("name"); csvData.SellPrice = commodity.Value<Int32>("sellPrice"); csvData.BuyPrice = commodity.Value<Int32>("buyPrice"); csvData.Demand = commodity.Value<Int32>("demand"); csvData.Supply = commodity.Value<Int32>("stock"); csvData.SampleDate = DateTime.Now; if((!String.IsNullOrEmpty(commodity.Value<String>("demandBracket"))) && (commodity.Value<Int32>("demandBracket") > 0)) csvData.DemandLevel = (String)Program.Data.BaseTableIDToName("economylevel", commodity.Value<Int32>("demandBracket") - 1, "level"); else csvData.DemandLevel = null; if((!String.IsNullOrEmpty(commodity.Value<String>("stockBracket"))) && (commodity.Value<Int32>("stockBracket") > 0)) csvData.SupplyLevel = (String)Program.Data.BaseTableIDToName("economylevel", commodity.Value<Int32>("stockBracket") - 1, "level"); else csvData.SupplyLevel = null; csvData.SourceFileName = ""; csvData.DataSource = ""; csvStrings.Add(csvData.ToString()); commodityCount++; } return csvStrings.ToArray(); } catch (Exception ex) { throw new Exception("Error while converting commodity v3 data to csv rows", ex); } }