コード例 #1
0
        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);
        }
コード例 #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);
        }