using Hcs.WebApp.Data.Hcs; namespace Hcs.WebApp.BackgroundServices.CampaignManagers { public class ManagerFactory(IServiceScopeFactory serviceScopeFactory, OperationExecutionState operationExecutionState, ResultGetState resultGetState, DataParsingState dataParsingState) { protected readonly IServiceScopeFactory serviceScopeFactory = serviceScopeFactory; protected readonly OperationExecutionState operationExecutionState = operationExecutionState; protected readonly ResultGetState resultGetState = resultGetState; protected readonly DataParsingState dataParsingState = dataParsingState; public IManager CreateManager(Campaign campaign) { var type = campaign.Type switch { Campaign.CampaignType.ExportPrivateRegistryElements_15_7_0_1 => typeof(ExportPrivateRegistryElementsManager_15_7_0_1), Campaign.CampaignType.ExportCommonRegistryElements_15_7_0_1 => typeof(ExportCommonRegistryElementsManager_15_7_0_1), Campaign.CampaignType.ParseHousesData_15_7_0_1 => typeof(ParseHousesDataManager_15_7_0_1), Campaign.CampaignType.ExportSupplyContracts_15_7_0_1 => typeof(ExportSupplyContractsManager_15_7_0_1), }; var args = new object[] { serviceScopeFactory, operationExecutionState, resultGetState, dataParsingState, campaign }; var instance = Activator.CreateInstance(type, args); return (IManager)instance!; } } }