Esempio n. 1
0
        private async Task <ActivityTableEntity> GetActivityPerUserEntityAsync(string userId, DateTime timestamp)
        {
            var rowKey = ActivityKeyFactory.CreatePerUserRowKey(timestamp);
            var result = await this.storageAccessService.GetTableEntityAsync <ActivityTableEntity>(Constants.TableNames.ActivityPerUser, userId, rowKey);

            return(result);
        }
Esempio n. 2
0
        public async Task <ActivityEntity> AddActivityAsync(ActivityEntity activity)
        {
            string activityFeedRowKey = ActivityKeyFactory.CreateRowKey(activity.Timestamp, activity.UserId);
            var    entity             = new ActivityTableEntity(ActivityKeyFactory.CreatePartitionKey(activity.Timestamp), activityFeedRowKey, activity);

            await this.storageAccessService.InsertAsync(Constants.TableNames.Activity, entity);

            string activityPerUserRowKey = ActivityKeyFactory.CreatePerUserRowKey(activity.Timestamp);
            var    perUserEntity         = new ActivityTableEntity(activity.UserId, activityPerUserRowKey, activity);

            await this.storageAccessService.InsertAsync(Constants.TableNames.ActivityPerUser, perUserEntity);

            await AddToPersonalizedFeedAsync(activity.UserId, activity);

            return(activity);
        }
Esempio n. 3
0
        public async Task <IEnumerable <ActivityEntity> > GetUserActivitiesAsync(string userId, DateTime startTimeUtc, ActivityType activityType = ActivityType.None)
        {
            string startRowKey = ActivityKeyFactory.CreatePerUserRowKey(startTimeUtc);
            var    whereClause =
                TableQuery.CombineFilters(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, userId),
                    TableOperators.And,
                    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, startRowKey));

            if (activityType != Core.Activity.Domain.ActivityType.None)
            {
                whereClause = TableQuery.CombineFilters(whereClause, TableOperators.And,
                                                        TableQuery.GenerateFilterCondition(nameof(ActivityTableEntity.ActivityType), QueryComparisons.Equal, activityType.ToString()));
            }

            var result = await storageAccessService.QueryTableAsync <JsonTableEntity <ActivityEntity> >(Constants.TableNames.ActivityPerUser, whereClause);

            var activitys = result.Select(a => a.Entity).ToList();

            return(activitys);
        }