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,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|