private async Task <int> InsertDataSetModelAsync(IApiDataModel m)
        {
            var newDataSetModel = new DataSetModel
            {
                Name         = m.CollectionName,
                SequenceType = m.SequenceType,
            };

            await _analyzerDbContext.DataSets.AddAsync(newDataSetModel);

            await _analyzerDbContext.SaveChangesAsync();

            return(newDataSetModel.Id);
        }
Ejemplo n.º 2
0
        protected async Task <AnalyzerResult> LoadAsync(string ticker, string outputSize)
        {
            ticker = ticker.ToUpperInvariant();


            var stock = await _dbContext.Stocks.FirstOrDefaultAsync(s => s.Id == ticker);

            var initialStockLoad = false;

            if (stock == null)
            {
                stock = _dbContext.Stocks.Add(new Stock()
                {
                    Id      = ticker,
                    MinDate = DateTime.MaxValue,
                    MaxDate = DateTime.MinValue
                });
                initialStockLoad = true;
            }
            if (stock.MaxDate == DateTime.Today.AddDays(-1) && !IsMarketClosed)
            {
                return(AnalyzerResult.Sucess());
            }

            var test = 0;

            try
            {
                var quotes = await _loader.LoadAsync(ticker, outputSize);

                foreach (var quote in quotes.OrderBy(s => s.Date).Where(q => initialStockLoad || q.Date <stock.MinDate || q.Date.Date> stock.MaxDate.Date))
                {
                    if (quote.Date == DateTime.Today && !IsMarketClosed)
                    {
                        continue;
                    }

                    _dbContext.StockQuotes.Add(quote);
                    test++;

                    stock.MinDate = stock.MinDate > quote.Date ? quote.Date : stock.MinDate;
                    stock.MaxDate = stock.MaxDate < quote.Date ? quote.Date : stock.MaxDate;
                }
            }
            catch (Exception e)
            {
                return(AnalyzerResult.Fail(e.Message));
            }

            stock.LastLoadDate = DateTime.UtcNow;
            await _dbContext.SaveChangesAsync();

            return(AnalyzerResult.Sucess());
        }