public IndexResult AddAssignableIndex(AssignableDTO assignable) { if (assignable.AssignableID == null) { return(new IndexResult()); } if (Exists <EntityDocument>(assignable.AssignableID.Value, DocumentIndexTypeToken.Entity)) { if (_profile.Initialized) { _log.WarnFormat("CANNOT PROCESS '{0}CreatedMessage' FOR ENTITY #{1} - '{2}'. ENTITY HAS ALREADY BEEN ADDED ON PROFILE INITIALIZATION OR ENTITY CREATION !!!", assignable.EntityTypeName, assignable.AssignableID.GetValueOrDefault(), assignable.Name); } else { _log.ErrorFormat("CANNOT PROCESS '{0}CreatedMessage' FOR ENTITY #{1} - '{2}'. ENTITY HAS ALREADY BEEN ADDED !!!", assignable.EntityTypeName, assignable.AssignableID.GetValueOrDefault(), assignable.Name); } return(new IndexResult()); } IDocumentIndex entityIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.Entity); EntityDocument doc = _documentFactory.CreateAssignable(assignable); var indexResult = doc == null ? new IndexResult() : entityIndex.Index(doc, false); if (indexResult.DocNumber != -1) { IDocumentIndex entityProjectIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityProject); entityProjectIndex.Index(indexResult.DocNumber, _documentIdFactory.EncodeProjectId(assignable.ProjectID)); Maybe <string> maybeEntityTypeName = _entityTypeProvider.GetEntityTypeName(assignable.EntityTypeID); string entityTypeName = maybeEntityTypeName.FailIfNothing(() => new ApplicationException("Entity type name was not found {0}".Fmt(assignable.EntityTypeID))); IDocumentIndex entityTypeIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityType); entityTypeIndex.Index(indexResult.DocNumber, entityTypeName); if (assignable.EntityStateID != null) { IDocumentIndex entityStateIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityState); entityStateIndex.Index(indexResult.DocNumber, _documentIdFactory.EncodeEntityStateId(assignable.EntityStateID.Value)); } IDocumentIndex squadIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntitySquad); squadIndex.Index(indexResult.DocNumber, _documentIdFactory.EncodeSquadId(assignable.SquadID)); } _log.Debug(string.Format("Added {0} #{1} - '{2}':{3}", assignable.EntityTypeName, assignable.AssignableID.GetValueOrDefault(), assignable.Name, indexResult.WordsAdded.Any() ? string.Format(" added words - {0};", string.Join(",", indexResult.WordsAdded.Keys)) : " NO WORDS ADDED;")); return(indexResult); }