protected override async Task <IEnumerable <Activity> > ExecuteAsync(QueryTemplateContext <GetActivityStreamByUserId> context)
        {
            var r          = RethinkDB.R;
            var queryParam = context.Parameter;

            var query = _activityTable
                        .OrderBy()
                        .OptArg("index", RethinkDB.R.Desc(nameof(Activity.CreatedAt)));

            ReqlExpr condtQuery;

            if (queryParam.IncludeAllUserActivities)
            {
                condtQuery = query.Filter(x => GetFilter(x, queryParam));
            }
            else
            {
                condtQuery = query.Filter(x => x.GetField(nameof(Activity.OwnerId)).Eq(queryParam.UserId));
            }

            if (queryParam.Types.Any())
            {
                condtQuery = condtQuery.Filter(x => r.Expr(queryParam.Types).Contains(x.GetField(nameof(Activity.Type))));
            }

            var finalQuery = condtQuery.Merge(activity => r.HashMap(nameof(Activity.Owner), GetUserFullName(activity.GetField(nameof(Activity.OwnerId)))))
                             .Merge(activity => r.HashMap(nameof(Activity.ItemOwner), GetUserFullName(activity.GetField(nameof(Activity.ItemOwnerId)))))
                             .Merge(activity => r.HashMap(nameof(Activity.IdeaOwner), GetUserFullName(activity.GetField(nameof(Activity.IdeaOwnerId)))));

            var results = await finalQuery.RunCursorAsync <Activity>(context.Connection);

            return(results.ToList());
        }
Exemple #2
0
        protected override async Task <IEnumerable <TaskItemState> > ExecuteAsync(QueryTemplateContext <GetTaskItemStatesByBoardId> context)
        {
            var r          = RethinkDB.R;
            var queryParam = context.Parameter;

            var query = r.Table(nameof(TaskItemState))
                        .Filter(x => x.GetField(nameof(TaskItem.TaskBoardId)).Eq(queryParam.TaskBoardId));

            return((await query.RunCursorAsync <TaskItemState>(context.Connection)).ToList());
        }
        protected override async Task<IEnumerable<TaskItem>> ExecuteAsync(QueryTemplateContext<GetTaskBoardTasksByStateId> context)
        {
            var r = RethinkDB.R;
            var queryParam = context.Parameter;

            var query = r.Table(nameof(TaskItem))
                .Filter(x => x.GetField(nameof(TaskItem.TaskBoardId)).Eq(queryParam.TaskBoardId));

            if (!string.IsNullOrEmpty(queryParam.StateId))
            {
                query = query.Filter(x => x.GetField(nameof(TaskItem.StateId)).Eq(queryParam.StateId));
            }            

            return (await query.RunCursorAsync<TaskItem>(context.Connection)).ToList();
        }