using ComplianceDAL.DTO.AdapterConfig; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; namespace ComplianceBLL.Adapter; public class ComplianceAdapterFactory : IComplianceAdapterFactory { private readonly IHttpClientFactory _httpFactory; private readonly ILoggerFactory _loggerFactory; private readonly IConfiguration _config; public ComplianceAdapterFactory(IHttpClientFactory httpFactory, ILoggerFactory loggerFactory, IConfiguration config) { _httpFactory = httpFactory; _loggerFactory = loggerFactory; _config = config; } public IComplianceAdapter GetAdapter(AdapterConfigDTO config) { // GSPId: 1=GSTCafe, 2=MasterSuvidha, 3=ZATCA, 4=Peppol, 5=Direct return config.GSPId switch { 2 => new MasterSuvidhaAdapter(_httpFactory, _loggerFactory.CreateLogger()), 3 => new ZATCAAdapter(_httpFactory, _loggerFactory.CreateLogger()), 4 => new PeppolAdapter(_httpFactory, _loggerFactory.CreateLogger()), _ => new GSTCafeAdapter(_httpFactory, _loggerFactory.CreateLogger(), _config) }; } }