using Hcs.WebApp.Data.Hcs; using Hcs.WebApp.Services; namespace Hcs.WebApp.BackgroundServices.CampaignManagers { public abstract class ManagerBase(OperationExecutionState operationExecutionState, ResultWaitState resultWaitState, Campaign campaign) : IManager { protected readonly OperationExecutionState operationExecutionState = operationExecutionState; protected readonly ResultWaitState resultWaitState = resultWaitState; protected readonly Campaign campaign = campaign; public IManager.ManagerState State { get; protected set; } = IManager.ManagerState.Created; public abstract Task StartAsync(IServiceScope scope); public abstract Task CheckStateAsync(IServiceScope scope); public async Task EndWithFailAsync(IServiceScope scope, Exception e) { State = IManager.ManagerState.Ended; var headquartersService = scope.ServiceProvider.GetRequiredService(); await headquartersService.SetCampaignEndedWithFailAsync(campaign.Id, e.Message); } } }