public ValuationViewModel GenerateValuationViewModel(ValuationSummary summary, Highcharts chart) { ValuationViewModel model = new ValuationViewModel(); //set the valuation summary model.ValuationSummary = summary; model.Chart = chart; //set the intraday change by getting the last value from the dictionary model.IntradayChange = Math.Round(summary.IntraDayChangeValuationDetailSummary.Values.Last(), 2).ToString(); model.PercentageChange = Math.Round(((summary.IntraDayChangeValuationDetailSummary.Values.Last() / summary.ValuationDetailSummary.Values.Last()) * 100), 2).ToString(); model.PortfolioValue = summary.ValuationDetailSummary.Values.Last().ToString(); model.IntradayHigh = Math.Round(summary.IntraDayChangeValuationDetailSummary.Values.Max(), 2).ToString(); model.IntradayLow = Math.Round(summary.IntraDayChangeValuationDetailSummary.Values.Min(), 2).ToString(); return(model); }
public async Task <IHttpActionResult> Intraday(int valuationId, int portfolioId, DateTime begtime, DateTime endtime) { ValuationSummary summary = new ValuationSummary(); summary.BegTime = begtime; summary.EndTime = endtime; summary.Portfolio = await portfoliolRepo.GetPortoflioAsync(portfolioId); summary.ValuationDetail = await valuationDetailRepo.GetValuationDetailsAsync(portfolioId, valuationId, begtime, endtime); summary.ValuationDetailSummary = summary.ValuationDetail.GroupBy(x => x.ValuationTime).ToDictionary(x => x.Key, x => x.Sum(global => global.PositionValue)); // summary.IntraDayChangeValuationDetailSummary = GenerateIntraDayChangeValuationDetailSummary(summary.ValuationDetailSummary); summary.IntraDayChangeValuationDetailSummary = summary.ValuationDetail.GroupBy(x => x.ValuationTime).ToDictionary(x => x.Key, x => x.Sum(y => y.Quantity * y.IntradayChange)); if (summary == null) { return(NotFound()); } return(Ok(summary)); }