94 lines
3.5 KiB
C#
Raw Normal View History

2021-09-19 18:29:16 +01:00
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<string, Prices> priceFile = new Dictionary<string, Prices>();
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];
2021-10-12 23:19:50 +01:00
LoggingHelpers.LogError($"Item already exists: {bsgId} {name}. item that already exists: {existingItem.TemplateId} {existingItem.Name}");
2021-09-19 18:29:16 +01:00
}
else
{
priceFile.Add(bsgId, new Prices
{
Name = name,
Price = price,
Average24hPrice = avg24hPrice,
Average7DaysPrice = avg7daysPrice,
//Trader = trader,
//BuyPackPrice = buyBackPrice,
//Currency = currency,
TemplateId = bsgId
});
2021-10-12 23:19:50 +01:00
LoggingHelpers.LogSuccess($"Adding item: {bsgId} {name}");
2021-09-19 18:29:16 +01:00
}
}
}
}
if (!priceFile.ContainsKey(key))
{
return null;
}
return priceFile[key];
}
private static string GetCurrencyType(string input)
{
return input switch
{
"₽" => "Rouble",
"$" => "Dollar",
"€" => "Euro",
_ => string.Empty,
};
}
}
}