From eb1786da85de8178062942abd44917245a870201 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 27 Jul 2020 23:47:12 +0000 Subject: [PATCH] --- server/AyaNova/biz/NotifyEventProcessor.cs | 4 ++-- server/AyaNova/biz/TranslationBiz.cs | 14 ++++++++++++++ server/AyaNova/generator/CoreJobNotify.cs | 10 +++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/server/AyaNova/biz/NotifyEventProcessor.cs b/server/AyaNova/biz/NotifyEventProcessor.cs index dad321dd..1e5b5523 100644 --- a/server/AyaNova/biz/NotifyEventProcessor.cs +++ b/server/AyaNova/biz/NotifyEventProcessor.cs @@ -101,9 +101,9 @@ namespace AyaNova.Biz //append exception message if not null if (except != null) message += $"\nException error: {ExceptionUtil.ExtractAllExceptionMessages(except)}"; - + foreach (var sub in subs) - { + { //note flag ~SERVER~ means to client to substitute "Server" translation key text instead NotifyEvent n = new NotifyEvent() { EventType = eventType, UserId = sub.UserId, Message = message, NotifySubscriptionId = sub.Id, Name = "~SERVER~" }; await ct.NotifyEvent.AddAsync(n); diff --git a/server/AyaNova/biz/TranslationBiz.cs b/server/AyaNova/biz/TranslationBiz.cs index c463efce..ffd4e7c4 100644 --- a/server/AyaNova/biz/TranslationBiz.cs +++ b/server/AyaNova/biz/TranslationBiz.cs @@ -274,6 +274,20 @@ namespace AyaNova.Biz } } + //used by internal notification and other processes i.e. "Server" in all languages for server based notifications + internal static async Task> GetAllTranslationsForKey(string translationKey) + { + +#if (DEBUG) + TrackRequestedKey(translationKey); +#endif + using (AyContext ct = ServiceProviderProvider.DBContext) + { + return await ct.TranslationItem.Where(z => z.Key == translationKey).AsNoTracking().ToDictionaryAsync(z => z.TranslationId, z => z.Display); + + } + } + //Get the CJKIndex value for the translation specified internal static async Task GetCJKIndexAsync(long translationId, AyContext ct) diff --git a/server/AyaNova/generator/CoreJobNotify.cs b/server/AyaNova/generator/CoreJobNotify.cs index 1bec5df0..7b479d44 100644 --- a/server/AyaNova/generator/CoreJobNotify.cs +++ b/server/AyaNova/generator/CoreJobNotify.cs @@ -39,6 +39,7 @@ namespace AyaNova.Biz //temporary list to hold translations as required during delivery private static Dictionary> _transCache = new Dictionary>(); private static Dictionary _UserTranslationIdCache = new Dictionary(); + private static Dictionary _ServerTheWordTranslations = new Dictionary(); //////////////////////////////////////////////////////////////////////////////////////////////// // DoSweep @@ -117,6 +118,8 @@ namespace AyaNova.Biz _UserTranslationIdCache.Add(userid, transId); await CacheNotifyEventTypeTranslations(transId); } + //cache all translations of the word "Server" for server notifications + _ServerTheWordTranslations = await TranslationBiz.GetAllTranslationsForKey("Server"); //iterate and deliver foreach (var notifyevent in events) @@ -209,7 +212,12 @@ namespace AyaNova.Biz var transid = _UserTranslationIdCache[ne.NotifySubscription.UserId]; - var subject = $"AY:{GetTranslatedNotifyEventName(ne.EventType, transid)}:{ne.Name}"; + var name = ne.Name; + if (name == "~SERVER~") + { + name = _ServerTheWordTranslations.First(z => z.Key == transid).Value; + } + var subject = $"AY:{GetTranslatedNotifyEventName(ne.EventType, transid)}:{name}"; IMailer m = AyaNova.Util.ServiceProviderProvider.Mailer; try