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;
        }
Beispiel #5
0
        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 });
        }
Beispiel #10
0
 public BuyAndHoldTransactionDto UpdateBuyAndHoldTransaction(BuyAndHoldTransactionDto dto)
 {
     return _buyAndHoldManager.UpdateBuyAndHoldTransaction(dto);
 }
Beispiel #11
0
 public BuyAndHoldTransactionDto CreateBuyAndHoldTransaction(BuyAndHoldTransactionDto dto)
 {
     var model = _buyAndHoldDal.CreateBuyAndHoldTransaction(dto);
     return _buyAndHoldTransactionDomainMap.MapToDto(model);
 }
Beispiel #12
0
 public bool AddTransaction(BuyAndHoldTransactionDto dto)
 {
     throw new NotImplementedException();
 }
Beispiel #13
0
 public bool UpdateTransactionValidTo(BuyAndHoldTransactionDto dto)
 {
     throw new NotImplementedException();
 }
Beispiel #14
0
        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);
        }
Beispiel #16
0
 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;
 }