Example #1
0
        private BpmSearchResponseEntity FillBpmResponseEntity(ESHit esHit)
        {
            _entityName   = esHit.Type;
            _entitySchema = _userConnection.EntitySchemaManager.GetInstanceByName(_entityName);
            var responseEntity = new BpmSearchResponseEntity {
                Id           = esHit.Id,
                EntityName   = _entityName,
                ColumnValues = new Dictionary <string, object>(),
                FoundColumns = new Dictionary <string, string[]>()
            };
            var columnValues     = responseEntity.ColumnValues;
            var foundColumns     = responseEntity.FoundColumns;
            var availableColumns = _entitySchema.Columns
                                   .Where(x => _userConnection.DBSecurityEngine
                                          .GetIsEntitySchemaColumnReadingAllowed(_entitySchema.Name,
                                                                                 x.IsLookupType ? $"{x.Name}{x.ReferenceSchema.PrimaryColumn.Name}" : x.Name));

            if (UseLocalizableGlobalSearchResult)
            {
                var entityValues = GetLocalizableEntityValues(_entitySchema, Guid.Parse(esHit.Id), availableColumns);
                foreach (var column in availableColumns)
                {
                    columnValues.Add(column.Name, entityValues[column.Name]);
                    AddHighlights(esHit, column, foundColumns, columnValues);
                }
            }
            else
            {
                foreach (var column in availableColumns)
                {
                    if (column.IsLookupType)
                    {
                        AddLookupColumnValue(esHit, column, columnValues);
                    }
                    else
                    {
                        AddColumnValue(esHit, column, columnValues);
                    }
                    AddHighlights(esHit, column, foundColumns, columnValues);
                }
            }
            AddDetailsHighlight(responseEntity, esHit);
            return(responseEntity);
        }
Example #2
0
        private void AddDetailsHighlight(BpmSearchResponseEntity responseEntity, ESHit esHit)
        {
            var highlights = esHit.Highlight;

            if (highlights != null)
            {
                var detailsHighlights = esHit.Highlight.Where(s => s.Key.StartsWith(ESConstants.DetailsPrefix) &&
                                                              !s.Key.EndsWith("id"));
                IEnumerable <IGrouping <string, string[]> > groupedDetailsHighlights =
                    detailsHighlights.GroupBy(x => GetDetailNameByKey(x.Key), x => x.Value);
                foreach (var detailsHighlight in groupedDetailsHighlights)
                {
                    var detailEntityName = detailsHighlight.Key.Replace(string.Format("{0}.", ESConstants.DetailsPrefix), "");
                    var highlightValues  = detailsHighlight.Select(x => string.Join(" ... ", x)).ToArray();
                    var detailCaption    = GetDetailCaption(detailEntityName);
                    responseEntity.FoundColumns.Add(detailEntityName, GetHighLightMathces(highlightValues));
                    responseEntity.ColumnValues.Add(detailEntityName, new {
                        caption      = detailCaption,
                        displayValue = _replaceHighlightRegex.Replace(string.Join(" ... ", highlightValues), "")
                    });
                }
            }
        }