public async Task <List <CatalogBO> > GetByTypeAsync(string type) { var catalogList = await _queries.GetByTypeAsync(type); if (catalogList != null) { return(catalogList .Select(rec => MapEntityToModel(rec)) .ToList()); } return(null); }
public async Task <SearchTagBO> SearchRulesAsync(List <Guid> collectionsSelected, List <Guid> containersSelected, List <int> tagsSelected, string name, string diagnostic, int?detailsDestination, int?severityId) { SearchTagBO result = new SearchTagBO(); List <Rule> allRules = await _ruleQueries .GetByCollectionOrContainerOrTagAsync(collectionsSelected, containersSelected, tagsSelected .ToList()); if (!string.IsNullOrEmpty(name)) { allRules = allRules .Where(rec => rec.Name.ToLower().Contains(name.ToLower())) .ToList(); } if (!string.IsNullOrEmpty(diagnostic)) { allRules = allRules .Where(rec => rec.DiagnosticSql.ToLower().Contains(diagnostic.ToLower())) .ToList(); } if (detailsDestination != null) { var collectionsByDestination = await _collectionQueries.GetByRulesDestinationIdAsync(detailsDestination.Value); if (collectionsByDestination != null && collectionsByDestination.Any()) { List <Guid> containersByDestination = new List <Guid>(); foreach (var collection in collectionsByDestination) { if (collection.ChildContainers != null && collection.ChildContainers.Any()) { containersByDestination.AddRange(collection.ChildContainers.Select(rec => rec.Id)); } } if (containersByDestination.Any()) { containersByDestination = containersByDestination.Distinct().ToList(); allRules = allRules .Where(rec => containersByDestination.Contains(rec.ContainerId)) .ToList(); } } } if (severityId != null) { allRules = allRules .Where(rec => rec.ErrorSeverityLevel == severityId.Value) .ToList(); } result.Rules = allRules .Select(rec => MapEntityToModel(rec)) .ToList(); if (result.Rules != null && result.Rules.Count > 0) { var listEnvironmentType = await _catalogQueries.GetByTypeAsync("EnvironmentType"); List <Guid> containersParents = result .Rules .Select(rec => rec.ContainerId) .ToList(); containersParents = containersParents.Distinct().ToList(); List <Container> allContainersParents = await _collectionQueries .GetByListAsync(containersParents); List <Container> allContainersMain = await _collectionQueries .GetByListAsync(allContainersParents.Select(rec => rec.ParentContainerId.Value).ToList()); foreach (RuleBO rule in result.Rules) { Container existParent = allContainersParents.FirstOrDefault(rec => rec.Id == rule.ContainerId); if (existParent != null && existParent.ParentContainerId != null) { Container existParentMain = allContainersMain.FirstOrDefault(rec => rec.Id == existParent.ParentContainerId.Value); if (existParentMain != null) { Catalog existType = listEnvironmentType.FirstOrDefault(rec => rec.Id == existParentMain.EnvironmentType); if (existType != null) { rule.ParentContainer = existParentMain.Id; rule.EnvironmentTypeText = existType.Name; rule.CollectionContainerName = $"{existParentMain.Name}/{existParent.Name}"; rule.ContainerName = existParent.Name; rule.CollectionName = existParentMain.Name; } } } } result.Rules = result.Rules.OrderBy(rec => rec.CollectionContainerName).ToList(); } return(result); }