This commit is contained in:
2020-01-27 18:10:39 +00:00
parent eaefc5649b
commit bda9c6c9ff
4 changed files with 21 additions and 21 deletions

View File

@@ -236,7 +236,7 @@ namespace AyaNova.Api.Controllers
// Search.ProcessNewObjectKeywords( UserLocaleIdFromContext.Id(HttpContext.Items), v.Id, AyaType.FileAttachment, v.DisplayFileName, v.DisplayFileName, v.Notes, v.StoredFileName); // Search.ProcessNewObjectKeywords( UserLocaleIdFromContext.Id(HttpContext.Items), v.Id, AyaType.FileAttachment, v.DisplayFileName, v.DisplayFileName, v.Notes, v.StoredFileName);
var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleIdFromContext.Id(HttpContext.Items), v.Id, AyaType.FileAttachment, v.DisplayFileName); var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleIdFromContext.Id(HttpContext.Items), v.Id, AyaType.FileAttachment, v.DisplayFileName);
SearchParams.AddText(v.Notes).AddText(v.DisplayFileName).AddText(v.StoredFileName); SearchParams.AddText(v.Notes).AddText(v.DisplayFileName).AddText(v.StoredFileName);
Search.ProcessNewObjectKeywords(SearchParams); Search.ProcessNewObjectKeywordsAsync(SearchParams);
} }
} }

View File

@@ -436,14 +436,14 @@ namespace AyaNova.Biz
} }
public static void ProcessNewObjectKeywords(SearchIndexProcessObjectParameters searchIndexObjectParameters)//(long localeId, long objectID, AyaType objectType, string name, params string[] text) public static async Task ProcessNewObjectKeywordsAsync(SearchIndexProcessObjectParameters searchIndexObjectParameters)//(long localeId, long objectID, AyaType objectType, string name, params string[] text)
{ {
ProcessKeywords(searchIndexObjectParameters, true);//localeId, objectID, objectType, true, name, text); await ProcessKeywordsAsync(searchIndexObjectParameters, true);//localeId, objectID, objectType, true, name, text);
} }
public static void ProcessUpdatedObjectKeywords(SearchIndexProcessObjectParameters searchIndexObjectParameters)// localeId, long objectID, AyaType objectType, string name, params string[] text) public static async Task ProcessUpdatedObjectKeywordsAsync(SearchIndexProcessObjectParameters searchIndexObjectParameters)// localeId, long objectID, AyaType objectType, string name, params string[] text)
{ {
ProcessKeywords(searchIndexObjectParameters, false);//localeId, objectID, objectType, false, name, text); await ProcessKeywordsAsync(searchIndexObjectParameters, false);//localeId, objectID, objectType, false, name, text);
} }
public static async Task ProcessDeletedObjectKeywordsAsync(long objectID, AyaType objectType) public static async Task ProcessDeletedObjectKeywordsAsync(long objectID, AyaType objectType)
@@ -463,7 +463,7 @@ namespace AyaNova.Biz
/// Process the keywords into the dictionary /// Process the keywords into the dictionary
/// NOTE: NAME parameter is in ADDITION to the NAME also being one of the strings passed in text parameter /// NOTE: NAME parameter is in ADDITION to the NAME also being one of the strings passed in text parameter
/// </summary> /// </summary>
private static void ProcessKeywords(SearchIndexProcessObjectParameters p, bool newRecord)//long localeId, long objectID, AyaType objectType, string name, params string[] text) private static async Task ProcessKeywordsAsync(SearchIndexProcessObjectParameters p, bool newRecord)//long localeId, long objectID, AyaType objectType, string name, params string[] text)
{ {
#if (DEBUG) #if (DEBUG)
@@ -477,7 +477,7 @@ namespace AyaNova.Biz
//IF NOT NEW, DELETE ALL EXISTING ENTRIES FOR OBJECT TYPE AND ID //IF NOT NEW, DELETE ALL EXISTING ENTRIES FOR OBJECT TYPE AND ID
if (!newRecord) if (!newRecord)
{ {
ProcessDeletedObjectKeywordsAsync(p.ObjectId, p.ObjectType); await ProcessDeletedObjectKeywordsAsync(p.ObjectId, p.ObjectType);
} }
//BREAK OBJECT TEXT STRINGS INTO KEYWORD LIST //BREAK OBJECT TEXT STRINGS INTO KEYWORD LIST
@@ -498,7 +498,7 @@ namespace AyaNova.Biz
List<MatchingDictionaryEntry> MatchingKeywordIdList = new List<MatchingDictionaryEntry>(); List<MatchingDictionaryEntry> MatchingKeywordIdList = new List<MatchingDictionaryEntry>();
//ITERATE ALL THE KEYWORDS, SEARCH IN THE SEARCHDICTIONARY TABLE AND COLLECT ID'S OF ANY PRE-EXISTING IN DB KEYWORDS //ITERATE ALL THE KEYWORDS, SEARCH IN THE SEARCHDICTIONARY TABLE AND COLLECT ID'S OF ANY PRE-EXISTING IN DB KEYWORDS
var ExistingKeywordMatches = ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(m => KeyWordList.Contains(m.Word)).ToDictionary(m => m.Id, m => m.Word); var ExistingKeywordMatches = await ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(m => KeyWordList.Contains(m.Word)).ToDictionaryAsync(m => m.Id, m => m.Word);
/*example of above query, returns a list of words and ids /*example of above query, returns a list of words and ids
SELECT a.id, a.xmin, a.word SELECT a.id, a.xmin, a.word
FROM asearchdictionary AS a FROM asearchdictionary AS a
@@ -599,8 +599,8 @@ cache or provide directly the locale to save time repeatedly fetching it when do
//ADD WORD TO DICTIONARY, SAVE THE ID INTO THE MATCHINGKEYWORDIDLIST //ADD WORD TO DICTIONARY, SAVE THE ID INTO THE MATCHINGKEYWORDIDLIST
var CtAdd = ServiceProviderProvider.DBContext; var CtAdd = ServiceProviderProvider.DBContext;
CtAdd.SearchDictionary.Add(NewWord); await CtAdd.SearchDictionary.AddAsync(NewWord);
CtAdd.SaveChanges(); await CtAdd.SaveChangesAsync();
//------- //-------
@@ -627,7 +627,7 @@ cache or provide directly the locale to save time repeatedly fetching it when do
} }
//FETCH THE WORD ID, PLACE IN MATCHINGKEYWORDLIST AND MOVE ON TO THE NEXT WORD //FETCH THE WORD ID, PLACE IN MATCHINGKEYWORDLIST AND MOVE ON TO THE NEXT WORD
var SearchDictionaryMatchFoundInDB = ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(x => x.Word == KeyWord).FirstOrDefault(); var SearchDictionaryMatchFoundInDB = await ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(x => x.Word == KeyWord).FirstOrDefaultAsync();
if (SearchDictionaryMatchFoundInDB != null) if (SearchDictionaryMatchFoundInDB != null)
{ {
MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = SearchDictionaryMatchFoundInDB.Id, InName = NameKeyWordList.Contains(KeyWord) }); MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = SearchDictionaryMatchFoundInDB.Id, InName = NameKeyWordList.Contains(KeyWord) });
@@ -666,8 +666,8 @@ cache or provide directly the locale to save time repeatedly fetching it when do
NewSearchKeyList.Add(new SearchKey() { WordId = E.DictionaryId, InName = E.InName, ObjectId = p.ObjectId, ObjectType = p.ObjectType }); NewSearchKeyList.Add(new SearchKey() { WordId = E.DictionaryId, InName = E.InName, ObjectId = p.ObjectId, ObjectType = p.ObjectType });
} }
var CtSearchKeyAdd = ServiceProviderProvider.DBContext; var CtSearchKeyAdd = ServiceProviderProvider.DBContext;
CtSearchKeyAdd.SearchKey.AddRange(NewSearchKeyList); await CtSearchKeyAdd.SearchKey.AddRangeAsync(NewSearchKeyList);
CtSearchKeyAdd.SaveChanges(); await CtSearchKeyAdd.SaveChangesAsync();
//--------------------------------- //---------------------------------

View File

@@ -355,9 +355,9 @@ namespace AyaNova.Biz
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.EmployeeNumber).AddText(obj.Tags).AddCustomFields(obj.CustomFields); SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.EmployeeNumber).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
if (isNew) if (isNew)
Search.ProcessNewObjectKeywords(SearchParams); Search.ProcessNewObjectKeywordsAsync(SearchParams);
else else
Search.ProcessUpdatedObjectKeywords(SearchParams); Search.ProcessUpdatedObjectKeywordsAsync(SearchParams);
} }

View File

@@ -68,7 +68,7 @@ namespace AyaNova.Biz
//Called from route and also seeder //Called from route and also seeder
internal async Task<Widget> CreateAsync(Widget inObj) internal async Task<Widget> CreateAsync(Widget inObj)
{ {
Validate(inObj, null); await ValidateAsync(inObj, null);
if (HasErrors) if (HasErrors)
return null; return null;
else else
@@ -146,7 +146,7 @@ namespace AyaNova.Biz
ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = inObj.ConcurrencyToken; ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = inObj.ConcurrencyToken;
Validate(dbObj, SnapshotOfOriginalDBObj); await ValidateAsync(dbObj, SnapshotOfOriginalDBObj);
if (HasErrors) if (HasErrors)
return false; return false;
@@ -176,7 +176,7 @@ namespace AyaNova.Biz
dbObj.CustomFields = JsonUtil.CompactJson(dbObj.CustomFields); dbObj.CustomFields = JsonUtil.CompactJson(dbObj.CustomFields);
ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = concurrencyToken; ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = concurrencyToken;
Validate(dbObj, SnapshotOfOriginalDBObj); await ValidateAsync(dbObj, SnapshotOfOriginalDBObj);
if (HasErrors) if (HasErrors)
return false; return false;
@@ -198,9 +198,9 @@ namespace AyaNova.Biz
if (isNew) if (isNew)
await Search.ProcessNewObjectKeywords(SearchParams); await Search.ProcessNewObjectKeywordsAsync(SearchParams);
else else
await Search.ProcessUpdatedObjectKeywords(SearchParams); await Search.ProcessUpdatedObjectKeywordsAsync(SearchParams);
} }
@@ -232,7 +232,7 @@ namespace AyaNova.Biz
// //
//Can save or update? //Can save or update?
private async Task Validate(Widget proposedObj, Widget currentObj) private async Task ValidateAsync(Widget proposedObj, Widget currentObj)
{ {
//NOTE: In DB schema only name and serial are not nullable //NOTE: In DB schema only name and serial are not nullable