using Hcs.WebApp.Data.Hcs;

namespace Hcs.WebApp.BackgroundServices.CampaignManagers
{
    public class ManagerFactory(IServiceScopeFactory serviceScopeFactory, OperationExecutionState operationExecutionState, ResultWaitState resultWaitState)
    {
        protected readonly IServiceScopeFactory serviceScopeFactory = serviceScopeFactory;
        protected readonly OperationExecutionState operationExecutionState = operationExecutionState;
        protected readonly ResultWaitState resultWaitState = resultWaitState;

        public IManager? CreateManager(Campaign campaign)
        {
            return campaign.Type switch
            {
                Campaign.CampaignType.ExportPrivateRegistryElements_15_7_0_1 => new ExportPrivateRegistryElementsManager_15_7_0_1(serviceScopeFactory, operationExecutionState, resultWaitState, campaign),
                Campaign.CampaignType.ExportCommonRegistryElements_15_7_0_1 => new ExportCommonRegistryElementsManager_15_7_0_1(serviceScopeFactory, operationExecutionState, resultWaitState, campaign),

                _ => null,
            };
        }
    }
}
