Exemplo n.º 1
0
        public List<Resource> FindResources(ResourceType resourceType, string searchString, string stateFilter)
        {
            var templateId = resourceType != null ? resourceType.Id : 0;
            var searchValue = searchString.ToLower();

            using (var w = WorkspaceFactory.CreateReadOnly())
            {
                var result =
                    w.Query<Resource>(
                        x =>
                        x.ResourceTypeId == templateId &&
                        (x.CustomData.Contains(searchString) || x.Name.ToLower().Contains(searchValue))).Take(250).ToList();

                if (resourceType != null)
                    result = result.Where(x => resourceType.GetMatchingFields(x, searchString).Any(y => !y.Hidden) || x.Name.ToLower().Contains(searchValue)).ToList();

                if (!string.IsNullOrEmpty(stateFilter))
                {
                    var sv = string.Format("\"S\":\"{0}\"", stateFilter);
                    var set = result.Select(x => x.Id).ToList();
                    var ids = w.Queryable<ResourceStateValue>().Where(x => set.Contains(x.ResoruceId) && x.ResourceStates.Contains(sv)).GroupBy(x => x.ResoruceId).Select(x => x.Max(y => y.Id));
                    var resourceIds = w.Queryable<ResourceStateValue>().Where(x => ids.Contains(x.Id)).Select(x => x.ResoruceId).ToList();
                    result = result.Where(x => resourceIds.Contains(x.Id)).ToList();
                }
                return result;
            }
        }
Exemplo n.º 2
0
        public List<Resource> SearchResources(string searchString, ResourceType selectedResourceType, int stateFilter)
        {
            var templateId = selectedResourceType != null ? selectedResourceType.Id : 0;
            var searchValue = searchString.ToLower();

            using (var w = WorkspaceFactory.CreateReadOnly())
            {
                var result =
                    w.Query<Resource>(
                        x =>
                        x.ResourceTypeId == templateId &&
                        (x.CustomData.Contains(searchString) || x.Name.ToLower().Contains(searchValue))).Take(250).ToList();

                if (selectedResourceType != null)
                    result = result.Where(x => selectedResourceType.GetMatchingFields(x, searchString).Any(y => !y.Hidden) || x.Name.ToLower().Contains(searchValue)).ToList();

                if (stateFilter > 0)
                {
                    var set = result.Select(x => x.Id).ToList();
                    var ids = w.Queryable<ResourceStateValue>().Where(x => set.Contains(x.ResoruceId) && x.StateId == stateFilter).GroupBy(x => x.ResoruceId).Select(x => x.Max(y => y.Id));
                    var resourceIds = w.Queryable<ResourceStateValue>().Where(x => ids.Contains(x.Id)).Select(x => x.ResoruceId).ToList();
                    result = result.Where(x => resourceIds.Contains(x.Id)).ToList();
                }
                return result;
            }
        }