/// <summary> /// Save calculated values in DTO buffer /// </summary> /// <param name="savePortfolioFundDTO"></param> /// <param name="cashPerFund"></param> /// <param name="lastTradeDay"></param> /// <param name="fundPrice"></param> /// <param name="NewsharesNum"></param> /// <param name="thisMonthsSharesNum"></param> /// <param name="thisMonthsSharesVal"></param> private void SaveDtoPortFundShares( PortfolioFundDTO savePortfolioFundDTO, decimal cashPerFund, string lastTradeDay, FundPrice fundPrice, decimal NewsharesNum, decimal thisMonthsSharesNum, decimal thisMonthsSharesVal) { savePortfolioFundDTO.SharesNum = thisMonthsSharesNum; savePortfolioFundDTO.SharesValue = thisMonthsSharesVal; savePortfolioFundDTO.SharesTradeDay = lastTradeDay; savePortfolioFundDTO.SharesFundPriceId = fundPrice.Id; savePortfolioFundDTO.NewSharesNum = NewsharesNum; savePortfolioFundDTO.NewSharesValue = cashPerFund; savePortfolioFundDTO.UpdatedOnUTC = DateTime.UtcNow; }
/// <summary> /// Get a single fund latest closing price relative to the requested year month /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="fundId"></param> /// <returns></returns> private FundPrice GetFundPriceForCurrentMonth(int year, int month, int fundId) { FundPrice fundPriceToRet = null; //Find last trade day and include +1 month when the awarding occurs var lastMonthDay = new DateTime(year, month, 1).AddMonths(2).AddDays(-1).ToString("yyyyMMdd"); var lastTradeDay = db.FundPrices .Where(fp => fp.FundId == fundId && string.Compare(fp.YearMonthDay, lastMonthDay, StringComparison.Ordinal) <= 0) .Select(fp => fp.YearMonthDay) .Max(); string locLastTradeDay = lastTradeDay; // Find latest closing price fundPriceToRet = db.FundPrices .Single(fp => fp.FundId == fundId && fp.YearMonthDay == locLastTradeDay); return(fundPriceToRet); }