Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. internal class DocumentPermissionsHelper
  2. {
  3. private readonly CustomerModelContext dc;
  4. public GroupPermissionsHelper(CustomerModelContext dc) { this.dc = dc; }
  5.  
  6. public IQueryable<Document> SelectDocumentsAccessibleToUser(IQueryable<Document> query, Guid userId)
  7. {
  8. var permissionsQuery = dc. ... // really big query with multiple JOIN's to determine which user has access to which documents
  9. IQueriable<Guid> docIdsAccessibleToUserQuery =
  10. from permissions in permissionsQuery.Where(_ => _.UserId == userId && _.AccessLevel == "Read")
  11. select permissions.DocumentId;
  12.  
  13. return from accessibleDocId in docIdsAccessibleToUserQuery.Distinct()
  14. from accessibleDoc in query.Where(g => g.Id == accessibleDocId)
  15. select accessibleDoc;
  16. }
  17. }
  18.  
  19. public void GetLatestDocsCount(Guid currentUserId)
  20. {
  21. using (var dc = new MyDbContext(_environment))
  22. {
  23. var helper = new DocumentPermissionsHelper(dc);
  24. var docQuery = dc.Docs.Where(d => d.CreatedDate > DateTime.Now.AddDays(-1));
  25. docQuery = helper.SelectDocumentsAccessibleToUser(docQuery, userId);
  26. int latestDocsCount = docQuery.Count();
  27. return latestDocsCount;
  28. }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement