public DTO.SearchResult Search(bool isRKAdmin, Guid clientId, Guid?roleCode = null, Guid?applicationCode = null, Guid?resourceCode = null, string resourceName = null, int?skip = null, int?take = null) { DTO.SearchFilterPermission searchFilter = new DTO.SearchFilterPermission(); searchFilter.ResourceName = resourceName; if (roleCode.HasValue) { searchFilter.RoleCode = roleCode; } if (resourceCode.HasValue) { searchFilter.ResourceCode = resourceCode; } if (skip.HasValue) { searchFilter.Skip = skip; } if (take.HasValue) { searchFilter.Take = take; } if (isRKAdmin) { searchFilter.ApplicationCode = applicationCode; } else { var appStore = appStoreRepository.GetByClientId(clientId); if (appStore != null) { searchFilter.ApplicationCode = appStore.Application.Code; } else { throw new ArgumentException("Aplicação inválida"); } } var result = repository.Search(searchFilter); var permisions = result.Results.Select(p => new DTO.Permission(p)); return(new DTO.SearchResult(permisions).SetResult <Permission>(result)); }
public VO.SearchResult <Permission> Search(DTO.SearchFilterPermission searchFilter) { IQueryable <Permission> result = Collection. Include(x => x.Role). Include(p => p.Resource.Application). Include(x => x.Resource). AsQueryable(); if (!searchFilter.ResourceName.IsNullOrWhiteSpace()) { result = result.Where(p => p.Resource.Name.ToLower().Contains(searchFilter.ResourceName.ToLower())); } if (!searchFilter.ResourceCode.IsNull() && !searchFilter.ResourceCode.IsEmpty()) { result = result.Where(p => p.ResourceCode == searchFilter.ResourceCode); } if (!searchFilter.RoleCode.IsNull() && !searchFilter.RoleCode.IsEmpty()) { result = result.Where(p => p.RoleCode == searchFilter.RoleCode); } if (!searchFilter.ApplicationCode.IsNull() && !searchFilter.ApplicationCode.IsEmpty()) { result = result.Where(p => p.Resource.ApplicationCode == searchFilter.ApplicationCode); } result = result.OrderBy(p => p.SaveDate); var count = result.Count(); result = result.Skip((searchFilter.Skip.Value) * searchFilter.Take.Value); result = result.Take(searchFilter.Take.Value); return(new VO.SearchResult <Permission>(result.ToList(), searchFilter, count)); }