示例#1
0
        public async Task Split(string[] symbols)
        {
            var lastSplitDate = _context.Split.Count() > 0 ? _context.Split.Max(s => s.Date).AddDays(1) : DateTimeOffset.Now.Date;

            var dataProvider = new FMProvider();

            try
            {
                var fmSplits = await dataProvider.GetSplits(lastSplitDate);

                List <Split> newSplits = new List <Split>();

                foreach (var split in fmSplits.Where(s => symbols.Contains(s.symbol)))
                {
                    newSplits.Add(new Split()
                    {
                        StockId     = _companyService.Get(split.symbol).StockId,
                        Date        = DateTime.Parse(split.date),
                        Denominator = split.denominator,
                        Numerator   = split.numerator
                    });
                }
                _context.Split.AddRange(newSplits);
                _context.SaveChanges();

                foreach (var split in newSplits)
                {
                    await _stockService.Split(split.StockId, split.Numerator / split.Denominator);
                }
            }
            catch (Exception ex)
            {
                _logger.LogWarning("ERROR " + ex.Message);
            }
        }