示例#1
0
        public async Task <IEnumerable <GetMembersQueryResult> > GetMembers(GetMembersQuery getMembersQuery)
        {
            var queryRequest = new QueryRequest()
                               .Statement(@"SELECT members FROM `groups` g 
                                  LEFT NEST `groups-relations` r_members ON KEYS ARRAY 'users|' || x.memberId FOR x IN g.members END
                                  LET members = ARRAY {
                                    'memberId' : m.memberId,
                                    'memberName' : IFNULL(FIRST x FOR x IN r_members WHEN META(x).id  = 'users|' || m.memberId END, MISSING).userName
                                  } FOR m IN g.members END
                                  WHERE META(g).id = $groupId
                                  LIMIT 1;")
                               .AddNamedParameter("$groupId", getMembersQuery.GroupId.ToString());

            var queryResult = await _groupsBucket.QueryAsync <dynamic>(queryRequest);

            if (!queryResult.Success)
            {
                throw queryResult.Exception;
            }

            var queryResultItem = queryResult.Rows.FirstOrDefault();
            var result          = ((IEnumerable <dynamic>)queryResultItem.members).Select((x) => new GetMembersQueryResult
            {
                MemberId   = x.memberId,
                MemberName = x.memberName
            });

            return(result);
        }
示例#2
0
 public async Task <PaginatedList <MemberDTO> > Handle(GetMembersQuery request, CancellationToken cancellationToken)
 {
     return(await _applicationDbContext.Members
            .Where(x => x.BoardId == request.Id)
            .ProjectTo <MemberDTO>(_mapper.ConfigurationProvider)
            .PaginatedListAsync(request.PageNumber, request.PageSize));
 }
示例#3
0
 public async Task <IActionResult> GetMembers([FromQuery] GetMembersQuery query)
 {
     return(Ok(await Mediator.Send(query)));
 }