/// <summary> /// Get all the access requests that users have submitted to the system /// </summary> /// <param name="page"></param> /// <param name="quantity"></param> /// <param name="sort"></param> /// <param name="status"></param> public Paged <AccessRequest> GetAccessRequests(int page = 1, int quantity = 10, string sort = null, AccessRequestStatus status = AccessRequestStatus.OnHold) { var sortArray = !string.IsNullOrWhiteSpace(sort) ? new[] { sort } : new string[0]; var filter = new AccessRequestFilter(page, quantity, sortArray, null, null, null, status); return(GetAccessRequests(filter)); }
/// <summary> /// Get all the access requests that users have match the specified filter /// </summary> /// <param name="filter"></param> public Paged <PimsAccessRequest> Get(AccessRequestFilter filter) { this.User.ThrowIfNotAuthorized(Permissions.AdminUsers); var query = this.Context.PimsAccessRequests .Include(a => a.User) .ThenInclude(u => u.Person) .ThenInclude(p => p.PimsContactMethods) .Include(a => a.Role) .Include(a => a.PimsAccessRequestOrganizations) .ThenInclude(a => a.Organization) .Include(a => a.AccessRequestStatusTypeCodeNavigation) .AsNoTracking(); var userOrganizations = this.User.GetOrganizations(); if (userOrganizations != null && User.HasPermission(Permissions.OrganizationAdmin) && !User.HasPermission(Permissions.SystemAdmin)) { query = query.Where(accessRequest => accessRequest.PimsAccessRequestOrganizations.Any(a => a.OrganizationId.HasValue && userOrganizations.Contains(a.OrganizationId.Value))); } if (!String.IsNullOrWhiteSpace(filter.Status)) { query = query.Where(request => request.AccessRequestStatusTypeCode == filter.Status); } if (!string.IsNullOrWhiteSpace(filter.Role)) { query = query.Where(ar => EF.Functions.Like(ar.Role.Name, $"%{filter.Role}%")); } if (!string.IsNullOrWhiteSpace(filter.Organization)) { query = query.Where(ar => ar.PimsAccessRequestOrganizations.Any(a => EF.Functions.Like(a.Organization.OrganizationName, $"%{filter.Organization}%"))); } if (!string.IsNullOrWhiteSpace(filter.Username)) { query = query.Where(ar => EF.Functions.Like(ar.User.BusinessIdentifierValue, $"%{filter.Username}%")); } var accessRequests = query .Skip((filter.Page - 1) * filter.Quantity) .Take(filter.Quantity); return(new Paged <PimsAccessRequest>(accessRequests, filter.Page, filter.Quantity, query.Count())); }
/// <summary> /// Get all the access requests that users have match the specified filter /// </summary> /// <param name="filter"></param> public Paged <AccessRequest> GetAccessRequests(AccessRequestFilter filter) { this.User.ThrowIfNotAuthorized(Permissions.AdminUsers); var query = this.Context.AccessRequests .Include(p => p.Agencies) .ThenInclude(p => p.Agency) .Include(p => p.Roles) .ThenInclude(p => p.Role) .Include(p => p.User) .AsNoTracking(); var userAgencies = this.User.GetAgencies(); if (userAgencies != null && User.HasPermission(Permissions.AgencyAdmin) && !User.HasPermission(Permissions.SystemAdmin)) { query = query.Where(accessRequest => accessRequest.Agencies.Any(a => userAgencies.Contains(a.AgencyId))); } query = query.Where(request => request.Status == filter.Status); if (!string.IsNullOrWhiteSpace(filter.Role)) { query = query.Where(ar => ar.Roles.Any(r => EF.Functions.Like(r.Role.Name, $"%{filter.Role}%"))); } if (!string.IsNullOrWhiteSpace(filter.Agency)) { query = query.Where(ar => ar.Agencies.Any(a => EF.Functions.Like(a.Agency.Name, $"%{filter.Agency}%"))); } if (!string.IsNullOrWhiteSpace(filter.SearchText)) { query = query.Where(ar => EF.Functions.Like(ar.User.Username, $"%{filter.SearchText}%")); } var accessRequests = query.Skip((filter.Page - 1) * filter.Quantity).Take(filter.Quantity); return(new Paged <AccessRequest>(accessRequests, filter.Page, filter.Quantity, query.Count())); }