public BuyAndHoldTransactionDto MapToDto(BuyAndHoldTransactionViewModel viewModel) { //decimal value; //double shares; //int xref; //DateTime validFrom; //DateTime validTo; //DateTime transactionDate; //DateTime sellDate; //int sellId; //int securityId; //int originalSecurityId; //int mergerId; //int spinOffId; //int splitId; var dto = new BuyAndHoldTransactionDto { Id = viewModel.Id, OriginalTransactionId = viewModel.OriginalTransactionId.ToNullableInt(), BuyAndHoldRawId = viewModel.BuyAndHoldRawId, TransactionDate = viewModel.TransactionDate.ToNullableDateTime(), SecurityId = viewModel.SecurityId.ToNullableInt(), //OriginalSecurityId = viewModel.OriginalSecurityId.ToNullableInt(), //TickerSymbol = viewModel.TickerSymbol, //OriginalTickerSymbol = viewModel.OriginalTickerSymbol, Period = viewModel.Period, //TransactionType = viewModel.TransactionType, TransactionTypeId = viewModel.TransactionTypeId, TransactionApplied = viewModel.TransactionApplied.ToNullableBool(), DividendAmount = viewModel.DividendAmount.ToNullableDecimal(), AmountInvested = viewModel.AmountInvested.ToNullableDecimal(), NumberShares = viewModel.NumberShares.ToNullableDouble(), BuyPrice = viewModel.BuyPrice.ToNullableDecimal(), Split = viewModel.Split, ValidFrom = viewModel.ValidFrom.ToNullableDateTime(), ValidTo = viewModel.ValidTo.ToNullableDateTime(), SellDate = viewModel.SellDate.ToNullableDateTime(), SellId = viewModel.SellId.ToNullableInt(), Notes = viewModel.Notes, Url1 = viewModel.Url1, Url2 = viewModel.Url2, Url3 = viewModel.Url3, MergerId = viewModel.MergerId.ToNullableInt(), SpinOffId = viewModel.SpinOffId.ToNullableInt(), SplitId = viewModel.Split.ToNullableInt(), } ; return dto; }
public BuyAndHoldTransactionDto MapToDto(BuyAndHoldTransaction model) { var dto = new BuyAndHoldTransactionDto { Id = model.Id, BuyAndHoldRawId = model.RawTransactionId, OriginalTransactionId = model.OriginalTransactionId, TransactionDate = model.TransactionDate, TickerSymbol = model.TickerSymbol, SecurityId = model.SecurityId, OriginalTickerSymbol = model.OriginalTickerSymbol, OriginalSecurityId = model.OriginalSecurityId, Period = model.Period, TransactionApplied = model.TransactionApplied ?? false, DividendAmount = model.DividendAmount, AmountInvested = model.AmountInvested, NumberShares = model.NumberShares, BuyPrice = model.BuyPrice, Split = model.Split, ValidFrom = model.ValidFrom, ValidTo = model.ValidTo, SellDate = model.SellDate, SellId = model.SellId, Notes = model.Notes, TransactionType = model.TransactionType, TransactionTypeId = model.TransactionTypeId, MergerId = model.NewMergerId, SpinOffId = model.NewSpinOffId, SplitId = model.SplitId, }; //if (model.OriginalTransaction != null) //{ // dto.OriginalTransaction = MapToDto(model.OriginalTransaction); // //TODO - What is this for? // //if (!model.BuyPrice.HasValue) // //{ // // dto.BuyPrice = model.OriginalTransaction.BuyPrice; // //} // //if (!model.NumberShares.HasValue) // //{ // // dto.NumberShares = model.OriginalTransaction.NumberShares; // //} //} return dto; }
public static string CalculateBuyPrice(BuyAndHoldTransactionDto transaction, double splitFactor) { if (transaction.BuyPrice.HasValue) { if (splitFactor != 1) { var buyPrice = transaction.BuyPrice.Value / decimal.Parse(splitFactor.ToString()); return string.Format("{0} [{1}]", buyPrice.ToString("C"), transaction.BuyPrice.Value.ToString("C")); } else { return transaction.BuyPrice.Value.ToString("C"); } } return string.Empty; }
public BuyAndHoldTransactionViewModel MapToViewModel(BuyAndHoldTransactionDto dto) { var ViewModel = new BuyAndHoldTransactionViewModel { Id = dto.Id, BuyAndHoldRawId = dto.BuyAndHoldRawId, OriginalTransactionId = dto.OriginalTransactionId.ToString(), TransactionDate = dto.TransactionDate.ToShortDateString(), SecurityId = dto.SecurityId.ToString(), //TickerSymbol = dto.TickerSymbol, //OriginalTickerSymbol = dto.OriginalTickerSymbol, //OriginalSecurityId = dto.OriginalSecurityId.ToString(), Period = dto.Period, //TransactionType = dto.TransactionType, TransactionTypeId = dto.TransactionTypeId, TransactionApplied = dto.TransactionApplied.ToString(), DividendAmount = dto.DividendAmount.ToString(), AmountInvested = dto.AmountInvested.ToString(), NumberShares = dto.NumberShares.ToString(), BuyPrice = dto.BuyPrice.ToString(), Split = dto.Split, ValidFrom = dto.ValidFrom.ToShortDateString(), ValidTo = dto.ValidTo.ToShortDateString(), SellDate = dto.SellDate.ToShortDateString(), SellId = dto.SellId.ToString(), Notes = dto.Notes, Url1 = dto.Url1, Url2 = dto.Url2, Url3 = dto.Url3, MergerId = dto.MergerId.ToString(), SpinOffId = dto.SpinOffId.ToString(), SplitId = dto.SplitId.ToString(), }; return ViewModel; }
public BuyAndHoldTransaction CreateBuyAndHoldTransaction(BuyAndHoldTransactionDto dto) { var context = new InvestContext(); var model = new BuyAndHoldTransaction(); // db.BuyAndHoldTransactions.FirstOrDefault(p => p.Id == dto.Id); model.RawTransactionId = dto.BuyAndHoldRawId; model.OriginalTransactionId = dto.OriginalTransactionId; model.TransactionDate = dto.TransactionDate; model.SecurityId = dto.SecurityId.HasValue ? dto.SecurityId.Value : 0; model.TickerSymbol = dto.TickerSymbol; model.OriginalSecurityId = dto.OriginalSecurityId.HasValue ? (int?)dto.OriginalSecurityId.Value : null; model.OriginalTickerSymbol = dto.OriginalTickerSymbol; model.Period = dto.Period; model.TransactionType = dto.TransactionType; model.TransactionTypeId = dto.TransactionTypeId; model.TransactionApplied = dto.TransactionApplied; model.DividendAmount = dto.DividendAmount; model.AmountInvested = dto.AmountInvested; model.NumberShares = dto.NumberShares; model.BuyPrice = dto.BuyPrice; model.Split = dto.Split; model.ValidFrom = dto.ValidFrom; model.ValidTo = dto.ValidTo; model.SellId = dto.SellId; model.SellDate = dto.SellDate; model.Notes = dto.Notes; model.Url1 = dto.Url1; model.Url2 = dto.Url2; model.Url3 = dto.Url3; model.NewMergerId = dto.MergerId; model.NewSpinOffId = dto.SpinOffId; context.BuyAndHoldTransactions.Add(model); context.SaveChanges(); return model; }
private BuyAndHoldTransactionViewModel BuildTransactionObject(BuyAndHoldTransactionDto transactionDto, NavDto nav, List<BuyAndHoldSplitDto> splits, bool seperateReinvest) { var currentShareValue = double.Parse(nav.Nav.ToString());// GetLatestTickersNav("TWCUX"); // var transactionDate = transaction.TransactionDate.Value; var splitFactor = CalculateSplitFactor(splits, transactionDto.TransactionDate.Value); var currentShares = CalculateCurrentShares(transactionDto, splitFactor); var transaction = new BuyAndHoldTransactionViewModel { Id = transactionDto.Id, TransactionDate = transactionDto.TransactionDate.Value.ToShortDateString(), SplitRatio = splitFactor != 1 ? Math.Round(splitFactor, 4).ToString() : string.Empty, // TransactionType = transactionDto.TransactionType, TransactionTypeId = transactionDto.TransactionTypeId, NumberShares = CalculateShares(transactionDto, splitFactor, currentShares), }; if (transactionDto.OriginalTransaction != null) { transaction.OriginalTransaction = BuildTransactionObject(transactionDto.OriginalTransaction, nav, splits, seperateReinvest); } //var shares = transaction.NumberShares; if (IsMergerTransaction(transactionDto.TransactionTypeId) && transactionDto.TransactionApplied.ToBool()) { } else { transaction.BuyPrice = CalculateBuyPrice(transactionDto, splitFactor); var amountInvested = transactionDto.AmountInvested.HasValue ? double.Parse(transactionDto.AmountInvested.Value.ToString()) : 0; if (transactionDto.TransactionType == "Buy" || !seperateReinvest) { transaction.AmountInvested = amountInvested.ToString("C"); } else if (amountInvested != 0) { transaction.AmountReinvested = amountInvested.ToString("C"); } transaction.DividendAmount = transactionDto.DividendAmount.HasValue ? transactionDto.DividendAmount.Value.ToString("C") : ""; transaction.TransactionType = transactionDto.TransactionType.ToString(); if (transactionDto.TransactionType != null && transactionDto.TransactionType == "Split") { transaction.TransactionType += " - " + transactionDto.Split; } } return transaction; }
private static string CalculateShares(BuyAndHoldTransactionDto transaction, double splitFactor, double currentShares) { if (transaction.NumberShares.HasValue && transaction.TransactionType != "Split") { if (splitFactor != 1) { return string.Format("{0} [{1}]", currentShares.ToString("F3"), transaction.NumberShares.Value.ToString("F3")); } return transaction.NumberShares.Value.ToString("F3"); } return string.Empty; }
private static double CalculateCurrentShares(BuyAndHoldTransactionDto transaction, double splitFactor) { if (transaction.NumberShares.HasValue && transaction.TransactionType != "Split") { return splitFactor != 1 ? transaction.NumberShares.Value * splitFactor : transaction.NumberShares.Value; } return 0; }
public JsonResult SaveNewSpinOffTransaction(BuyAndHoldTransactionDto dto) { var security = _securityService.GetSecurityById(dto.SecurityId.Value); var transactionType = _transactionTypeService.GetTransactionType(dto.TransactionTypeId); dto.TransactionType = transactionType.TransactionType; dto.TickerSymbol = security.TickerSymbol; var transaction = _buyAndHoldService.CreateBuyAndHoldTransaction(dto); return Json(new { success = true, transaction = transaction }); }
public BuyAndHoldTransactionDto UpdateBuyAndHoldTransaction(BuyAndHoldTransactionDto dto) { return _buyAndHoldManager.UpdateBuyAndHoldTransaction(dto); }
public BuyAndHoldTransactionDto CreateBuyAndHoldTransaction(BuyAndHoldTransactionDto dto) { var model = _buyAndHoldDal.CreateBuyAndHoldTransaction(dto); return _buyAndHoldTransactionDomainMap.MapToDto(model); }
public bool AddTransaction(BuyAndHoldTransactionDto dto) { throw new NotImplementedException(); }
public bool UpdateTransactionValidTo(BuyAndHoldTransactionDto dto) { throw new NotImplementedException(); }
public BuyAndHoldTransactionDto UpdateBuyAndHoldTransaction(BuyAndHoldTransactionDto dto) { if (dto.SecurityId.HasValue) { dto.TickerSymbol = _securityManager.GetById(dto.SecurityId.Value).TickerSymbol; //TODO look up Ticker symbol by date (assuming has changerd tickersymbol //dto.OriginalTickerSymbol = _securityManager.GetSecurityByIdByDate(dto.SecurityId.Value).TickerSymbol; } dto.TransactionType = GetTransactionType(dto.TransactionTypeId).Name; var model = _buyAndHoldDal.UpdateBuyAndHoldTransaction(dto); return _buyAndHoldTransactionDomainMap.MapToDto(model); }
public JsonResult SaveNewMergerTransaction(BuyAndHoldTransactionDto dto) { //// var transactions = _buyAndHoldService.GetBuyAndHoldTransactions(new GetBuyAndHoldTransactionsRequest { SecurityId = request.SecurityId }); var security = _securityService.GetSecurityById(dto.SecurityId.Value); var transactionType = _transactionTypeService.GetTransactionType(dto.TransactionTypeId); dto.TransactionType = transactionType.TransactionType; dto.TickerSymbol = security.TickerSymbol; var transaction = _buyAndHoldService.CreateBuyAndHoldTransaction(dto); ////return Json(transactions = transactions); return Json(new { success = true, transaction = transaction }); //return Json(JsonResponseFactory.SuccessResponse(), JsonRequestBehavior.AllowGet); }
private BuyAndHoldTransactionViewModel BuildBuyAndHoldTransactionViewModel(BuyAndHoldTransactionDto dto) { var viewModel = _buyAndHoldTransactionDtoMap.MapToViewModel(dto); viewModel.TransactionTypes = new SelectList(_buyAndHoldService.GetTransactionTypes(), "Id", "Name", viewModel.TransactionTypeId); var securities = _securityService.GetSecurities(); viewModel.Securities = new SelectList(securities, "Id", "TickerSymbol", viewModel.SecurityId); //viewModel.Securities2 = new SelectList(securities, "Id", "TickerSymbol", viewModel.OriginalSecurityId); return viewModel; }