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); }
public async Task <IActionResult> LeaveGroup([FromBody] LeaveGroupCommand command) { await Mediator.Send(command); return(Ok()); }