public static RequestResult Query(QueryParameters queryParameters, Account account) { RequestResult result = new RequestResult(); try { using (CFContext context = new CFContext()) { var downStreamOrganizationIds = OrganizationDataAccessor.GetDownStreamOrganizationIds(new Guid(queryParameters.OrganizationId), true); var query = context.Solutions.Where(x => downStreamOrganizationIds.Contains(x.OrganizationId) && account.QueryableOrganizationIds.Contains(x.OrganizationId)).AsQueryable(); if (!string.IsNullOrEmpty(queryParameters.SolutionType)) { query = query.Where(x => x.OrganizationId == new Guid(queryParameters.OrganizationId) && x.Type == queryParameters.SolutionType); } if (!string.IsNullOrEmpty(queryParameters.Keyword)) { query = query.Where(x => x.SId.Contains(queryParameters.Keyword) || x.Name.Contains(queryParameters.Keyword)); } var organization = OrganizationDataAccessor.GetOrganization(new Guid(queryParameters.OrganizationId)); result.ReturnData(new GridViewModel() { OrganizationId = queryParameters.OrganizationId, Permission = account.OrganizationPermission(new Guid(queryParameters.OrganizationId)), SolutionType = queryParameters.SolutionType, OrganizationName = organization.Name, FullOrganizationName = organization.FullName, Items = query.ToList().Select(x => new GridItem() { SolutionId = x.SolutionId.ToString(), Permission = account.OrganizationPermission(x.OrganizationId), OrganizationName = OrganizationDataAccessor.GetOrganizationName(x.OrganizationId), SolutionType = x.Type, SId = x.SId, Name = x.Name }).OrderBy(x => x.OrganizationName).ThenBy(x => x.SolutionType).ThenBy(x => x.SId).ToList() }); } } catch (Exception ex) { var err = new Error(MethodBase.GetCurrentMethod(), ex); Logger.Log(err); result.ReturnError(err); } return(result); }