public IActionResult GetTotalPerform(int id, string dateParm) { //select records from StockTransaction table based on date parameter //_stockTransRepo.FilterStockTrans() //return _stockTransRepo.FilterStockTrans(id, dateParm); var result = _stockTransRepo.FilterStockTrans(id, dateParm); TransMap stockTransMap = null; lstTransMap = new List <TransMap>(); foreach (var trans in result) { stockTransMap = new TransMap() { Id = trans.Id, TransType = trans.TransType.ToUpper(), TransDate = trans.TransDate, Amount = trans.Amount, NumShares = trans.NumShares, StockName = trans.StockName, Ticker = trans.Ticker, StopLoss = trans.StopLoss, TotalPortfolio = trans.StockUser.TotPortfolio, TotEquity = trans.StockUser.TotEquity, TotCash = trans.StockUser.TotCash }; lstTransMap.Add(stockTransMap); } //TODO: DoDataCalculations() return(Ok(DoDataConversions(lstTransMap))); }
public TransMap DoDataConversions(List <TransMap> conversionMap) { TransMap newConversionMap = new TransMap(); //get total portfolio balance newConversionMap.TotalPortfolio = conversionMap.First().TotalPortfolio; //get equity balance newConversionMap.TotEquity = conversionMap.First().TotEquity; //get cash balance newConversionMap.TotCash = conversionMap.First().TotCash; // get user Id newConversionMap.Id = conversionMap.First().Id; foreach (TransMap trans in conversionMap) { if (trans.TransType == "BUY") { newConversionMap.Amount -= (trans.Amount - Commission); //total profit(loss) newConversionMap.NumSharesPurch += trans.NumShares; //# of buys newConversionMap.TotCash -= (trans.Amount - Commission); newConversionMap.TotEquity += (trans.Amount - Commission); } else { newConversionMap.Amount += (trans.Amount - Commission); //total profit(loss) newConversionMap.NumSharesSold += trans.NumShares; //# of sells newConversionMap.TotCash += (trans.Amount - Commission); newConversionMap.TotEquity -= (trans.Amount - Commission); } newConversionMap.TotCommission += Commission; //total commission newConversionMap.StopLoss += trans.StopLoss; } //calculate total cash //newConversionMap.TotCash += newConversionMap.Amount; //get average shares newConversionMap.AvgShares = newConversionMap.NumSharesPurch / conversionMap.Count; //get average risk newConversionMap.AvgRisk = newConversionMap.StopLoss / conversionMap.Count; //get rate newConversionMap.Rate = newConversionMap.Amount / (newConversionMap.TotalPortfolio - newConversionMap.Amount); return(newConversionMap); }