Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- internal class DocumentPermissionsHelper
- {
- private readonly CustomerModelContext dc;
- public GroupPermissionsHelper(CustomerModelContext dc) { this.dc = dc; }
- public IQueryable<Document> SelectDocumentsAccessibleToUser(IQueryable<Document> query, Guid userId)
- {
- var permissionsQuery = dc. ... // really big query with multiple JOIN's to determine which user has access to which documents
- IQueriable<Guid> docIdsAccessibleToUserQuery =
- from permissions in permissionsQuery.Where(_ => _.UserId == userId && _.AccessLevel == "Read")
- select permissions.DocumentId;
- return from accessibleDocId in docIdsAccessibleToUserQuery.Distinct()
- from accessibleDoc in query.Where(g => g.Id == accessibleDocId)
- select accessibleDoc;
- }
- }
- public void GetLatestDocsCount(Guid currentUserId)
- {
- using (var dc = new MyDbContext(_environment))
- {
- var helper = new DocumentPermissionsHelper(dc);
- var docQuery = dc.Docs.Where(d => d.CreatedDate > DateTime.Now.AddDays(-1));
- docQuery = helper.SelectDocumentsAccessibleToUser(docQuery, userId);
- int latestDocsCount = docQuery.Count();
- return latestDocsCount;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement