public Deposit MapToDeposit(DepositViewModel depositVm, bool mapRelations = true)
        {
            var deposit = GetDeposit(depositVm);

            if (mapRelations)
            {
                if (depositVm.Trades != null)
                {
                    foreach (var tradeVm in depositVm.Trades)
                    {
                        var trade = GetTrade(tradeVm);
                        deposit.AddTrade(trade);
                    }
                }

                if (depositVm.Dividends != null)
                {
                    foreach (var dividendVm in depositVm.Dividends)
                    {
                        var dividend = GetDividend(dividendVm);
                        deposit.AddDividend(dividend);
                    }
                }
            }

            return deposit;
        }
예제 #2
0
 // TODO: Right now called when a new trade is added in the deposit. Should support more cases.
 public DepositViewModel Refresh(DepositViewModel depositVm, TradeViewModel tradeVm)
 {
     var deposit = _viewModelToModelMapper.MapToDeposit(depositVm, true);
     var trade = _viewModelToModelMapper.MapToTrade(tradeVm);
     var depositInfoDTO = _depositService.Refresh(deposit, trade);
     return _modelToViewModelMapper.MapToDepositViewModel(depositInfoDTO);
 }
예제 #3
0
        public void Update(DepositViewModel depositVm)
        {
            Guard.AgainstNull(() => depositVm);

            var deposit = _viewModelToModelMapper.MapToDeposit(depositVm, false);
            _depositService.UpdateDeposit(deposit);
        }
예제 #4
0
        public IEnumerable<DividendViewModel> CalculateDividends(
            int year, DepositViewModel depositVm, IEnumerable<GeneralMeetingViewModel> generalMeetingVms)
        {
            var deposit = _viewModelToModelMapper.MapToDeposit(depositVm, true);
            var generalMeetings = _viewModelToModelMapper.MapToGeneralMeetings(generalMeetingVms);
            var dividends = _dividendService.CalculateDividends(year, deposit, generalMeetings);

            return _modelToViewModelMapper.MapToDividendViewModels(dividends)
                .Select(p => { p.Deposit = depositVm; return p; });
        }
        private Deposit GetDeposit(DepositViewModel depositVm)
        {
            if (depositVm == null)
                return null;

            return new Deposit(
                depositVm.Id,
                depositVm.Description,
                depositVm.IdentityNumber,
                depositVm.DepositType);
        }
예제 #6
0
        public TradeInfoDto GetTradeInfo(TradeViewModel tradeVm, DepositViewModel depositVm)
        {
            Guard.AgainstNull(() => tradeVm, () => depositVm);

            var isBuy = tradeVm.IsBuy == true;
            var price = tradeVm.Price ?? 0;
            var quantity = tradeVm.Quantity ?? 0;
            var stockId = tradeVm.Stock.Id;
            var deposit = _viewModelToModelMapper.MapToDeposit(depositVm);

            return _tradeService.CalculateTradeInfo(isBuy, price, quantity, stockId, deposit);
        }
예제 #7
0
        public void RefreshDepositTradeAdded(DepositViewModel depositVm, TradeViewModel tradeVm)
        {
            var refreshedDepositVm = _depositGateway.Refresh(depositVm, tradeVm);
            var refreshedTradeVm = refreshedDepositVm.Trades.Single(p => p.Id == tradeVm.Id);

            depositVm.SellableStockIds = refreshedDepositVm.SellableStockIds;
            depositVm.Trades.Add(refreshedTradeVm);

            var refreshedPosition = refreshedDepositVm.StockPositions.Single(p => p.Stock.Id == refreshedTradeVm.Stock.Id);
            depositVm.StockPositions.Single(p => p.Stock.Id == refreshedTradeVm.Stock.Id).Quantity = refreshedPosition.Quantity;

            // Add new trade to the collection of stocks.
            var stock = Stocks.Single(p => p.Id == refreshedTradeVm.Stock.Id);
            stock.Trades.Add(refreshedTradeVm);
        }
        private void SaveDeposit()
        {
            if (!CanSaveDeposit())
                return;

            var success = Validate(_viewService, () =>
            {
                if (_isEdittingDeposit)
                    _depositGateway.Update(Deposit);
                else
                    _sharedDataProvider.AddDeposit(Deposit);
            });

            if (!success)
                return;

            Deposit.CommitChanges();
            Deposit = null;
            _viewService.NavigateTo(typeof(DepositManagementViewModel));
        }
 private void NavigateToTradeEditor(DepositViewModel deposit, bool? selectBuy, int? stockId)
 { 
     _viewService.NavigateTo(
         typeof(TradeEditorViewModel), 
         new TradeEditorViewModel.NavigationArgs(deposit, selectBuy, stockId));
 }
예제 #10
0
 public void AddDeposit(DepositViewModel deposit)
 {
     _depositGateway.Create(deposit);
     Deposits.Add(deposit);
 }
예제 #11
0
 public void DeleteDeposit(DepositViewModel deposit)
 {
     _depositGateway.Delete(deposit.Id);
     Deposits.Remove(deposit);
 }
예제 #12
0
        public YearlyReportDTO GetYearlyReport(int year, bool isMarried, DepositViewModel depositVm)
        {
            Guard.AgainstNull(() => depositVm);

            var deposit = _viewModelToModelMapper.MapToDeposit(depositVm, true);
            return _depositService.GetYearlyReport(year, isMarried, deposit);
        }
 protected override void NavigatedBack()
 {
     Deposit.UndoChanges();
     Deposit = null;
 }