Ejemplo 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);
        }
Ejemplo n.º 2
0
        public static Activity CreateNotificationActivity(
            string userId,
            string userName,
            string message)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateNotificationActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, userId, userName, message));
        }
Ejemplo n.º 3
0
        public static Activity CreateMessageActivity(
            Location location,
            string userId,
            string userName,
            string message,
            Venue.Venue venue)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateMessageActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, location, userId, userName, message, venue));
        }
Ejemplo n.º 4
0
        public async Task <ActivityTableEntity> GetActivityEntityAsync(string id)
        {
            string partitionKey = ActivityKeyFactory.GetPartitionKeyFromRowKey(id);
            var    entity       = await this.storageAccessService.GetTableEntityAsync <ActivityTableEntity>(Constants.TableNames.Activity, partitionKey, id);

            if (entity == null)
            {
                throw new NotFoundException($"Activity [{id}] not found!");
            }

            return(entity);
        }
Ejemplo n.º 5
0
        public static Activity CreateDrinkActivity(
            Location location,
            string userId,
            string userName,
            DrinkType drinkType,
            string drinkId,
            string drinkName,
            double drinkAlcPrc,
            double drinkVolume,
            Venue.Venue venue)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateDrinkActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, location, userId, userName, drinkType, drinkId, drinkName, drinkAlcPrc, drinkVolume, venue));
        }
Ejemplo n.º 6
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);
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
0
        public async Task <IEnumerable <ActivityEntity> > GetMasterActivitiesAsync(ActivityFilterArgs args)
        {
            string whereClause = null;
            string tableName   = Constants.TableNames.Activity;

            string currentPartition  = ActivityKeyFactory.CreatePartitionKey(DateTime.UtcNow);
            string previousPartition = ActivityKeyFactory.CreatePartitionKey(DateTime.UtcNow.AddDays(-(DateTime.UtcNow.Day + 1)));

            whereClause =
                TableQuery.CombineFilters(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, currentPartition),
                    TableOperators.Or,
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, previousPartition));

            if ((args.FilterOptions & ActivityFilterOptions.WithLocation) == ActivityFilterOptions.WithLocation)
            {
                whereClause = TableQuery.CombineFilters(whereClause, TableOperators.And,
                                                        TableQuery.GenerateFilterConditionForBool(nameof(ActivityTableEntity.HasLocation), QueryComparisons.Equal, true));
            }

            if ((args.FilterOptions & ActivityFilterOptions.WithVenue) == ActivityFilterOptions.WithVenue)
            {
                whereClause = TableQuery.CombineFilters(whereClause, TableOperators.And,
                                                        TableQuery.GenerateFilterCondition(nameof(ActivityTableEntity.VenueId), QueryComparisons.NotEqual, null));
            }

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

            var result = await storageAccessService.QueryTableAsync <JsonTableEntity <ActivityEntity> >(tableName, whereClause, args.PageSize);

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

            return(resultActivities);
        }
Ejemplo n.º 9
0
        public static Activity CreateImageActivity(Location location, string userId, string userName, string imageUrl)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateImageActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, location, userId, userName, imageUrl));
        }
Ejemplo n.º 10
0
        public static Activity CreateGameActivity(GameEntity game, UserInfo winner)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateGameActivity(ActivityKeyFactory.CreateRowKey(timestamp, winner.UserId), timestamp, game, winner));
        }
Ejemplo n.º 11
0
        public static Activity CreateVenueActivity(string userId, string userName, Venue.Venue venue, VenueAction action)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateVenueActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, userId, userName, venue, action));
        }
Ejemplo n.º 12
0
        public static Activity CreateRenameActivity(string userId, string userName, string originalUserName)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateRenameActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, userId, userName, originalUserName));
        }
Ejemplo n.º 13
0
        public static Activity CreateRegistrationActivity(string userId, string userName)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateRegistrationActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, userId, userName, new UserInfo(userId, userName)));
        }
Ejemplo n.º 14
0
        public static Activity CreateProfileImageUpdateActivity(string userId, string userName)
        {
            var timestamp = DateTime.UtcNow;

            return(CreateProfileImageUpdateActivity(ActivityKeyFactory.CreateRowKey(timestamp, userId), timestamp, userId, userName));
        }