diff --git a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/CompliancePaymentRequest.cs b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/CompliancePaymentRequest.cs index 006f7ebc0..7cb38a33f 100644 --- a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/CompliancePaymentRequest.cs +++ b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/CompliancePaymentRequest.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + namespace EPR.RegulatorService.Frontend.Core.Models.RegistrationSubmissions; public class CompliancePaymentRequest @@ -11,6 +13,7 @@ public class CompliancePaymentRequest public IEnumerable ComplianceSchemeMembers { get; set; } } +[ExcludeFromCodeCoverage] public class ComplianceSchemeMemberRequest { public required string MemberId { get; set; } diff --git a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/ProducerDetailsDto.cs b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/ProducerDetailsDto.cs index 742726930..da1b1098b 100644 --- a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/ProducerDetailsDto.cs +++ b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/ProducerDetailsDto.cs @@ -1,5 +1,8 @@ +using System.Diagnostics.CodeAnalysis; + namespace EPR.RegulatorService.Frontend.Core.Models.RegistrationSubmissions.FacadeCommonData; +[ExcludeFromCodeCoverage] public class ProducerDetailsDto { public string ProducerType { get; set; } @@ -8,6 +11,8 @@ public class ProducerDetailsDto public int NoOfSubsidiaries { get; set; } + public int NumberOfLateSubsidiaries { get; set; } + public bool IsLateFeeApplicable { get; set; } public bool IsProducerOnlineMarketplace { get; set; } diff --git a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/RegistrationSubmissionOrganisationDetailsResponse.cs b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/RegistrationSubmissionOrganisationDetailsResponse.cs index f9f6e0f27..bc7753998 100644 --- a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/RegistrationSubmissionOrganisationDetailsResponse.cs +++ b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/FacadeCommonData/RegistrationSubmissionOrganisationDetailsResponse.cs @@ -44,6 +44,7 @@ public class RegistrationSubmissionOrganisationDetailsResponse public bool IsOnlineMarketPlace { get; set; } public int NumberOfSubsidiaries { get; set; } public int NumberOfOnlineSubsidiaries { get; set; } + public int NumberOfLateSubsidiaries { get; set; } public bool IsLateSubmission { get; set; } public string OrganisationSize { get; set; } public bool IsComplianceScheme { get; set; } diff --git a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/ProducerPaymentRequest.cs b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/ProducerPaymentRequest.cs index b3c219c14..de447d0d3 100644 --- a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/ProducerPaymentRequest.cs +++ b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/ProducerPaymentRequest.cs @@ -1,5 +1,8 @@ +using System.Diagnostics.CodeAnalysis; + namespace EPR.RegulatorService.Frontend.Core.Models.RegistrationSubmissions; +[ExcludeFromCodeCoverage] public class ProducerPaymentRequest { public required string ApplicationReferenceNumber { get; set; } @@ -8,6 +11,8 @@ public class ProducerPaymentRequest public int NumberOfSubsidiaries { get; set; } + public int NumberOfLateSubsidiaries { get; set; } + public bool IsLateFeeApplicable { get; set; } public bool IsProducerOnlineMarketplace { get; set; } diff --git a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/RegistrationSubmissionOrganisationDetails.cs b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/RegistrationSubmissionOrganisationDetails.cs index d27b3a4dc..7a60df476 100644 --- a/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/RegistrationSubmissionOrganisationDetails.cs +++ b/src/EPR.RegulatorService.Frontend.Core/Models/RegistrationSubmissions/RegistrationSubmissionOrganisationDetails.cs @@ -163,6 +163,7 @@ public static implicit operator RegistrationSubmissionOrganisationDetails(Regist IsProducerOnlineMarketplace = response.IsOnlineMarketPlace, NoOfSubsidiaries = response.NumberOfSubsidiaries, NoOfSubsidiariesOnlineMarketPlace = response.NumberOfOnlineSubsidiaries, + NumberOfLateSubsidiaries = response.NumberOfLateSubsidiaries, ProducerType = response.OrganisationSize } }; diff --git a/src/EPR.RegulatorService.Frontend.UnitTests/Web/ViewComponents/ProducerPaymentDetailsViewComponentTests.cs b/src/EPR.RegulatorService.Frontend.UnitTests/Web/ViewComponents/ProducerPaymentDetailsViewComponentTests.cs index d0af1e3cc..fe151591a 100644 --- a/src/EPR.RegulatorService.Frontend.UnitTests/Web/ViewComponents/ProducerPaymentDetailsViewComponentTests.cs +++ b/src/EPR.RegulatorService.Frontend.UnitTests/Web/ViewComponents/ProducerPaymentDetailsViewComponentTests.cs @@ -56,11 +56,11 @@ public async Task InvokeAsync_Returns_CorrectView_With_DefaultModel_When_Service } [TestMethod] - [DataRow("large", "Large", false)] - [DataRow("small", "Small", false)] - [DataRow("large", "Large", true)] - [DataRow("small", "Small", true)] - public async Task InvokeAsync_Returns_CorrectView_With_Model(string organisationSize, string expectedProducerSize, bool isResubmission) + [DataRow("large", "Large", false, true, 0)] + [DataRow("small", "Small", false, false, 1)] + [DataRow("large", "Large", true, true, 0)] + [DataRow("small", "Small", true, false, 3)] + public async Task InvokeAsync_Returns_CorrectView_With_Model(string organisationSize, string expectedProducerSize, bool isResubmission, bool isLateFeeApplicable, int numOfLateSubsidiaries) { // Arrange _paymentFacadeServiceMock.Setup(x => x.GetProducerPaymentDetailsAsync( @@ -76,7 +76,9 @@ public async Task InvokeAsync_Returns_CorrectView_With_Model(string organisation TotalOutstanding = 500.00M, SubsidiariesFeeBreakdown = new SubsidiariesFeeBreakdownResponse { OnlineMarketPlaceSubsidiariesCount = 1, SubsidiaryOnlineMarketPlaceFee = 200.00M } - }); + }).Callback(m => { + m.NumberOfLateSubsidiaries.Should().Be(numOfLateSubsidiaries); + }); _registrationSumissionDetailsViewModel.ProducerDetails.ProducerType = organisationSize; _registrationSumissionDetailsViewModel.IsResubmission = isResubmission; _registrationSumissionDetailsViewModel.SubmissionDetails = new SubmissionDetailsViewModel @@ -84,6 +86,8 @@ public async Task InvokeAsync_Returns_CorrectView_With_Model(string organisation TimeAndDateOfSubmission = DateTime.UtcNow.AddDays(-1), TimeAndDateOfResubmission = DateTime.UtcNow }; + _registrationSumissionDetailsViewModel.ProducerDetails.IsLateFeeApplicable = isLateFeeApplicable; + _registrationSumissionDetailsViewModel.ProducerDetails.NumberOfLateSubsidiaries = numOfLateSubsidiaries; // Act var result = await _sut.InvokeAsync(_registrationSumissionDetailsViewModel); diff --git a/src/EPR.RegulatorService.Frontend.Web/ViewComponents/RegistrationSubmissions/ProducerPaymentDetailsViewComponent.cs b/src/EPR.RegulatorService.Frontend.Web/ViewComponents/RegistrationSubmissions/ProducerPaymentDetailsViewComponent.cs index b00bda6c6..90f69f6ae 100644 --- a/src/EPR.RegulatorService.Frontend.Web/ViewComponents/RegistrationSubmissions/ProducerPaymentDetailsViewComponent.cs +++ b/src/EPR.RegulatorService.Frontend.Web/ViewComponents/RegistrationSubmissions/ProducerPaymentDetailsViewComponent.cs @@ -28,6 +28,7 @@ public async Task InvokeAsync(RegistrationSubmissionDet ApplicationReferenceNumber = viewModel.ReferenceNumber, NoOfSubsidiariesOnlineMarketplace = viewModel.ProducerDetails.NoOfSubsidiariesOnlineMarketPlace, NumberOfSubsidiaries = viewModel.ProducerDetails.NoOfSubsidiaries, + NumberOfLateSubsidiaries = viewModel.ProducerDetails.IsLateFeeApplicable ? 0 : viewModel.ProducerDetails.NumberOfLateSubsidiaries, IsLateFeeApplicable = viewModel.ProducerDetails.IsLateFeeApplicable, IsProducerOnlineMarketplace = viewModel.ProducerDetails.IsProducerOnlineMarketplace, ProducerType = viewModel.ProducerDetails.ProducerType,