private static async Task <UserOptInInfo> StoreUserOptInStatus(UserOptInInfo obj) { InitDatabase(); var databaseName = CloudConfigurationManager.GetSetting("CosmosDBDatabaseName"); var collectionName = CloudConfigurationManager.GetSetting("CosmosCollectionUsers"); var existingDoc = GetUserOptInStatus(obj.TenantId, obj.UserId); if (existingDoc != null) { // update var options = new RequestOptions() { PartitionKey = new Microsoft.Azure.Documents.PartitionKey(obj.TenantId) }; var response = await documentClient.DeleteDocumentAsync(existingDoc.SelfLink, options); } else { // Insert var response = await documentClient.UpsertDocumentAsync( UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), obj); } return(obj); }
public static async Task <UserOptInInfo> SetUserOptInStatus(string tenantId, string userId, bool optedIn, string serviceUrl) { InitDatabase(); var obj = new UserOptInInfo() { TenantId = tenantId, UserId = userId, OptedIn = optedIn, ServiceUrl = serviceUrl }; obj = await StoreUserOptInStatus(obj); return(obj); }
private static async Task <UserOptInInfo> StoreUserOptInStatus(UserOptInInfo obj) { InitDatabase(); var databaseName = CloudConfigurationManager.GetSetting("CosmosDBDatabaseName"); var collectionName = CloudConfigurationManager.GetSetting("CosmosCollectionUsers"); var existingDoc = GetUserOptInStatus(obj.TenantId, obj.UserId); if (existingDoc != null) { // Overwrite the existing document obj.Id = existingDoc.Id; } await documentClient.UpsertDocumentAsync( UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), obj); return(obj); }
public static async Task <bool> StorePairup(string tenantId, Dictionary <string, UserOptInInfo> userOptInInfo, string userId1, string userId2) { InitDatabase(); var maxPairUpHistory = Convert.ToInt64(CloudConfigurationManager.GetSetting("MaxPairUpHistory")); var user1Info = new UserOptInInfo() { TenantId = tenantId, UserId = userId1, OptedIn = true, }; if (userOptInInfo.TryGetValue(userId1, out UserOptInInfo initialUser1Info)) { user1Info.RecentPairUps = initialUser1Info.RecentPairUps ?? new List <string>(); user1Info.Id = initialUser1Info.Id; } else { user1Info.RecentPairUps = new List <string>(); } var user2Info = new UserOptInInfo() { TenantId = tenantId, UserId = userId2, OptedIn = true, }; if (userOptInInfo.TryGetValue(userId2, out UserOptInInfo initialUser2Info)) { user2Info.RecentPairUps = initialUser2Info.RecentPairUps ?? new List <string>(); user2Info.Id = initialUser2Info.Id; } else { user2Info.RecentPairUps = new List <string>(); } user1Info.RecentPairUps.Add(user2Info.UserId); if (user1Info.RecentPairUps.Count > maxPairUpHistory) { user1Info.RecentPairUps.RemoveAt(0); } user2Info.RecentPairUps.Add(user1Info.UserId); if (user2Info.RecentPairUps.Count > maxPairUpHistory) { user2Info.RecentPairUps.RemoveAt(0); } var isTesting = Boolean.Parse(CloudConfigurationManager.GetSetting("Testing")); if (!isTesting) { await StoreUserOptInStatus(user1Info); await StoreUserOptInStatus(user2Info); } return(true); }