private void GrantAccessToFoldersToUser(GrantAccessToUserDTO grantAccessToUserDTO, ErrorSink <DuplicateGrantingError> errors) { var destUser = db.Users.FirstOrDefault(u => u.Email == grantAccessToUserDTO.User); if (destUser == null) { throw new GrantAccessToFolderException("Something went wrong when granting access."); } foreach (var folderId in grantAccessToUserDTO.Folders) { var folder = grantAccessToUserDTO.CurrUser.PhotographerFolders.SingleOrDefault(f => f.PhotographerFolderId == folderId); if (folder == null) { throw new GrantAccessToFolderException("Something went wrong when granting access."); } if (destUser.GrantedFolders.Contains(folder)) { errors.AddNewError(new DuplicateGrantingError(destUser, folder)); } else { destUser.GrantedFolders.Add(folder); } } db.SaveChanges(); }