private Commodity ParseCommodity(Db context, CommodityCategory category, JToken commodityJson)
        {
            var name = commodityJson.Value<string>("name");
            var id = commodityJson.Value<int>("id");

            var commodity = context.Commodities.FirstOrDefault(x => x.Id == id);
            if (commodity == null)
            {
                commodity = new Commodity {Id = id};
                context.Commodities.Add(commodity);
            }

            commodity.Name = name;
            commodity.Category = category;

            return commodity;
        }
        private CommodityAveragePrice ParserAveragePrice(Db context, Commodity commodity, DateTime time,
            JToken commodityJson)
        {
            var averagePrice = commodityJson.Value<int?>("average_price");

            if (averagePrice == null) return null;

            var lastAverage = commodity.AveragePrices.OrderBy(x => x.Date).LastOrDefault();

            if (lastAverage == null || (lastAverage.Date < time && lastAverage.Price != averagePrice))
            {
                var price = new CommodityAveragePrice {Commodity = commodity, Date = time, Price = averagePrice.Value};
                context.CommodityAveragePrices.Add(price);

                return price;
            }

            return lastAverage;
        }