private PositionsViewModel GetVm( IMarketDataManager marketDataManager = null, IPositionManager positionManager = null, IContractManager contractManager = null, ITradeRecordingService tradeRecordingService = null) { var manager = marketDataManager ?? Substitute.For <IMarketDataManager>(); _accountManager = Substitute.For <IAccountManager>(); if (positionManager == null) { positionManager = Substitute.For <IPositionManager>(); positionManager.RequestOpenOrdersAsync().Returns(Task.FromResult(new List <OpenOrderEventArgs>())); } if (contractManager == null) { contractManager = Substitute.For <IContractManager>(); contractManager.RequestDetailsAsync(Arg.Any <Contract>()).Returns(Task.FromResult(new List <ContractDetails>())); } var queueProcessor = Substitute.For <IQueueProcessor>(); queueProcessor .When(x => x.Enqueue(Arg.Any <Action>())) .Do(x => { var action = x.Arg <Action>(); action.Invoke(); }); var dispatcherHelper = Substitute.For <IDispatcherHelper>(); dispatcherHelper .When(x => x.InvokeOnUiThread(Arg.Any <Action>())) .Do(x => { var action = x.Arg <Action>(); action.Invoke(); }); if (tradeRecordingService == null) { tradeRecordingService = Substitute.For <ITradeRecordingService>(); } return(new PositionsViewModel(dispatcherHelper, manager, _accountManager, positionManager, contractManager, queueProcessor, tradeRecordingService)); }
public PositionsViewModel( IDispatcherHelper dispatcherHelper, IMarketDataManager marketDataManager, IAccountManager accountManager, IPositionManager positionManager, IContractManager contractManager, IQueueProcessor queueProcessor, ITradeRecordingService tradeRecordingService) : base(dispatcherHelper, queueProcessor) { Positions = new ObservableCollectionNoReset <PositionItem>(dispatcherHelper: DispatcherHelper); Messenger.Default.Register <ConnectionChangingMessage>(this, HandleConnectionChangingMessage); Messenger.Default.Register <OrderStatusChangedMessage>(this, OrderStatusChangedMessage.Tokens.Positions, OnOrderStatusChangedMessage); Messenger.Default.Register <BarPriceMessage>(this, HandleBarPriceMessage); _marketDataManager = marketDataManager; _accountManager = accountManager; _positionManager = positionManager; _contractManager = contractManager; _queueProcessor = queueProcessor; _tradeRecordingService = tradeRecordingService; }
public MainViewModel( IDispatcherHelper dispatcherHelper, IConnectionService connectionService, IOrderCalculationService orderCalculationService, PositionsViewModel positionsViewModel, SettingsViewModel settingsViewModel, OrdersListViewModel ordersListViewModel, IRiskCalculationService riskCalculationService, ITradeRecordingService tradeRecordingService) : base(dispatcherHelper) { _connectionService = connectionService; OrdersListViewModel = ordersListViewModel; _riskCalculationService = riskCalculationService; _tradeRecordingService = tradeRecordingService; PositionsViewModel = positionsViewModel; _settingsViewModel = settingsViewModel; _settingsViewModel.PropertyChanged += OnSettingsViewModelPropertyChanged; _orderCalculationService = orderCalculationService; Messenger.Default.Register <ConnectionChangedMessage>(this, HandleConnectionChangedMessage); Messenger.Default.Register <DetailsPanelClosedMessage>(this, HandleDetailsPanelClosed); Messenger.Default.Register <OrderStatusChangedMessage>(this, OrderStatusChangedMessage.Tokens.Main, HandleOrderStatusChangedMessage); _connectionService.ClientError += HandleClientError; SetConnectionStatus(); CreateMenuItems(); // Load settings on a different thread as it's slow and so that we can show the main window straight away Task.Run(() => _settingsViewModel.LoadSettingsAsync()) .ContinueWith(t => { HandleLoadSettingsTaskResult(t); }) .ConfigureAwait(false); }
public MainViewModelBuilder WithTradeRecordingService(ITradeRecordingService tradeRecordingService) { _tradeRecordingService = tradeRecordingService; return(this); }