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; }
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); } }