Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 4
0
        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>();
        }