From b4eb1cc07a29e0a12f1f8c1ea16a2c95db7bf84b Mon Sep 17 00:00:00 2001 From: kola-samuel <74718261+kola-samuel@users.noreply.github.com> Date: Fri, 25 Jun 2021 09:35:00 +0100 Subject: [PATCH] CON-3521 EAS Add Alert Filter (#221) * Handle Alert Filter * Maintain Alert filter * clean up * Fix Build * Upgrade package Co-authored-by: Raj --- .../Apprentice/IndexViewModelMapperTests.cs | 1 + .../WhenGettingFiltersUsedMessage.cs | 13 ++++++++++ .../WhenGettingPageLinks.cs | 2 ++ .../WhenGettingRouteData.cs | 1 + .../WhenGettingSearchOrFiltersApplied.cs | 13 ++++++++++ ...EmployerCommitmentsV2.Web.UnitTests.csproj | 1 + .../Extensions/FiltersMessageExtension.cs | 5 ++++ .../DownloadApprenticesRequestMapper.cs | 1 + .../Apprentice/IndexViewModelMapper.cs | 14 ++++++++-- .../Apprentice/ApprenticesFilterModel.cs | 10 ++++++- .../Models/Apprentice/DownloadRequest.cs | 1 + .../Models/Apprentice/IndexRequest.cs | 1 + .../Views/Apprentice/Index.cshtml | 26 ++++++++++++++++++- 13 files changed, 85 insertions(+), 4 deletions(-) diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Mappers/Apprentice/IndexViewModelMapperTests.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Mappers/Apprentice/IndexViewModelMapperTests.cs index 668050a03..6b077e98c 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Mappers/Apprentice/IndexViewModelMapperTests.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Mappers/Apprentice/IndexViewModelMapperTests.cs @@ -164,6 +164,7 @@ public async Task ShouldMapApiValues( Assert.AreEqual(request.SelectedCourse, viewModel.FilterModel.SelectedCourse); Assert.AreEqual(request.SelectedStatus, viewModel.FilterModel.SelectedStatus); Assert.AreEqual(request.SelectedEndDate, viewModel.FilterModel.SelectedEndDate); + Assert.AreEqual(request.SelectedAlert, viewModel.FilterModel.SelectedAlert); } [Test, MoqAutoData] diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingFiltersUsedMessage.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingFiltersUsedMessage.cs index 70eefc3a7..b70556473 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingFiltersUsedMessage.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingFiltersUsedMessage.cs @@ -94,6 +94,19 @@ public void And_No_Search_And_SelectedEndDate_Then_SelectedEndDate( filterModel.FiltersUsedMessage.Value.Should().Be($"matching {selectedEndDate.ToGdsFormatWithoutDay()}"); } + + [Test, AutoData] + public void And_No_Search_And_SelectedStatus_Then_SelectedStatus(Alerts selectedAlert) + { + var filterModel = new ApprenticesFilterModel + { + SelectedAlert = selectedAlert + }; + + filterModel.FiltersUsedMessage.Value.Should().Be($"matching {selectedAlert.GetDescription()}"); + } + + [Test, AutoData] public void And_Search_And_SelectedProvider_Then_SearchTerm_And_SelectedProvider( string searchTerm, diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingPageLinks.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingPageLinks.cs index 68a8b24e7..9f1ad235c 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingPageLinks.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingPageLinks.cs @@ -19,6 +19,7 @@ public void Then_Adds_PageLink_For_Every_Page() SelectedProvider = "asdsad", SelectedCourse = "iknjso", SelectedStatus = ApprenticeshipStatus.WaitingToStart, + SelectedAlert = Alerts.ChangesForReview, SelectedEndDate = DateTime.Today, TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 3, SortField = "gsd", @@ -39,6 +40,7 @@ public void Then_Adds_PageLink_For_Every_Page() {nameof(filterModel.SelectedProvider), filterModel.SelectedProvider}, {nameof(filterModel.SelectedCourse), filterModel.SelectedCourse}, {nameof(filterModel.SelectedStatus), filterModel.SelectedStatus.ToString()}, + {nameof(filterModel.SelectedAlert), filterModel.SelectedAlert.ToString()}, {nameof(filterModel.SelectedEndDate), filterModel.SelectedEndDate.Value.ToString("yyyy-MM-dd")}, {nameof(filterModel.SortField), filterModel.SortField}, {nameof(filterModel.ReverseSort), filterModel.ReverseSort.ToString()}, diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingRouteData.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingRouteData.cs index be045b987..2950f466d 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingRouteData.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingRouteData.cs @@ -18,6 +18,7 @@ public void Then_Contains_Item_For_Each_Search_And_Filter_Value( {nameof(filterModel.SelectedProvider), filterModel.SelectedProvider}, {nameof(filterModel.SelectedCourse), filterModel.SelectedCourse}, {nameof(filterModel.SelectedStatus), filterModel.SelectedStatus.ToString()}, + {nameof(filterModel.SelectedAlert), filterModel.SelectedAlert.ToString()}, {nameof(filterModel.SelectedEndDate), filterModel.SelectedEndDate.Value.ToString("yyyy-MM-dd")} }); } diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingSearchOrFiltersApplied.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingSearchOrFiltersApplied.cs index 1ecbbab58..3dd184580 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingSearchOrFiltersApplied.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/Models/ApprenticeFilterModelTests/WhenGettingSearchOrFiltersApplied.cs @@ -63,6 +63,17 @@ public void And_Has_SelectedEndDate_Then_True() filterModel.SearchOrFiltersApplied.Should().BeTrue(); } + [Test] + public void And_Has_SelectedAlert_Then_True() + { + var filterModel = new ApprenticesFilterModel + { + SelectedAlert = Alerts.IlrDataMismatch + }; + + filterModel.SearchOrFiltersApplied.Should().BeTrue(); + } + [Test] public void And_No_Search_Or_Filter_Then_False() { @@ -70,5 +81,7 @@ public void And_No_Search_Or_Filter_Then_False() filterModel.SearchOrFiltersApplied.Should().BeFalse(); } + + } } \ No newline at end of file diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests.csproj b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests.csproj index f1d936543..cbc1ece98 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests.csproj +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests/SFA.DAS.EmployerCommitmentsV2.Web.UnitTests.csproj @@ -19,6 +19,7 @@ + diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Extensions/FiltersMessageExtension.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web/Extensions/FiltersMessageExtension.cs index 882f28ef0..543430f37 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Extensions/FiltersMessageExtension.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Extensions/FiltersMessageExtension.cs @@ -60,6 +60,11 @@ private static IList BuildUsedFilterList(ApprenticesFilterModel model) filters.Add(model.SelectedEndDate.Value.ToGdsFormatWithoutDay()); } + if (model.SelectedAlert.HasValue) + { + filters.Add(model.SelectedAlert.Value.GetDescription()); + } + return filters; } } diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/DownloadApprenticesRequestMapper.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/DownloadApprenticesRequestMapper.cs index 4acb57e48..818f80978 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/DownloadApprenticesRequestMapper.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/DownloadApprenticesRequestMapper.cs @@ -43,6 +43,7 @@ public async Task Map(DownloadRequest request) CourseName = request.SelectedCourse, Status = request.SelectedStatus, EndDate = request.SelectedEndDate, + Alert = request.SelectedAlert, PageNumber = 0 }; diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/IndexViewModelMapper.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/IndexViewModelMapper.cs index 90d0c0016..11e4212d7 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/IndexViewModelMapper.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Mappers/Apprentice/IndexViewModelMapper.cs @@ -40,7 +40,8 @@ public async Task Map(IndexRequest source) ProviderName = source.SelectedProvider, CourseName = source.SelectedCourse, Status = source.SelectedStatus, - EndDate = source.SelectedEndDate + EndDate = source.SelectedEndDate, + Alert = source.SelectedAlert }); var statusFilters = new[] @@ -52,6 +53,13 @@ public async Task Map(IndexRequest source) ApprenticeshipStatus.Completed }; + var alertFilters = new[] + { + Alerts.ChangesForReview , + Alerts.ChangesPending, + Alerts.ChangesRequested + }; + var filterModel = new ApprenticesFilterModel { TotalNumberOfApprenticeships = response.TotalApprenticeships, @@ -64,8 +72,10 @@ public async Task Map(IndexRequest source) SelectedProvider = source.SelectedProvider, SelectedCourse = source.SelectedCourse, SelectedStatus = source.SelectedStatus, + SelectedAlert = source.SelectedAlert, SelectedEndDate = source.SelectedEndDate, - StatusFilters = statusFilters + StatusFilters = statusFilters, + AlertFilters = alertFilters }; if (response.TotalApprenticeships >= Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch) diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/ApprenticesFilterModel.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/ApprenticesFilterModel.cs index 7ff7098e7..0188247b3 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/ApprenticesFilterModel.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/ApprenticesFilterModel.cs @@ -14,6 +14,7 @@ public class ApprenticesFilterModel public string SelectedCourse { get; set; } public ApprenticeshipStatus? SelectedStatus { get; set; } public DateTime? SelectedEndDate { get; set; } + public Alerts? SelectedAlert { get; set; } public string SortField { get; set; } public bool ReverseSort { get; set; } @@ -21,6 +22,7 @@ public class ApprenticesFilterModel public IEnumerable CourseFilters { get; set; } = new List(); public IEnumerable StatusFilters { get; set; } = new List(); public IEnumerable EndDateFilters { get; set; } = new List(); + public IEnumerable AlertFilters { get; set; } = new List(); private const int PageSize = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage; public int PagedRecordsFrom => TotalNumberOfApprenticeshipsFound == 0 ? 0 : (PageNumber - 1) * PageSize + 1; @@ -37,7 +39,8 @@ public int PagedRecordsTo { || !string.IsNullOrWhiteSpace(SelectedProvider) || !string.IsNullOrWhiteSpace(SelectedCourse) || SelectedStatus.HasValue - || SelectedEndDate.HasValue; + || SelectedEndDate.HasValue + || SelectedAlert.HasValue; public HtmlString FiltersUsedMessage => this.GetFiltersUsedMessage(); @@ -131,6 +134,11 @@ private Dictionary BuildRouteData() routeData.Add(nameof(SelectedEndDate), SelectedEndDate.Value.ToString("yyyy-MM-dd")); } + if (SelectedAlert.HasValue) + { + routeData.Add(nameof(SelectedAlert), SelectedAlert.Value.ToString()); + } + return routeData; } diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/DownloadRequest.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/DownloadRequest.cs index f91dd37bf..55a5ce4eb 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/DownloadRequest.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/DownloadRequest.cs @@ -10,6 +10,7 @@ public class DownloadRequest public string SelectedProvider { get; set; } public string SelectedCourse { get; set; } public ApprenticeshipStatus? SelectedStatus { get; set; } + public Alerts? SelectedAlert { get; set; } public DateTime? SelectedEndDate { get; set; } } } \ No newline at end of file diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/IndexRequest.cs b/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/IndexRequest.cs index 1a76c68cd..0424a3776 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/IndexRequest.cs +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Models/Apprentice/IndexRequest.cs @@ -20,5 +20,6 @@ public int PageNumber public DateTime? SelectedEndDate { get; set; } public ApprenticeshipStatus? SelectedStatus { get; set; } public bool FromSearch { get; set; } + public Alerts? SelectedAlert { get; set; } } } \ No newline at end of file diff --git a/src/SFA.DAS.EmployerCommitmentsV2.Web/Views/Apprentice/Index.cshtml b/src/SFA.DAS.EmployerCommitmentsV2.Web/Views/Apprentice/Index.cshtml index 41c278ad7..9e0415206 100644 --- a/src/SFA.DAS.EmployerCommitmentsV2.Web/Views/Apprentice/Index.cshtml +++ b/src/SFA.DAS.EmployerCommitmentsV2.Web/Views/Apprentice/Index.cshtml @@ -97,7 +97,8 @@ else -
+
+
@@ -117,6 +118,29 @@ else
+
+
+ + +
+
+ + + +