From 3826d3717404697063d9b1b510c4f72d93afad34 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 19 Nov 2020 22:17:30 +0000 Subject: [PATCH] --- .../Controllers/TranslationController.cs | 2 +- server/AyaNova/biz/TranslationBiz.cs | 36 ++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/server/AyaNova/Controllers/TranslationController.cs b/server/AyaNova/Controllers/TranslationController.cs index b0c70a03..d4a559b2 100644 --- a/server/AyaNova/Controllers/TranslationController.cs +++ b/server/AyaNova/Controllers/TranslationController.cs @@ -189,7 +189,7 @@ namespace AyaNova.Api.Controllers { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - var l = await TranslationBiz.GetSubsetStaticAsync(inObj, id); + var l = await TranslationBiz.GetSpecifiedTranslationSubsetStaticAsync(inObj, id); return Ok(ApiOkResponse.Response(l)); } diff --git a/server/AyaNova/biz/TranslationBiz.cs b/server/AyaNova/biz/TranslationBiz.cs index 8b54cdd8..105ece56 100644 --- a/server/AyaNova/biz/TranslationBiz.cs +++ b/server/AyaNova/biz/TranslationBiz.cs @@ -246,19 +246,47 @@ namespace AyaNova.Biz #endif - //Get the keys for a list of keys provided + ///////////////////////////////////////////////////////////////// + // Get subset for currently logged in user's translation id + // Standard used by translationcontroller for logged in user + // + // internal async Task>> GetSubsetAsync(List param) { #if (DEBUG) TrackRequestedKey(param); #endif - var ret = await ct.TranslationItem.Where(z => z.TranslationId == UserTranslationId && param.Contains(z.Key)).ToDictionaryAsync(z => z.Key, z => z.Display); + var ret = await ct.TranslationItem.Where(z => z.TranslationId == UserTranslationId && param.Contains(z.Key)).AsNoTracking().ToDictionaryAsync(z => z.Key, z => z.Display); return ret.ToList(); } - //Get the keys for a list of keys provided, static format for calling from other internal classes - //and remotely when fetching for things like Password reset where the user isn't logged in yet but we know their translation id + ///////////////////////////////////////////////////////////////// + // Get subset for specified translation ID + // called from controller and Used when user is not logged in + // e.g. when resetting their password + // + internal static async Task>> GetSpecifiedTranslationSubsetStaticAsync(List param, long translationId) + { +#if (DEBUG) + TrackRequestedKey(param); +#endif + using (AyContext ct = ServiceProviderProvider.DBContext) + { + if (!await ct.Translation.AnyAsync(e => e.Id == translationId)) + translationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID; + var ret = await ct.TranslationItem.Where(z => z.TranslationId == translationId && param.Contains(z.Key)).AsNoTracking().ToDictionaryAsync(z => z.Key, z => z.Display); + return ret.ToList(); + } + } + + + ///////////////////////////////////////////////////////////////// + // Get subset for specified translation ID statically + // called from internal code differs from + // GetSpecifiedTranslationSubsetStaticAsync above only in return signature + // and used for internal classes to call + // internal static async Task> GetSubsetStaticAsync(List param, long translationId) { #if (DEBUG)