using FrameworkDAL.Query.EIPConversation.EIPMessageTemplate; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.EIPConversation.EIPMessageTemplate { public class EIPMessageTemplateDAL : IEIPMessageTemplateDAL { private readonly IQueryExecutor _qe; private readonly ILogger _logger; public EIPMessageTemplateDAL(IQueryExecutor qe, ILogger logger) { _qe = qe ?? throw new ArgumentNullException(nameof(qe)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task GetTemplateContentAsync( int tenantId, string messageKey, string languageCode, byte channelType, LoginDTO loginDTO, CancellationToken ct = default) { try { return await _qe.ExecuteScalarAsync( loginDTO, EIPMessageTemplateQB.GET_TEMPLATE_CONTENT, new { TenantId = tenantId, MessageKey = messageKey, LanguageCode = languageCode, ChannelType = channelType }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception ex) { _logger.LogError(ex, "Failed to look up message template | MessageKey={MessageKey} | Language={Language}", messageKey, languageCode); throw; } } } }