using Hcs.WebApp.Data.Hcs;

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

        public IManager CreateManager(Campaign campaign)
        {
            return campaign.Type switch
            {
                Campaign.CampaignType.ExportPrivateRegistryElements_15_7_0_1 => new ExportPrivateRegistryElementsManager_15_7_0_1(serviceScopeFactory, operationExecutionState, resultGetState, campaign),
                Campaign.CampaignType.ExportCommonRegistryElements_15_7_0_1 => new ExportCommonRegistryElementsManager_15_7_0_1(serviceScopeFactory, operationExecutionState, resultGetState, campaign),
                Campaign.CampaignType.ParseHousesData_15_7_0_1 => new ParseHousesDataManager_15_7_0_1(serviceScopeFactory, operationExecutionState, resultGetState, campaign)
            };
        }
    }
}
