Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }