public DepositEditorViewModel(IDepositGateway depositGateway, IViewService viewService, ISharedDataProvider sharedDataProvider)
        {
            Guard.AgainstNull(() => depositGateway, () => viewService, () => sharedDataProvider);

            _depositGateway = depositGateway;
            _viewService = viewService;
            _sharedDataProvider = sharedDataProvider;

            SaveDepositCommand = new RelayCommand(SaveDeposit, CanSaveDeposit);
            IsBackNavigationEnabled = true;
        }
        public DepositDeletionViewModel(IDepositGateway depositGateway, IViewService viewService, ISharedDataProvider sharedDataProvider)
        {
            Guard.AgainstNull(() => depositGateway, () => viewService, () => sharedDataProvider);

            _depositGateway = depositGateway;
            _viewService = viewService;
            _sharedDataProvider = sharedDataProvider;

            DeleteCommand = new RelayCommand(Delete, CanDelete);
            PageTitle = "Sletning af depot";
            IsBackNavigationEnabled = true;
        }
        public SharedDataProvider(IStockGateway stockGateway, IDepositGateway depositGateway)
        {
            Guard.AgainstNull(() => stockGateway, () => depositGateway);

            _stockGateway = stockGateway;
            _depositGateway = depositGateway;

            Stocks = new ObservableCollection<StockViewModel>();
            Deposits = new ObservableCollection<DepositViewModel>();
            GeneralMeetings = new ObservableCollection<GeneralMeetingViewModel>();
            GeneralMeetingYears = new ObservableCollection<KeyValuePair<string, int>>();

            Update();
        }
        public DividendManagementViewModel(IDepositGateway depositGateway, ISharedDataProvider sharedDataProvider)
        {
            Guard.AgainstNull(() => depositGateway, () => sharedDataProvider);

            _depositGateway = depositGateway;
            SharedDataProvider = sharedDataProvider;

            CalculateDividendsCommand = new RelayCommand(CalculateDividends);
            AddDividendCommand = new ParameterizedRelayCommand<DividendViewModel>(AddDividend);
            DeleteDividendCommand = new ParameterizedRelayCommand<DividendViewModel>(DeleteDividend);
            CalculatedDividends = new ObservableCollection<DividendViewModel>();

            PageTitle = "Udbyttebetalinger";
            IsBackNavigationEnabled = true;
        }
        public DepositManagementViewModel(IDepositGateway depositGateway, IViewService viewService, 
            IMessagebus messagebus, ISharedDataProvider sharedDataProvider)
        {
            Guard.AgainstNull(() => depositGateway, () => viewService, () => messagebus, () => sharedDataProvider);

            _viewService = viewService;
            _depositGateway = depositGateway;
            _messagebus = messagebus;

            EditSelectedDepositCommand = new RelayCommand(EditSelectedDeposit, IsDepositSelected);
            DeleteSelectedDepositCommand = new RelayCommand(DeleteSelectedDeposit, IsDepositSelected);
            ShowDepositOverviewCommand = new RelayCommand(ShowDepositOverview, IsDepositSelected);
            Deposits = sharedDataProvider.Deposits;

            PageTitle = "Depotadministration";
        }