using HtmlAgilityPack;

namespace RobertMart
{
    public class CommodityTracker
    {
        public static readonly Dictionary<string, decimal> Commodities = new Dictionary<string, decimal>()
        {
            {"Eggs", 6.00m},
            {"Gas", 3.000m},
        };
        
        private const string EggsSourceUri = "https://tradingeconomics.com";
        private const string GasSourceUri = "https://gasprices.aaa.com/";
        
        public static async void FetchCommodities()
        {
            try
            {
                var client = new HttpClient();
                var httpRequest = new HttpRequestMessage
                {
                    Method = HttpMethod.Get,
                    RequestUri = new Uri($"{EggsSourceUri}/commodity/eggs-us"),
                    Headers =
                    {
                        {"Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"},
                        { "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" },
                    }
                };
                var html = await client.SendAsync(httpRequest).Result.Content.ReadAsStringAsync();
                var doc = new HtmlDocument();
                doc.LoadHtml(html);
                var tableNode = doc.DocumentNode.SelectSingleNode("//table[@class='table']");
                var tr = tableNode.SelectSingleNode("./tr");
                var priceNode = tr.SelectSingleNode("./td[2]");
                var price = decimal.Parse(priceNode.InnerText.Trim()); 
                Commodities["Eggs"] = price;

                var gasHttpRequest = new HttpRequestMessage
                {
                    Method = HttpMethod.Get,
                    RequestUri = new Uri(GasSourceUri),
                    Headers =
                    {
                        { "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" },
                        {
                            "User-Agent",
                            "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
                        },
                    },
                };
                
                var gasClient = new HttpClient();
                var gasHtml = await gasClient.SendAsync(gasHttpRequest).Result.Content.ReadAsStringAsync();
                var gasDoc = new HtmlDocument();
                gasDoc.LoadHtml(gasHtml);
                var gasPriceNode = gasDoc.DocumentNode.SelectSingleNode("//p[@class='numb']");
                var stringGasPrice = gasPriceNode.SelectSingleNode("text()").InnerText.Trim();
                var gasPrice = decimal.Parse(stringGasPrice.Replace("$", ""));
                Commodities["Gas"] = gasPrice;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
    }
}