diff --git a/server/AyaNova/biz/Search.cs b/server/AyaNova/biz/Search.cs index ed0232c6..a5193771 100644 --- a/server/AyaNova/biz/Search.cs +++ b/server/AyaNova/biz/Search.cs @@ -386,10 +386,13 @@ namespace AyaNova.Biz public List Tags { get; set; } - public SearchIndexProcessObjectParameters(long localeId, long objectID, AyaType objectType, string name) + public SearchIndexProcessObjectParameters(long localeId, long objectID, AyaType objectType, string name, List tags = null) { Words = new List(); - Tags = new List(); + if (tags != null) + Tags = tags; + else + Tags = new List(); LocaleId = localeId; ObjectId = objectID; ObjectType = objectType; @@ -716,7 +719,7 @@ namespace AyaNova.Biz /// internal static List BreakSearchPhrase(long localeId, string searchPhrase) { - List textStrings=new List(); + List textStrings = new List(); textStrings.Add(searchPhrase); return BreakCore(localeId, true, textStrings); } diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index 3ac228df..ccc82b24 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -18,7 +18,7 @@ namespace AyaNova.Biz internal class UserBiz : BizObject, IJobObject, IImportAyaNova7Object { - + public bool SeedOrImportRelaxedRulesMode { get; set; } internal UserBiz(AyContext dbcontext, long currentUserId, long userLocaleId, AuthorizationRoles userRoles) @@ -61,6 +61,7 @@ namespace AyaNova.Biz //do stuff with User User outObj = inObj; outObj.OwnerId = UserId; + outObj.Tags = TagUtil.NormalizeTags(outObj.Tags); //Seeder sets user options in advance so no need to create them here in that case if (outObj.UserOptions == null) outObj.UserOptions = new UserOptions(UserId); @@ -73,9 +74,12 @@ namespace AyaNova.Biz //Log event EventLogProcessor.LogEventToDatabase(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct); - + //SEARCH INDEXING - Search.ProcessNewObjectKeywords( UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.EmployeeNumber, outObj.Notes, outObj.Name); + //Search.ProcessNewObjectKeywords( UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.EmployeeNumber, outObj.Notes, outObj.Name); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Tags); + SearchParams.AddWord(outObj.Notes).AddWord(outObj.Name).AddWord(outObj.EmployeeNumber); + Search.ProcessNewObjectKeywords(SearchParams); return outObj; @@ -98,6 +102,7 @@ namespace AyaNova.Biz //do stuff with User User outObj = inObj; outObj.OwnerId = UserId; + outObj.Tags = TagUtil.NormalizeTags(outObj.Tags); //Seeder sets user options in advance so no need to create them here in that case if (outObj.UserOptions == null) outObj.UserOptions = new UserOptions(UserId); @@ -110,9 +115,12 @@ namespace AyaNova.Biz //Log event EventLogProcessor.LogEventToDatabase(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), TempContext); - + //SEARCH INDEXING - Search.ProcessNewObjectKeywords(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.EmployeeNumber, outObj.Notes, outObj.Name); + // Search.ProcessNewObjectKeywords(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.EmployeeNumber, outObj.Notes, outObj.Name); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Tags); + SearchParams.AddWord(outObj.Notes).AddWord(outObj.Name).AddWord(outObj.EmployeeNumber); + Search.ProcessNewObjectKeywords(SearchParams); return outObj; @@ -130,7 +138,7 @@ namespace AyaNova.Biz if (ret != null) { //Log - EventLogProcessor.LogEventToDatabase(new Event(UserId, fetchId, BizType, AyaEvent.Retrieved), ct); + EventLogProcessor.LogEventToDatabase(new Event(UserId, fetchId, BizType, AyaEvent.Retrieved), ct); } return ret; } @@ -220,16 +228,17 @@ namespace AyaNova.Biz //put internal bool Put(User dbObj, User inObj) { - //preserve the owner ID if none was specified + //preserve the owner ID if none was specified if (inObj.OwnerId == 0) inObj.OwnerId = dbObj.OwnerId; - + //Get a snapshot of the original db value object before changes User SnapshotObj = new User(); CopyObject.Copy(dbObj, SnapshotObj); //Update the db object with the PUT object values CopyObject.Copy(inObj, dbObj, "Id, Salt"); + dbObj.Tags = TagUtil.NormalizeTags(dbObj.Tags); //Is the user updating the password? if (!string.IsNullOrWhiteSpace(inObj.Password) && SnapshotObj.Password != inObj.Password) @@ -255,9 +264,12 @@ namespace AyaNova.Biz //Log modification - EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct); + EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct); //Update keywords - Search.ProcessUpdatedObjectKeywords( UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.EmployeeNumber, dbObj.Notes, dbObj.Name); + // Search.ProcessUpdatedObjectKeywords(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.EmployeeNumber, dbObj.Notes, dbObj.Name); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Tags); + SearchParams.AddWord(dbObj.Notes).AddWord(dbObj.Name).AddWord(dbObj.EmployeeNumber); + Search.ProcessNewObjectKeywords(SearchParams); return true; } @@ -274,6 +286,7 @@ namespace AyaNova.Biz //Do the patching objectPatch.ApplyTo(dbObj); + dbObj.Tags = TagUtil.NormalizeTags(dbObj.Tags); //Is the user patching the password? if (!string.IsNullOrWhiteSpace(dbObj.Password) && dbObj.Password != snapshotObj.Password) @@ -289,9 +302,12 @@ namespace AyaNova.Biz //Log modification EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct); - + //Update keywords - Search.ProcessUpdatedObjectKeywords( UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.EmployeeNumber, dbObj.Notes, dbObj.Name); + // Search.ProcessUpdatedObjectKeywords(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.EmployeeNumber, dbObj.Notes, dbObj.Name); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Tags); + SearchParams.AddWord(dbObj.Notes).AddWord(dbObj.Name).AddWord(dbObj.EmployeeNumber); + Search.ProcessNewObjectKeywords(SearchParams); return true; } diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index bfe3ab39..137ad725 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -99,11 +99,9 @@ namespace AyaNova.Biz EventLogProcessor.LogEventToDatabase(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct); //SEARCH INDEXING - var search = new Search.SearchIndexProcessObjectParameters(); - search.Tags=outObj.Tags; - search.Name=outObj.Name; - search.AddWord(outObj.Notes).AddWord(outObj.Name).AddWord(outObj.Serial); - Search.ProcessNewObjectKeywords(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Notes, outObj.Name, outObj.Serial.ToString()); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Tags); + SearchParams.AddWord(outObj.Notes).AddWord(outObj.Name).AddWord(outObj.Serial); + Search.ProcessNewObjectKeywords(SearchParams); return outObj; @@ -135,8 +133,10 @@ namespace AyaNova.Biz EventLogProcessor.LogEventToDatabase(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), TempContext); //SEARCH INDEXING - Search.ProcessNewObjectKeywords(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Notes, outObj.Name, outObj.Serial.ToString()); - + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Tags); + SearchParams.AddWord(outObj.Notes).AddWord(outObj.Name).AddWord(outObj.Serial); + Search.ProcessNewObjectKeywords(SearchParams); + return outObj; } @@ -295,7 +295,10 @@ namespace AyaNova.Biz EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct); //Update keywords - Search.ProcessUpdatedObjectKeywords(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Notes, dbObj.Name, dbObj.Serial.ToString()); + // Search.ProcessUpdatedObjectKeywords(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Notes, dbObj.Name, dbObj.Serial.ToString()); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Tags); + SearchParams.AddWord(dbObj.Notes).AddWord(dbObj.Name).AddWord(dbObj.Serial); + Search.ProcessNewObjectKeywords(SearchParams); return true; } @@ -321,7 +324,10 @@ namespace AyaNova.Biz EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct); //Update keywords - Search.ProcessUpdatedObjectKeywords(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Notes, dbObj.Name, dbObj.Serial.ToString()); + //Search.ProcessUpdatedObjectKeywords(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Notes, dbObj.Name, dbObj.Serial.ToString()); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Tags); + SearchParams.AddWord(dbObj.Notes).AddWord(dbObj.Name).AddWord(dbObj.Serial); + Search.ProcessNewObjectKeywords(SearchParams); return true; } diff --git a/server/AyaNova/models/User.cs b/server/AyaNova/models/User.cs index 9649b6d4..016aaa41 100644 --- a/server/AyaNova/models/User.cs +++ b/server/AyaNova/models/User.cs @@ -37,12 +37,18 @@ namespace AyaNova.Models public long? HeadOfficeId { get; set; } public long? SubVendorId { get; set; } + public List Tags { get; set; } //relations //https://docs.microsoft.com/en-us/ef/core/modeling/relationships#other-relationship-patterns [JsonIgnore]//hide from being returned (as null anyway) with User object in routes public UserOptions UserOptions { get; set; } + public User() + { + Tags = new List(); + } + } } /*