/// <summary> /// Initializes a new instance of the <see cref="PinViewModel" /> class. /// </summary> /// <param name="regionManager">The region manager.</param> /// <param name="provider">The provider.</param> /// <param name="service">The service.</param> /// <param name="dispatcherAccessor">The dispatcher accessor.</param> public PinViewModel(IRegionManager regionManager, ICredentialsProvider provider, IBankingService service, IDispatcherAccessor dispatcherAccessor) { if (regionManager == null) { throw new ArgumentNullException(nameof(regionManager)); } if (provider == null) { throw new ArgumentNullException(nameof(provider)); } if (service == null) { throw new ArgumentNullException(nameof(service)); } if (dispatcherAccessor == null) { throw new ArgumentNullException(nameof(dispatcherAccessor)); } _regionManager = regionManager; _provider = provider; _service = service; _dispatcherAccessor = dispatcherAccessor; OkCommand = new DelegateCommand <IWrappedValue <string> >(CheckPin); }
/// <summary> /// Initializes a new instance of the <see cref="WithdrawViewModel" /> class. /// </summary> /// <param name="provider">The provider.</param> /// <param name="service">The service.</param> /// <param name="dispatcherAccessor">The dispatcher accessor.</param> public WithdrawViewModel(ICredentialsProvider provider, IBankingService service, IDispatcherAccessor dispatcherAccessor) { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } if (service == null) { throw new ArgumentNullException(nameof(service)); } if (dispatcherAccessor == null) { throw new ArgumentNullException(nameof(dispatcherAccessor)); } _provider = provider; _service = service; _dispatcherAccessor = dispatcherAccessor; GetCommand = new DelegateCommand(Withdraw); }
/// <summary> /// Initializes a new instance of the <see cref="CurrentBalanceViewModel" /> class. /// </summary> /// <param name="regionManager">The region manager.</param> /// <param name="provider">The provider.</param> /// <param name="service">The service.</param> /// <param name="dispatcherAccessor">The dispatcher accessor.</param> public CurrentBalanceViewModel(IRegionManager regionManager, ICredentialsProvider provider, IBankingService service, IDispatcherAccessor dispatcherAccessor) { if (regionManager == null) { throw new ArgumentNullException(nameof(regionManager)); } if (provider == null) { throw new ArgumentNullException(nameof(provider)); } if (service == null) { throw new ArgumentNullException(nameof(service)); } if (dispatcherAccessor == null) { throw new ArgumentNullException(nameof(dispatcherAccessor)); } _provider = provider; _service = service; _dispatcherAccessor = dispatcherAccessor; BackCommand = new DelegateCommand(() => regionManager.RequestNavigate(RegionName.MainRegion, ViewName.ActionsView)); }
public MainWindowViewmodel(IPingTimer pingTimer, IPingService pingService, IPingCollectionVectorFactory pingCollectionVectorFactory, IPingVectorFactory pingVectorFactory, IVectorComparer vectorComparer, IIpAddressService ipAddressService, IDispatcherAccessor dispatcherAccessor, PingStatsUtil pingStatsUtil, IPingResponseUtil pingResponseUtil) { _pingTimer = pingTimer; _pingService = pingService; _pingCollectionVectorFactory = pingCollectionVectorFactory; _pingVectorFactory = pingVectorFactory; _vectorComparer = vectorComparer; _pingStatsUtil = pingStatsUtil; _pingResponseUtil = pingResponseUtil; IObservable <long> pingTimerObservable = _pingTimer.Start(() => false); IDisposable pingResponseSubscription = null; _targetDatamodels = new ConcurrentDictionary <IPAddress, PingState>(); _stats = new ConcurrentDictionary <IPAddress, PingStats>(); System.Windows.Threading.Dispatcher d = dispatcherAccessor.GetDispatcher(); Subject <int> resortSubject = new Subject <int>(); ResortObservable = resortSubject; ipAddressService.IpAddressObservable.Subscribe(ipAddresses => { pingResponseSubscription?.Dispose(); IObservable <IEnumerable <Task <IPingResponse> > > pingResponseObservable = pingTimerObservable.Select(l => _pingService.Ping(ipAddresses)); pingResponseSubscription = pingResponseObservable.Subscribe(async pingResponseTasks => { IPingResponse[] responses = await Task.WhenAll(pingResponseTasks); IVector[] vectors = responses.Select(pingResponse => { IPingStats stats = GetUpdatedStats(pingResponse); IVector pingVector = _pingVectorFactory.GetVector(pingResponse, stats); if (_targetDatamodels.TryGetValue(pingResponse.TargetIpAddress, out PingState pingState)) { TargetDatamodel targetDatamodelX = pingState.TargetDatamodel; targetDatamodelX.RoundTripTime = pingResponse.RoundTripTime; targetDatamodelX.StatusSuccess = GetStatusSuccess(pingResponse.Status); IVector boring = _pingVectorFactory.GetVector(new PingResponse(IPAddress.Loopback, TimeSpan.Zero, IPStatus.DestinationHostUnreachable, IPAddress.Loopback), new PingStats(DateTime.Now.AddDays(-1), DateTime.Now) { Average25 = 0, Average25Count = 25, StatusHistory = new bool[PingStatsUtil.MaxHistoryCount] }); double change = _vectorComparer.Compare(boring, pingVector); targetDatamodelX.Change = change; if (targetDatamodelX.Change > 0.008) { targetDatamodelX.ShowUntil = DateTime.Now.Add(TimeToShowOddTargets); } if (targetDatamodelX.ShowUntil <= DateTime.Now) { targetDatamodelX.ShowUntil = null; } pingState.Previous = pingVector; } else { TargetDatamodel targetDatamodel = new TargetDatamodel(address: pingResponse.TargetIpAddress, statusSuccess: GetStatusSuccess(pingResponse.Status), roundTripTime: pingResponse.RoundTripTime); _targetDatamodels.Add(pingResponse.TargetIpAddress, new PingState { TargetDatamodel = targetDatamodel, Previous = pingVector }); d.Invoke(() => TargetDatamodels.Add(targetDatamodel)); } return(pingVector); }).ToArray(); resortSubject.OnNext(0); }); }); TargetDatamodels = new ObservableCollection <TargetDatamodel>(); }