Example #1
0
        public async Task <GetGroupByIdQueryResult> GetGroupById(GetGroupByIdQuery getGroupByIdQuery)
        {
            var queryRequest = new QueryRequest()
                               .Statement(@"SELECT META(g).id, g.name, g.description, g.cityId, g.urlKey, ARRAY_COUNT(g.members) as membersCount, topics, OBJECT_CONCAT({'name':r_cities.cityName},{'id':g.cityId}) AS `city`, OBJECT_CONCAT({'name':r_organizers.userName},{'id':g.organizerId}) AS `organizer`
                               FROM `groups` g 
                               INNER JOIN `groups-relations` r_cities ON KEYS 'cities|' || g.cityId
                               INNER JOIN `groups-relations` r_organizers ON KEYS 'users|' || g.organizerId
                               LEFT NEST `groups-relations` r_topics ON KEYS ARRAY 'topics|' || x.topicId FOR x IN g.topics END
                               LET topics = ARRAY {
                                 'id' : t.topicId,
                                 'name' : IFNULL(FIRST x FOR x IN r_topics WHEN META(x).id  = 'topics|' || t.topicId END, MISSING).topicName
                               } FOR t IN g.topics END
                               WHERE META(g).id = $groupId
                               LIMIT 1;")
                               .AddNamedParameter("$groupId", getGroupByIdQuery.GroupId.ToString());

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

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

            var result = queryResult.Rows.FirstOrDefault();

            return(result);
        }
Example #2
0
        public async Task <IActionResult> Get([FromRoute] string groupId)
        {
            var query  = new GetGroupByIdQuery(groupId);
            var result = await _mediator.Send(query);

            return(result != null?Ok(result) : NotFound());
        }
Example #3
0
        public async Task GetGroupByIdHandler_ShouldReturnGroup_WhenGroupExists()
        {
            // Arrange
            GetGroupByIdQuery request = new GetGroupByIdQuery {
                GroupId = 1
            };

            IEnumerable <Group> expectedGroups = new[]
            {
                new Group {
                    GroupId = 1
                }
            };

            IQueryable <Group> queryableMock = expectedGroups
                                               .AsQueryable()
                                               .BuildMock()
                                               .Object;

            _unitOfWorkMock
            .Setup(m => m.Groups.GetById(request.GroupId))
            .Returns(queryableMock);

            GetGroupByIdQuery.Handler handler = new GetGroupByIdQuery.Handler(_mapperMock, _unitOfWorkMock.Object);

            // Act
            GroupResource group = await handler.Handle(request);

            // Assert
            Assert.NotNull(group);
            Assert.Equal(request.GroupId, group.GroupId);
        }
Example #4
0
        public async Task GetGroupByIdHandler_ShouldReturnNull_WhenGroupDoesNotExist()
        {
            // Arrange
            GetGroupByIdQuery request = new GetGroupByIdQuery {
                GroupId = 3891
            };

            IQueryable <Group> emptyQueryable = Enumerable
                                                .Empty <Group>()
                                                .AsQueryable()
                                                .BuildMock()
                                                .Object;

            _unitOfWorkMock
            .Setup(m => m.Groups.GetById(request.GroupId))
            .Returns(emptyQueryable);

            GetGroupByIdQuery.Handler handler = new GetGroupByIdQuery.Handler(_mapperMock, _unitOfWorkMock.Object);

            // Act
            GroupResource group = await handler.Handle(request);

            // Assert
            Assert.Null(group);
        }
Example #5
0
        public async Task <IActionResult> GetGroup(int id)
        {
            var query    = new GetGroupByIdQuery(id);
            var response = await _mediator.Send(query);

            return(_presenter.ToDataResult <JsGroupInfo>(response));
        }
Example #6
0
        public async Task <ActionResult <GroupDto> > GetById(Guid id)
        {
            var query = new GetGroupByIdQuery(id);

            var group = await requestSender.Send(query);

            return(Ok(group));
        }
Example #7
0
        public GroupQuery()
        {
            Name = "GroupQuery";

            this.FieldAsyncWithScope <GroupType, GroupDto>(
                "get",
                arguments:
                new QueryArguments
                (
                    new QueryArgument <NonNullGraphType <IdGraphType> > {
                Name = "id"
            }
                ),
                resolve: async(ctx, mediator) =>
            {
                var query = new GetGroupByIdQuery()
                {
                    Id = ctx.GetString("id")
                };

                var group = await mediator.Send(query);
                return(group);
            }
                );

            this.FieldAsyncWithScope <PageInfoType <GroupType, GroupDto>, PaginatedList <GroupDto> >(
                "getForUser",
                arguments:
                new QueryArgumentsWithPagination
                (
                    new QueryArgument <NonNullGraphType <IdGraphType> > {
                Name = "userId"
            }
                ),
                resolve: async(ctx, mediator) =>
            {
                var query = new GetGroupsForUserQuery()
                {
                    UserId     = ctx.GetString("userId"),
                    PageNumber = ctx.GetInt("pageNumber"),
                    PageSize   = ctx.GetInt("pageSize")
                };


                var groups = await mediator.Send(query);
                return(groups);
            }
                );
        }
Example #8
0
        public async Task <ActionResult <GroupResource> > GetGroupById([FromRoute] int groupId, CancellationToken cancellationToken = default)
        {
            GetGroupByIdQuery query = new GetGroupByIdQuery
            {
                GroupId = groupId
            };

            GroupResource group = await _mediator.Send(query, cancellationToken);

            if (group == null)
            {
                return(NotFound(new ErrorResource
                {
                    StatusCode = StatusCodes.Status404NotFound,
                    Message = $"Group with ID '{groupId}' does not exist"
                }));
            }

            return(Ok(group));
        }
Example #9
0
 public async Task <ActionResult <GroupDto> > GetById([FromQuery] GetGroupByIdQuery query)
 {
     return(await Mediator.Send(query));
 }