diff --git a/src/administration/Administration.Service/BusinessLogic/SubscriptionConfigurationBusinessLogic.cs b/src/administration/Administration.Service/BusinessLogic/SubscriptionConfigurationBusinessLogic.cs index 2f5c909bbe..c2d373a3c1 100644 --- a/src/administration/Administration.Service/BusinessLogic/SubscriptionConfigurationBusinessLogic.cs +++ b/src/administration/Administration.Service/BusinessLogic/SubscriptionConfigurationBusinessLogic.cs @@ -128,13 +128,8 @@ private async Task HandleOfferSetupProcesses(Guid companyId, ICompanyRepository .ToListAsync() .ConfigureAwait(false); - foreach (var context in processData - .Where(x => x.Process != null && x.ProcessSteps?.Any(ps => ps is - { - ProcessStepStatusId: ProcessStepStatusId.TODO, - ProcessStepTypeId: ProcessStepTypeId.RETRIGGER_PROVIDER - }) == true) - .Select(data => data.CreateManualProcessData(ProcessStepTypeId.RETRIGGER_PROVIDER, portalRepositories, () => $"processId {data.Process!.Id}"))) + foreach (var context in processData.Select(data => + data.CreateManualProcessData(ProcessStepTypeId.RETRIGGER_PROVIDER, portalRepositories, () => $"processId {data.Process!.Id}"))) { context.FinalizeProcessStep(); context.ScheduleProcessSteps(Enumerable.Repeat(ProcessStepTypeId.AWAIT_START_AUTOSETUP, 1)); diff --git a/src/portalbackend/PortalBackend.DBAccess/Repositories/CompanyRepository.cs b/src/portalbackend/PortalBackend.DBAccess/Repositories/CompanyRepository.cs index c4611c3a44..b198c7be8f 100644 --- a/src/portalbackend/PortalBackend.DBAccess/Repositories/CompanyRepository.cs +++ b/src/portalbackend/PortalBackend.DBAccess/Repositories/CompanyRepository.cs @@ -487,8 +487,13 @@ public IAsyncEnumerable> Get context.Companies .Where(c => c.Id == companyId) .SelectMany(c => c.ProvidedOffers.SelectMany(po => - po.OfferSubscriptions.Select(os => - new VerifyProcessData( + po.OfferSubscriptions.Where(x => + x.Process != null && + x.Process!.ProcessSteps.Any(ps => + ps.ProcessStepStatusId == ProcessStepStatusId.TODO && + ps.ProcessStepTypeId == ProcessStepTypeId.RETRIGGER_PROVIDER + )) + .Select(os => new VerifyProcessData( os.Process, os.Process!.ProcessSteps.Where(ps => ps.ProcessStepStatusId == ProcessStepStatusId.TODO))))) .ToAsyncEnumerable(); diff --git a/tests/administration/Administration.Service.Tests/BusinessLogic/SubscriptionConfigurationBusinessLogicTests.cs b/tests/administration/Administration.Service.Tests/BusinessLogic/SubscriptionConfigurationBusinessLogicTests.cs index 7c7ef25cbe..e6e4844726 100644 --- a/tests/administration/Administration.Service.Tests/BusinessLogic/SubscriptionConfigurationBusinessLogicTests.cs +++ b/tests/administration/Administration.Service.Tests/BusinessLogic/SubscriptionConfigurationBusinessLogicTests.cs @@ -236,10 +236,8 @@ public async Task SetProviderCompanyDetailsAsync_WithProviderDetailsAndNoUrl_Rem // Arrange SetupProviderCompanyDetails(); var providerCompanyId = Guid.NewGuid(); - var process1Id = Guid.NewGuid(); - var process2Id = Guid.NewGuid(); - var processStep1Id = Guid.NewGuid(); - var processStep2Id = Guid.NewGuid(); + var processId = Guid.NewGuid(); + var processStepId = Guid.NewGuid(); var providerDetailData = new ProviderDetailData(null, null); A.CallTo(() => _companyRepository.GetProviderCompanyDetailsExistsForUser(ExistingCompanyId)) .Returns((providerCompanyId, null!, null)); @@ -247,11 +245,8 @@ public async Task SetProviderCompanyDetailsAsync_WithProviderDetailsAndNoUrl_Rem .Returns(new List> { new( - new Process(process1Id, ProcessTypeId.OFFER_SUBSCRIPTION, Guid.NewGuid()), - Enumerable.Repeat(new ProcessStep(processStep1Id, ProcessStepTypeId.RETRIGGER_PROVIDER, ProcessStepStatusId.TODO, process1Id, DateTimeOffset.UtcNow), 1)), - new( - new Process(process2Id, ProcessTypeId.OFFER_SUBSCRIPTION, Guid.NewGuid()), - Enumerable.Repeat(new ProcessStep(processStep2Id, ProcessStepTypeId.AWAIT_START_AUTOSETUP, ProcessStepStatusId.TODO, process2Id, DateTimeOffset.UtcNow), 1)) + new Process(processId, ProcessTypeId.OFFER_SUBSCRIPTION, Guid.NewGuid()), + Enumerable.Repeat(new ProcessStep(processStepId, ProcessStepTypeId.RETRIGGER_PROVIDER, ProcessStepStatusId.TODO, processId, DateTimeOffset.UtcNow), 1)) }.ToAsyncEnumerable()); // Act @@ -270,10 +265,8 @@ public async Task SetProviderCompanyDetailsAsync_WithCallbackUrlChanged_HandlesP { // Arrange SetupProviderCompanyDetails(); - var process1Id = Guid.NewGuid(); - var process2Id = Guid.NewGuid(); - var processStep1Id = Guid.NewGuid(); - var processStep2Id = Guid.NewGuid(); + var processId = Guid.NewGuid(); + var processStepId = Guid.NewGuid(); var providerDetailData = new ProviderDetailData(null, null); A.CallTo(() => _companyRepository.GetProviderCompanyDetailsExistsForUser(ExistingCompanyId)) .Returns((ExistingCompanyId, "https://example.org", "https://example.org/callback")); @@ -281,11 +274,8 @@ public async Task SetProviderCompanyDetailsAsync_WithCallbackUrlChanged_HandlesP .Returns(new List> { new( - new Process(process1Id, ProcessTypeId.OFFER_SUBSCRIPTION, Guid.NewGuid()), - Enumerable.Repeat(new ProcessStep(processStep1Id, ProcessStepTypeId.RETRIGGER_PROVIDER, ProcessStepStatusId.TODO, process1Id, DateTimeOffset.UtcNow), 1)), - new( - new Process(process2Id, ProcessTypeId.OFFER_SUBSCRIPTION, Guid.NewGuid()), - Enumerable.Repeat(new ProcessStep(processStep2Id, ProcessStepTypeId.AWAIT_START_AUTOSETUP, ProcessStepStatusId.TODO, process2Id, DateTimeOffset.UtcNow), 1)) + new Process(processId, ProcessTypeId.OFFER_SUBSCRIPTION, Guid.NewGuid()), + Enumerable.Repeat(new ProcessStep(processStepId, ProcessStepTypeId.RETRIGGER_PROVIDER, ProcessStepStatusId.TODO, processId, DateTimeOffset.UtcNow), 1)), }.ToAsyncEnumerable()); // Act @@ -296,7 +286,7 @@ public async Task SetProviderCompanyDetailsAsync_WithCallbackUrlChanged_HandlesP A.CallTo(() => _companyRepository.CreateProviderCompanyDetail(A._, A._, A>._)).MustNotHaveHappened(); A.CallTo(() => _companyRepository.AttachAndModifyProviderCompanyDetails(A._, A>._, A>._)).MustNotHaveHappened(); A.CallTo(() => _processStepRepository.AttachAndModifyProcessSteps(A>? Initialize, Action> Modify)>>._)).MustHaveHappenedOnceExactly(); - A.CallTo(() => _processStepRepository.AttachAndModifyProcessSteps(A>? Initialize, Action> Modify)>>.That.Matches(x => x.Count() == 1 && x.Single().ProcessStepId == processStep1Id))).MustHaveHappenedOnceExactly(); + A.CallTo(() => _processStepRepository.AttachAndModifyProcessSteps(A>? Initialize, Action> Modify)>>.That.Matches(x => x.Count() == 1 && x.Single().ProcessStepId == processStepId))).MustHaveHappenedOnceExactly(); A.CallTo(() => _processStepRepository.CreateProcessStepRange(A>._)).MustHaveHappenedOnceExactly(); A.CallTo(() => _processStepRepository.CreateProcessStepRange(A>.That.Matches(x => x.Count() == 1 && x.Single().ProcessStepTypeId == ProcessStepTypeId.AWAIT_START_AUTOSETUP))).MustHaveHappenedOnceExactly(); A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly();