Esempio n. 1
0
    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);
    }