public async Task <GroupInvite> CancelOrRejectInviteAsync(NaheulbookExecutionContext executionContext, int groupId, int characterId) { using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var groupInvite = await uow.GroupInvites.GetByCharacterIdAndGroupIdWithGroupWithCharacterAsync(groupId, characterId); if (groupInvite == null) { throw new InviteNotFoundException(characterId, groupId); } _authorizationUtil.EnsureCanDeleteGroupInvite(executionContext, groupInvite); uow.GroupInvites.Remove(groupInvite); await uow.SaveChangesAsync(); var session = _notificationSessionFactory.CreateSession(); session.NotifyCharacterCancelGroupInvite(characterId, groupInvite); session.NotifyGroupCancelGroupInvite(groupId, groupInvite); await session.CommitAsync(); return(groupInvite); } }