using ComplianceDAL.CustomCode.AdapterConfig; using ComplianceDAL.DTO.AdapterConfig; using GB5Shared.DaprCache; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Microsoft.Extensions.Logging; namespace ComplianceBLL.AdapterConfig; public class AdapterConfigBLL : IAdapterConfigBLL { private readonly IAdapterConfigDAL _dal; private readonly IValidation _validation; private readonly AutoNumber _autoNumber; private readonly KeyInvalidate _keyInvalidate; private readonly ILogger _logger; public AdapterConfigBLL( IAdapterConfigDAL dal, IValidation validation, AutoNumber autoNumber, KeyInvalidate keyInvalidate, ILogger logger) { _dal = dal; _validation = validation; _autoNumber = autoNumber; _keyInvalidate = keyInvalidate; _logger = logger; } public async Task GetAdapterConfig(int adapterConfigId, LoginDTO login, CancellationToken ct) => await _dal.GetAdapterConfig(adapterConfigId, login, ct).ConfigureAwait(false); public async Task GetAdapterConfigList(LoginDTO login, CancellationToken ct) => await _dal.GetAdapterConfigList(login, ct).ConfigureAwait(false); public async Task SaveAdapterConfig(AdapterConfigDTO dto, LoginDTO login, CancellationToken ct) { try { await _validation.NotEmpty(dto.GSTIN, nameof(dto.GSTIN)).ConfigureAwait(false); await _validation.NotEmpty(dto.Framework, nameof(dto.Framework)).ConfigureAwait(false); await _validation.NotEmpty(dto.BaseURL, nameof(dto.BaseURL)).ConfigureAwait(false); if (dto.AdapterConfigId == 0) { var autoNum = await _autoNumber.GetNumberAsync(1, "ADAPTERCONFIG", login).ConfigureAwait(false); dto.AdapterConfigId = autoNum.StartNumber; dto.CreatedById = login.UserId; await _dal.SaveAdapterConfig(dto, login, ct).ConfigureAwait(false); await _keyInvalidate.AllInvalidateCache($"ADAPTERCONFIG:LIST:{login.ClientId}").ConfigureAwait(false); return $"{SuccessResponse.SaveSuccessMessage} {dto.AdapterConfigId}"; } else { dto.ModifiedById = login.UserId; await _dal.UpdateAdapterConfig(dto, login, ct).ConfigureAwait(false); await _keyInvalidate.AllInvalidateCache($"ADAPTERCONFIG:LIST:{login.ClientId}").ConfigureAwait(false); return $"{SuccessResponse.UpdateSuccessMessage} {dto.AdapterConfigId}"; } } catch (Exception ex) { _logger.LogError(ex, "SaveAdapterConfig failed for GSTIN {GSTIN}", dto.GSTIN); throw; } } }