using FrameworkDAL.DTO.EIPConversation; using FrameworkDAL.Query.EIPConversation.EIPCapabilityActionMap; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.EIPConversation.EIPCapabilityActionMap { public class EIPCapabilityActionMapDAL : IEIPCapabilityActionMapDAL { private readonly IQueryExecutor _queryExecutor; private readonly ILogger _logger; public EIPCapabilityActionMapDAL(IQueryExecutor queryExecutor, ILogger logger) { _queryExecutor = queryExecutor ?? throw new ArgumentNullException(nameof(queryExecutor)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task GetActionsByCapabilityAsync(string capabilityCode, LoginDTO loginDTO) { try { var result = await _queryExecutor.QueryAsync( loginDTO, EIPCapabilityActionMapQB.GET_EIPCAPABILITYACTIONMAP, new { CapabilityCode = capabilityCode }); return JsonConvert.SerializeObject(result ?? Array.Empty()); } catch (Exception ex) { _logger.LogError(ex, "Error fetching capability action map | Capability={Capability}", capabilityCode); throw; } } public async Task SaveCapabilityActionMapAsync(EIPCapabilityActionMapDTO dto, LoginDTO loginDTO) { if (dto == null) throw new ArgumentNullException(nameof(dto)); try { return await _queryExecutor.ExecuteAsync(loginDTO, EIPCapabilityActionMapQB.SAVE_EIPCAPABILITYACTIONMAP, dto); } catch (Exception ex) { _logger.LogError(ex, "Error saving capability action map | Capability={Capability} | Action={Action}", dto.CapabilityCode, dto.ActionCode); throw; } } } }