public IList <HoldingViewModel> BuildViewModels()
        {
            IList <TransactionData> data;

            try
            {
                data = _transactionRepository.GetCurrentHoldings();
            }
            catch
            {
                // Get from latest Json file
                data = _transactionFileWrapper.GetCurrentHoldings();
            }

            var viewModels = new List <HoldingViewModel>();

            foreach (var item in data)
            {
                var viewModel        = _autoMapper.Map <TransactionData, HoldingViewModel>(item);
                var profitPercentage = _calculatorEngine.CalculatePercentage(item.Percentage);
                var cost             = _calculatorEngine.CalculateCost(item.Shares, item.Price, item.Commission, item.Tax, item.Levy);
                var profitPrice      = _calculatorEngine.CalculateProfitPrice(item.Shares, item.Price, item.Commission, item.Tax, item.Levy, profitPercentage);

                viewModel.Cost           = cost;
                viewModel.BreakEvenPrice = _calculatorEngine.CalculateBreakEvenPrice(item.Shares, item.Price, item.Commission, item.Tax, item.Levy);
                viewModel.ProfitPrice    = profitPrice;
                viewModel.Earnings       = _calculatorEngine.CalculateEarnings(item.Shares, profitPrice, item.Commission, cost, item.Levy);

                viewModels.Add(viewModel);
            }

            return(viewModels);
        }
Ejemplo n.º 2
0
        public IList <DashboardViewModel> BuildViewModels()
        {
            IList <TransactionData> data;

            try
            {
                data = _transactionRepository.GetCurrentHoldings();
            }
            catch
            {
                // Get from latest Json file
                data = _transactionFileWrapper.GetCurrentHoldings();
            }

            var viewModels    = new List <DashboardViewModel>();
            var currentPrices = _stockPriceRetriever.GetPrices(data);

            foreach (var item in data)
            {
                var viewModel = _autoMapper.Map <TransactionData, DashboardViewModel>(item);

                var profitPercentage = _calculatorEngine.CalculatePercentage(item.Percentage);
                var cost             = _calculatorEngine.CalculateCost(item.Shares, item.Price, item.Commission, item.Tax, item.Levy);
                var currentPrice     = currentPrices.FirstOrDefault(x => x.Code.Replace(".L", String.Empty) == item.Code);

                viewModel.Name = currentPrice.Name;

                viewModel.BreakEvenPrice = _calculatorEngine.CalculateBreakEvenPrice(item.Shares, item.Price,
                                                                                     item.Commission, item.Tax, item.Levy);
                viewModel.ProfitPrice = _calculatorEngine.CalculateProfitPrice(item.Shares, item.Price, item.Commission,
                                                                               item.Tax, item.Levy, profitPercentage);

                viewModel.CurrentPrice = currentPrice.Ask;

                viewModel.PercentageDifference = (viewModel.CurrentPrice - viewModel.BreakEvenPrice) /
                                                 viewModel.BreakEvenPrice;

                viewModel.Earnings = _calculatorEngine.CalculateEarnings(item.Shares, currentPrice.Ask, item.Commission,
                                                                         cost, item.Levy);

                viewModels.Add(viewModel);
            }

            return(viewModels);
        }
Ejemplo n.º 3
0
        public ActionResult Index(CalculatorViewModel viewModel, String calculate)
        {
            if (String.IsNullOrEmpty(calculate))
            {
                var transactionViewModel = _autoMapper.Map <CalculatorViewModel, TransactionViewModel>(viewModel);

                transactionViewModel.Shares = _calculatorEngine.CalculateShares(viewModel.Investment, viewModel.Commission,
                                                                                viewModel.Tax,
                                                                                viewModel.Levy, viewModel.Price);

                return(View("../Transactions/Add", transactionViewModel));
            }
            else
            {
                viewModel.Shares = _calculatorEngine.CalculateShares(viewModel.Investment, viewModel.Commission,
                                                                     viewModel.Tax,
                                                                     viewModel.Levy, viewModel.Price);

                viewModel.Cost = _calculatorEngine.CalculateCost(viewModel.Shares, viewModel.Price, viewModel.Commission,
                                                                 viewModel.Tax, viewModel.Levy);

                viewModel.BreakEvenPrice = _calculatorEngine.CalculateBreakEvenPrice(viewModel.Shares, viewModel.Price,
                                                                                     viewModel.Commission, viewModel.Tax, viewModel.Levy);

                var profitPercentage = _calculatorEngine.CalculatePercentage(viewModel.Profit);

                viewModel.ProfitPrice = _calculatorEngine.CalculateProfitPrice(viewModel.Shares, viewModel.Price,
                                                                               viewModel.Commission, viewModel.Tax, viewModel.Levy, profitPercentage);

                viewModel.Earnings = _calculatorEngine.CalculateEarnings(viewModel.Shares, viewModel.ProfitPrice,
                                                                         viewModel.Commission, viewModel.Cost, viewModel.Levy);

                var viewResult = new ViewResult
                {
                    ViewName = "Index",
                    ViewData = { Model = viewModel }
                };

                viewResult.ViewBag.Message = "Investment Calculated";

                return(viewResult);
            }
        }