Example #1
0
        public async Task <StockSectorModel> AddSector(StockSectorModel sectorModel)
        {
            var sector = new STOCK_SECTOR
            {
                SECTOR_NAME = sectorModel.SectorName
            };

            dbContext.StockSectors.Add(sector);
            await dbContext.SaveChangesAsync();

            return(new StockSectorModel {
                SectorName = sector.SECTOR_NAME, SectorId = sector.STOCK_SECTOR_ID
            });
        }
Example #2
0
        internal async Task ProcessFile(string file)
        {
            var reader      = new StreamReader(file);
            var stocks      = new List <StockModel>();
            var stockQuotes = new List <StockQuoteModel>();
            var sectors     = new List <StockSectorModel>();
            int?sectorId    = null;

            using var dbContext = CreateDbContext();

            while (!reader.EndOfStream)
            {
                var line   = reader.ReadLine();
                var values = line.Split(',');
                var symbol = values[0];
                if (symbol.Contains("^"))
                {
                    // sector
                    //var sector = await stockSectorService.GetSector(symbol);
                    var sector = await dbContext.StockSectors.SingleOrDefaultAsync(s => s.SECTOR_NAME == symbol);

                    if (sector == null)
                    {
                        sector = new STOCK_SECTOR
                        {
                            SECTOR_NAME = symbol
                        };
                        //sector = await stockSectorService.AddSector(sector);
                        dbContext.StockSectors.Add(sector);
                        await dbContext.SaveChangesAsync();
                    }

                    sectorId = sector.STOCK_SECTOR_ID;
                }

                // insert to stock
                //var stock = await stockService.GetStock(symbol);
                var stock = await dbContext.Stocks.SingleOrDefaultAsync(s => s.SYMBOL == symbol);

                if (stock == null)
                {
                    var stockName = "";
                    if (values.Length == 7)
                    {
                        stockName = values[1];
                    }
                    stock = new STOCK
                    {
                        SYMBOL    = symbol,
                        SECTOR_ID = sectorId,
                        NAME      = stockName
                    };
                    dbContext.Stocks.Add(stock);
                    await dbContext.SaveChangesAsync();

                    //stock = await dbContext.Stocks.SingleOrDefaultAsync(s => s.SYMBOL == symbol);
                }

                if (DateTime.TryParse(values[1], out var tradeDate))
                {
                    decimal?netForeignBuy = null;
                    if (values.Length == 8)
                    {
                        netForeignBuy = decimal.Parse(values[7]);
                    }
                    dbContext.StockQuotes.Add(new STOCK_QUOTE
                    {
                        TRADE_DATE      = tradeDate,//DateTime.Parse(values[1]),
                        OPEN            = decimal.Parse(values[2]),
                        HIGH            = decimal.Parse(values[3]),
                        LOW             = decimal.Parse(values[4]),
                        CLOSE           = decimal.Parse(values[5]),
                        VOLUMNE         = long.Parse(values[6]),
                        NET_FOREIGN_BUY = netForeignBuy,
                        STOCK_ID        = stock.STOCK_ID
                    });
                    await dbContext.SaveChangesAsync();
                }
            }
        }