Ejemplo n.º 1
0
 public PlatformConnectionUpdateNotificationMessage(string platformId, string userId, string appId,
                                                    PlatformConnectionState platformConnectionState, string syncLogId,
                                                    NotificationReason reason = NotificationReason.DataUpdate)
 {
     PlatformId = platformId;
     UserId     = userId;
     AppId      = appId;
     PlatformConnectionState = platformConnectionState;
     SyncLogId = syncLogId;
     Reason    = reason;
 }
        private static PlatformConnectionUpdateNotificationPayload CreatePayload(Guid externalPlatformId, Guid externalUserId,
                                                                                 string appSecret, string platformName, PlatformConnectionState platformConnectionState,
                                                                                 DateTimeOffset updated, NotificationReason notificationReason, PlatformData platformData = null,
                                                                                 PlatformDataClaim?platformDataClaim = null)
        {
            var payload = new PlatformConnectionUpdateNotificationPayload
            {
                PlatformId              = externalPlatformId,
                UserId                  = externalUserId,
                AppSecret               = appSecret,
                PlatformName            = platformName,
                PlatformConnectionState = platformConnectionState,
                Updated                 = updated.ToUnixTimeSeconds(),
                Reason                  = notificationReason
            };

            if (platformData != null)
            {
                //if no platform data claim is provided, set to lowest claim by default
                platformDataClaim ??= PlatformDataClaim.Aggregated;

                var platformDataPayload = new PlatformDataPayload
                {
                    NumberOfGigs    = platformData.NumberOfGigs,
                    PeriodStart     = platformData.PeriodStart,
                    PeriodEnd       = platformData.PeriodEnd,
                    NumberOfRatings = platformData.Ratings?.Count() ?? 0
                };

                if (platformData.AverageRating != null)
                {
                    platformDataPayload.AverageRating =
                        new PlatformRatingPayload(
                            platformData.AverageRating);
                }

                if (platformData.Ratings != null &&
                    platformData.Ratings.Any())
                {
                    platformDataPayload.NumberOfRatingsThatAreDeemedSuccessful =
                        platformData.Ratings.Count(r =>
                                                   r.Value >= r.SuccessLimit);
                }

                if (platformDataClaim == PlatformDataClaim.Full)
                {
                    if (platformData.Reviews != null)
                    {
                        var reviewPayloads = new List <PlatformReviewPayload>();
                        foreach (var platformDataReview in platformData.Reviews
                                 )
                        {
                            var platformReviewPayload = new PlatformReviewPayload
                            {
                                ReviewId          = platformDataReview.ReviewIdentifier,
                                ReviewDate        = platformDataReview.ReviewDate,
                                ReviewerName      = platformDataReview.ReviewerName,
                                ReviewText        = platformDataReview.ReviewText,
                                ReviewHeading     = platformDataReview.ReviewHeading,
                                ReviewerAvatarUri = platformDataReview.ReviewerAvatarUri
                            };

                            if (platformDataReview.RatingId.HasValue)
                            {
                                platformReviewPayload.Rating = new PlatformRatingPayload(
                                    platformData.Ratings?.Single(r =>
                                                                 r.Identifier == platformDataReview.RatingId));
                            }

                            reviewPayloads.Add(platformReviewPayload);
                        }

                        if (reviewPayloads.Any())
                        {
                            platformDataPayload.Reviews = reviewPayloads;
                        }
                    }

                    if (platformData.Achievements != null)
                    {
                        var achievementPayloads = new List <PlatformAchievementPayload>();

                        foreach (var platformDataAchievement in platformData.Achievements)
                        {
                            PlatformAchievementScorePayload scorePayload = null;
                            if (platformDataAchievement.Score != null)
                            {
                                scorePayload = new PlatformAchievementScorePayload
                                {
                                    Value = platformDataAchievement.Score.Value,
                                    Label = platformDataAchievement.Score.Label
                                };
                            }

                            var platformAchievementPayload = new PlatformAchievementPayload
                            {
                                AchievementId           = platformDataAchievement.AchievementIdentifier,
                                AchievementPlatformType = platformDataAchievement.AchievementPlatformType,
                                AchievementType         = platformDataAchievement.AchievementType,
                                Description             = platformDataAchievement.Description,
                                ImageUrl = platformDataAchievement.ImageUri,
                                Name     = platformDataAchievement.Name,
                                Score    = scorePayload
                            };

                            achievementPayloads.Add(platformAchievementPayload);
                        }

                        platformDataPayload.Achievements = achievementPayloads;
                    }
                }

                payload.PlatformData = platformDataPayload;
            }
            else
            {
                payload.PlatformData = null;
            }

            return(payload);
        }
 public PlatformConnectionResultViewModel(PlatformConnectionState state)
 {
     State = state;
 }
 public StartPlatformOauthConnectionResultViewModel(PlatformConnectionState state,
                                                    string authorizationUri = null) : base(state)
 {
     AuthorizationUri = authorizationUri;
 }
Ejemplo n.º 5
0
        private async Task NotifyPlatformDataUpdate(string userId, IList <string> appIds, string platformId,
                                                    IAsyncDocumentSession session, NotificationReason reason, PlatformConnectionState connectionState = PlatformConnectionState.Connected,
                                                    string syncLogId = null,
                                                    CancellationToken cancellationToken = default)
        {
            var apps = await session.LoadAsync <App>(appIds, cancellationToken);

            foreach (var message in apps.Values.Select(app => new Common.Messages.PlatformConnectionUpdateNotificationMessage(platformId, userId,
                                                                                                                              app.Id, connectionState, syncLogId, reason)))
            {
                await _bus.Send(message);
            }
        }