コード例 #1
0
        public async Task <DashboardState> Handle(DateTimeOffset date, UserId user, DashboardId dashboard)
        {
            var state        = _readStateUseCase.Handle(date, user);
            var virtualState = _readVirtualStateUseCase.Handle(date, user);

            return(await _manager.GetState(date, user, dashboard, state, virtualState));
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            int hash = 17;

            hash = hash * 23 + Id.GetHashCode();
            hash = hash * 23 + OrgId.GetHashCode();
            hash = hash * 23 + DashboardId.GetHashCode();
            hash = hash * 23 + PanelId.GetHashCode();
            hash = hash * 23 + Name.GetHashCode();
            hash = hash * 23 + Message.GetHashCode();
            hash = hash * 23 + State.GetHashCode();
            hash = hash * 23 + Settings.GetHashCode();
            hash = hash * 23 + Frequency.GetHashCode();
            hash = hash * 23 + NewStateDate.GetHashCode();
            hash = hash * 23 + StateChanges.GetHashCode();

            return(hash);
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            int hash = 17;

            hash = hash * 23 + Id.GetHashCode();
            hash = hash * 23 + OrgId.GetHashCode();
            hash = hash * 23 + UserId.GetHashCode();
            hash = hash * 23 + Title.GetHashCode();
            hash = hash * 23 + Text.GetHashCode();
            hash = hash * 23 + DashboardId.GetHashCode();
            hash = hash * 23 + PanelId.GetHashCode();
            hash = hash * 23 + Time.GetHashCode();

            if (null != Alert)
            {
                hash = hash * 23 + Alert.GetHashCode();
            }

            return(hash);
        }
コード例 #4
0
        public async Task <DashboardState> GetState(
            DateTimeOffset date, UserId user, DashboardId dashboardId, ReadOnlyState state, VirtualState virtualState)
        {
            var configs = await _repository.GetUserDashboardConfigs(user);

            var dashboard = configs.FirstOrDefault(c => c.Id == dashboardId);
            var tagState  = await _tagManager.GetTags(user);

            var assetNames    = CollectAssetNames(state.Brokers.SelectMany(b => b.Inventory).ToArray(), user);
            var assetTags     = CollectAssetTags(tagState);
            var virtualAssets = CollectVirtualAssets(virtualState);
            var dashboardTags = dashboard?.Tags ?? new List <DashboardConfigTagModel>();

            _logger.LogTrace($"Dashboard {dashboardId} contains {dashboardTags.Count} tags");
            var tags = dashboardTags
                       .Select(t => {
                if (!assetTags.TryGetValue(new(t.Tag), out var assetIsins))
                {
                    assetIsins = Array.Empty <AssetISIN>();
                }
                var assets = assetIsins
                             .Where(isin => virtualAssets.Any(a => a.Isin == isin))
                             .Select(isin => {
                    var name = assetNames.GetValueOrDefault(isin) ?? string.Empty;
                    var sums = CalculateAssetSums(isin, virtualAssets, date);
                    return(new DashboardAsset(isin, name, sums));
                })
                             .ToArray();
                var assetSums = AggregateSums(assets.Select(a => a.Sums));
                return(new DashboardStateTag(t.Tag, assets, assetSums));
            })
                       .ToArray();
            var tagSums = AggregateSums(tags.Select(t => t.Sums));

            return(new(tags, tagSums));
        }
コード例 #5
0
 public async Task RemoveDashboard(UserId user, DashboardId dashboard) =>
 await _repository.RemoveDashboard(user, dashboard);
コード例 #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(object obj)
        {
            if (null == obj)
            {
                return(false);
            }

            if (ReferenceEquals(this, obj))
            {
                return(true);
            }

            var a = obj as Alert;

            if (null == a)
            {
                return(false);
            }

            if (!Id.Equals(a.Id))
            {
                return(false);
            }

            if (!OrgId.Equals(a.OrgId))
            {
                return(false);
            }

            if (!DashboardId.Equals(a.DashboardId))
            {
                return(false);
            }

            if (PanelId != a.PanelId)
            {
                return(false);
            }

            if (Name != a.Name)
            {
                return(false);
            }

            if (Message != a.Message)
            {
                return(false);
            }

            if (Settings != a.Settings)
            {
                return(false);
            }

            if (Frequency != a.Frequency)
            {
                return(false);
            }

            if (NewStateDate != a.NewStateDate)
            {
                return(false);
            }

            if (StateChanges != a.StateChanges)
            {
                return(false);
            }

            return(true);
        }
コード例 #7
0
 public async Task Handle(UserId user, DashboardId id) =>
 await _manager.RemoveDashboard(user, id);