Esempio n. 1
0
        bool SaveObservation(ItemAnalysis analysis, Item item)
        {
            var recentObs = _marketObservationRepository.GetByItemAndDate(item, DateTime.Now - ObservationSaveThreshold,
                                                                          DateTime.Today.AddDays(1));

            if (recentObs.Any())
            {
                return(false);
            }

            var obs = new MarketObservation();

            obs.Item      = item;
            obs.EntryTime = DateTime.Now;
            obs.High      = analysis.Highest;
            obs.Low       = analysis.Lowest;

            obs.LastSalePrice = analysis.LastPrice;
            obs.Price         = analysis.MarketPrice;

            obs.TotalTrades   = analysis.TotalTrades;
            obs.UnitsOnMarket = analysis.CurrentListings;

            _marketObservationRepository.Save(obs);
            return(true);
        }
        public MarketObservationParser(MarketObservationParserSettings settings, ItemRepository itemRepository,
                                       string contents)
        {
            var lines        = Regex.Split(contents, Environment.NewLine).Where(p => !string.IsNullOrEmpty(p));
            var observations = new List <MarketObservation>();

            foreach (var l in lines.Skip(settings.HasHeader ? 1 : 0))
            {
                var fields   = l.Split(',');
                var obs      = new MarketObservation();
                var itemName = fields[settings.ItemNamePosition];
                var item     = itemRepository.GetByName(itemName).FirstOrDefault();
                if (item == null)
                {
                    throw new Exception($"Could not find item {itemName}");
                }

                obs.Item          = item;
                obs.EntryTime     = DateTime.Parse(fields[settings.EntryTimePosition]);
                obs.Price         = int.Parse(fields[settings.PricePosition]);
                obs.LastSalePrice = int.Parse(fields[settings.LastSalePricePosition]);
                obs.High          = int.Parse(fields[settings.HighPosition]);
                obs.Low           = int.Parse(fields[settings.LowPosition]);
                obs.TotalTrades   = int.Parse(fields[settings.TotalTradesPosition]);
                obs.UnitsOnMarket = int.Parse(fields[settings.UnitsOnMarketPosition]);
                obs.MaxPrice      = int.Parse(fields[settings.MaxPricePosition]);
                obs.MinPrice      = int.Parse(fields[settings.MinPricePosition]);
                observations.Add(obs);
            }

            Observations = observations;
        }