using MarketPriceLookup.Helpers; using Microsoft.VisualBasic.FileIO; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace MarketPriceLookup.Common.Helpers { public static class MarketPricesHelper { private static readonly Dictionary priceFile = new Dictionary(); public static Prices GetItemPrice(string key) { // parse csv if dictionary is empty if (priceFile.Count == 0) { var workingPath = Directory.GetCurrentDirectory(); var inputPath = $"{workingPath}//input"; var filePath = $"{inputPath}//marketPrices.csv"; DiskHelpers.CreateDirIfDoesntExist(inputPath); using (TextFieldParser csvParser = new TextFieldParser(filePath)) { csvParser.CommentTokens = new string[] { "#" }; csvParser.SetDelimiters(new string[] { "," }); csvParser.HasFieldsEnclosedInQuotes = true; // Skip the row with the column names csvParser.ReadLine(); csvParser.ReadLine(); while (!csvParser.EndOfData) { // Read current line fields, pointer moves to the next line. string[] fields = csvParser.ReadFields(); //string uid = fields[0]; string name = fields[1]; int price = int.Parse(fields[2]); int avg24hPrice = int.Parse(fields[3]); int avg7daysPrice = int.Parse(fields[4]); //string trader = fields[5]; //int buyBackPrice = int.Parse(fields[6]); //string currency = GetCurrencyType(fields[7]); string bsgId = fields[8]; if (priceFile.ContainsKey(bsgId)) { //oh no var existingItem = priceFile[bsgId]; LoggingHelpers.LogToConsole($"Item already exists: {bsgId} {name}. item that already exists: {existingItem.TemplateId} {existingItem.Name}"); } else { priceFile.Add(bsgId, new Prices { Name = name, Price = price, Average24hPrice = avg24hPrice, Average7DaysPrice = avg7daysPrice, //Trader = trader, //BuyPackPrice = buyBackPrice, //Currency = currency, TemplateId = bsgId }); } } } } if (!priceFile.ContainsKey(key)) { return null; } return priceFile[key]; } private static string GetCurrencyType(string input) { return input switch { "₽" => "Rouble", "$" => "Dollar", "€" => "Euro", _ => string.Empty, }; } } }