private ICollection <ScholarlyWork> FilterResourcesBasedOnPermissions(AuthenticatedToken token, string userPermission, ICollection <ScholarlyWork> resourceList) { List <ScholarlyWork> filteredResources = new List <ScholarlyWork>(); if (token != null && resourceList != null && resourceList.Count > 0) { using (ResourceDataAccess dataAccess = new ResourceDataAccess()) { if (UserResourcePermissions.Create.Equals(userPermission)) { if (dataAccess.HasCreatePermission(token)) { foreach (ScholarlyWork scholWork in resourceList) { bool isAuthorized = true; foreach (Contact contact in scholWork.Authors.Union(scholWork.Editors)) { Contact cFound = dataAccess.GetResources <Contact>(ResourceStringComparison.Equals, contact.Title).FirstOrDefault(); if (cFound != null && !dataAccess.AuthorizeUser(token, userPermission, cFound.Id)) { isAuthorized = false; break; } } if (isAuthorized) { filteredResources.Add(scholWork); } } } } else { foreach (ScholarlyWork scholWork in resourceList) { if (dataAccess.AuthorizeUser(token, userPermission, scholWork.Id)) { filteredResources.Add(scholWork); } } } } } return(filteredResources); }