public override async Task <RemoveUserFromDomainResponse> RemoveUserFromDomain(RemoveUserFromDomainRequest request, ServerCallContext context) { var domain = await dbContext.Domains.FindIfNullThrowAsync(request.DomainId); var user = await dbContext.Users.FindIfNullThrowAsync(request.UserId); var assignment = await dbContext.UserDomainAssignments.FirstIfNotNullThrowAsync(x => x.Domain == domain && x.User == user); dbContext.UserDomainAssignments.Remove(assignment); await dbContext.SaveChangesAsync(); return(new RemoveUserFromDomainResponse { }); }
public override async Task <RemoveUserFromDomainResponse> RemoveUserFromDomain(RemoveUserFromDomainRequest request, ServerCallContext context) { var domain = await dbContext.Domains.FindIfNullThrowAsync(request.DomainId); var user = await dbContext.Users.FindIfNullThrowAsync(request.UserId); // remove the domain assignment var domainAssignment = await dbContext.UserDomainAssignments .FirstOrDefaultAsync(x => x.Domain == domain && x.User == user) ?? throw EntityNotFoundException.Create <UserDomainAssignment>($"DomainId {request.DomainId} and UserId {request.UserId}"); dbContext.UserDomainAssignments.Remove(domainAssignment); // remove the project assignment var projectAssignments = dbContext.UserProjectAssignments .Where(x => x.Project.Domain == domain && x.User == user); dbContext.UserProjectAssignments.RemoveRange(projectAssignments); await dbContext.SaveChangesAsync(); return(new RemoveUserFromDomainResponse { }); }