This commit is contained in:
2020-07-17 16:48:12 +00:00
parent a8a50b15c0
commit 7ccb7feeb4

View File

@@ -115,6 +115,8 @@ namespace AyaNova.Biz
log.LogTrace($"HandlePotentialNotificationEvent processing: [AyaType:{newObject.AyaType}, AyaEvent:{ayaEvent}]"); log.LogTrace($"HandlePotentialNotificationEvent processing: [AyaType:{newObject.AyaType}, AyaEvent:{ayaEvent}]");
//set to true if any changes are made to the context (NotifyEvent added)
bool SaveContext = false;
try try
{ {
@@ -142,16 +144,16 @@ namespace AyaNova.Biz
foreach (var sub in subs) foreach (var sub in subs)
{ {
//todo: match tags if necessary //todo: match tags if necessary
if (sub.Tags.Count > 0) if (TagsMatch(newObject.Tags, sub.Tags))
{ {
if (!sub.Tags.All(z => newObject.Tags.Any(x => x == z))) NotifyEvent n = new NotifyEvent() { EventType = NotifyEventType.ObjectCreated, UserId = sub.UserId, AyaType = newObject.AyaType, ObjectId = newObject.Id, SubscriptionId = sub.Id };
continue; await ct.NotifyEvent.AddAsync(n);
SaveContext = true;
} }
NotifyEvent n = new NotifyEvent() { EventType = NotifyEventType.ObjectCreated, UserId = sub.UserId, AyaType = newObject.AyaType, ObjectId = newObject.Id, SubscriptionId = sub.Id };
await ct.NotifyEvent.AddAsync(n);
} }
if (subs.Count > 0)
await ct.SaveChangesAsync();
} }
break; break;
case AyaEvent.Modified: case AyaEvent.Modified:
@@ -176,6 +178,28 @@ namespace AyaNova.Biz
if (SaveContext)
await ct.SaveChangesAsync();
}
}
catch (Exception ex)
{
log.LogError(ex, $"Error processing event");
}
finally
{
log.LogTrace($"Notify event processing completed");
}
}//eom
//################### FIRST ATTEMPT STUFF //################### FIRST ATTEMPT STUFF
// //find all the Notification subscription subs that are relevant // //find all the Notification subscription subs that are relevant
// //this first query ensures that the equality matching conditions of AyaType and EventType and idValue are matched leaving only more complex matches to rectify below // //this first query ensures that the equality matching conditions of AyaType and EventType and idValue are matched leaving only more complex matches to rectify below
@@ -259,35 +283,18 @@ namespace AyaNova.Biz
// } // }
private static bool TagsMatch(List<string> objectTags, List<string> subTags)
} {
}
catch (Exception ex)
{
log.LogError(ex, $"Error processing event");
}
finally
{
log.LogTrace($"Notify event processing completed");
}
}//eom
private static bool TagsMatch(List<string> objectTags, List<string> subTags){
//no subscription tags? Then it always will match //no subscription tags? Then it always will match
if(subTags.Count==0) return true; if (subTags.Count == 0) return true;
//have sub tags but object has none? Then it's never going to match //have sub tags but object has none? Then it's never going to match
if(objectTags.Count==0) return false; if (objectTags.Count == 0) return false;
//not enought tags on object to match sub tags? //not enought tags on object to match sub tags?
if(subTags.Count > objectTags.Count) return false; if (subTags.Count > objectTags.Count) return false;
//ok, here it's worth checking it out //ok, here it's worth checking it out
if (!sub.Tags.All(z => newObject.Tags.Any(x => x == z))) return subTags.All(z => objectTags.Any(x => x == z));
continue;
} }