public async Task <List <ReportTranItem> > GetStockReportAsync(ReportTransReq req) { var stock = _stockRepo .GetTransGroupByStock(req) .FirstOrDefault(x => x.TranType == "Buy"); if (stock == null) { return(new List <ReportTranItem>()); } await EnsuredStockHistory(new DateRange() { StartDate = stock.MinTranTime, EndDate = DateTime.Now, }, stock.StockId); var report = new List <ReportTranItem>(); foreach (var day in new DateRange(stock.MinTranTime, DateTime.Now).GetRangeByDay()) { var data = _stockRepo.GetStockHistoryData(day, stock.StockId) !; if (data.ClosingPrice == 0) { continue; } var stockDay = ValueHelper.Assign(stock, new ReportTranItem()); stockDay.MinTranTime = day; stockDay.CurrentPrice = data.ClosingPrice; stockDay.CurrTotalPrice = data.ClosingPrice * stock.NumberOfShare; if (stockDay.CurrentPrice != 0) { stockDay.Profit = stock.Balance + stockDay.CurrTotalPrice; } report.Add(stockDay); } return(report); }