Exemple #1
0
        public async Task LeaveGroup(LeaveGroupCommand leaveGroupCommand)
        {
            //var queryRequest = new QueryRequest()
            //    .Statement("UPDATE groups SET members = ARRAY m FOR m IN members WHEN m.memberId != $memberId END WHERE META().id = $groupId;")
            //    .AddNamedParameter("$groupId", leaveGroupCommand.GroupId)
            //    .AddNamedParameter("$memberId", leaveGroupCommand.MemberId);

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

            //if (!queryResult.Success)
            //    throw queryResult.Exception;

            var queryRequest = new QueryRequest()
                               .Statement($"UPDATE `{_groupsBucket.Name}` USE KEYS $groupId SET members = ARRAY_REMOVE(members, $memberId);")
                               .AddNamedParameter("$groupId", leaveGroupCommand.GroupId)
                               .AddNamedParameter("$memberId", new GroupMemberDocument {
                MemberId = leaveGroupCommand.MemberId
            });

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

            if (!queryResult.Success)
            {
                throw queryResult.Exception;
            }
        }
        public async Task <IActionResult> LeaveGroup(int uId, int gId)
        {
            var leaveGroupCommand = new LeaveGroupCommand(uId, gId);

            await _mediator.Send(leaveGroupCommand);

            return(Ok());
        }
        public void LeaveNonExistingUser()
        {
            var command = new LeaveGroupCommand()
            {
                UserId  = 1,
                GroupId = 1
            };
            var handler = new LeaveGroupCommandHandler(Context);

            Assert.Throws <AggregateException>(() => handler.Handle(command, CancellationToken.None).Result);
        }
        public async void LeaveExistingGroupOk()
        {
            var user = new User()
            {
                Name     = "Sofia",
                LastName = "Cunha",
                Mail     = "*****@*****.**",
                Password = "******"
            };

            Context.Users.Add(user);
            var group = new Group()
            {
                Name        = "La pedrera",
                Admin       = user,
                Memberships = new List <Membership>()
            };

            Context.Groups.Add(group);
            var mem = new Membership()
            {
                User    = user,
                Group   = group,
                UserId  = user.Id,
                GroupId = group.Id
            };

            Context.Memberships.Add(mem);
            group.Memberships.Add(mem);
            var command = new LeaveGroupCommand()
            {
                UserId  = user.Id,
                GroupId = group.Id
            };
            var handler = new LeaveGroupCommandHandler(Context);

            await handler.Handle(command, CancellationToken.None);

            Assert.Empty(Memberships);
            Assert.NotEmpty(Groups);
        }
Exemple #5
0
        public async Task <IActionResult> LeaveGroup([FromBody] LeaveGroupCommand command)
        {
            await Mediator.Send(command);

            return(Ok());
        }