public RoleSearchResponse SearchRoles(RoleSearchRequest request) { request = request ?? new RoleSearchRequest(); var result = new RoleSearchResponse(); using (var repository = _platformRepository()) { var query = repository.Roles; if (request.Keyword != null) { query = query.Where(r => r.Name.Contains(request.Keyword)); } result.TotalCount = query.Count(); var roles = query .OrderBy(r => r.Name) .Skip(request.SkipCount) .Take(request.TakeCount) .Include(r => r.RolePermissions.Select(rp => rp.Permission)) .Include(r => r.RolePermissions.Select(rp => rp.Scopes)) .ToArray(); var roleAllPermissionScopes = result.Roles = roles.Select(r => r.ToCoreModel(_permissionScopeService)).ToArray(); } return(result); }
public async Task <RoleSearchResponse> Search(RoleSearchRequest request) { RoleSearchResponse response = new RoleSearchResponse(); try { RefSqlPaging paging = new RefSqlPaging(request.PageIndex, 30); RRole[] roles = await _roleService.RoleSearch(request.Name, request.Status, request.DepartmentId, paging); var departments = await _roleService.DepartmentSearchFromDb(string.Empty, 0, new RefSqlPaging(0, Int32.MaxValue)); if (roles != null && roles.Length > 0) { // RDepartment[] departments = await _roleService.DepartmentGetFromDb(roles.Select(p => p.Id).ToArray()); response.Roles = roles.Select(p => p.ToModel(departments.FirstOrDefault(q => q.Id == p.DepartmentId))).ToArray(); } else { response.Roles = new RoleViewModel[0]; } response.Departments = departments.Select(p => p.ToKeyValueTypeStringModel()).ToArray(); response.SetSucess(); } catch (Exception e) { response.SetFail(e); _logger.LogError(e, e.Message, request); } return(response); }