From b15e2a37364eaf65ae27e7e7c285c912521aac55 Mon Sep 17 00:00:00 2001 From: Thomas Cheyney Date: Wed, 27 Nov 2024 18:11:40 +0000 Subject: [PATCH] feat: Add error prefix to title when error is triggered --- .../FamilyHubsUi/Options/FamilyHubsUiOptions.cs | 2 ++ .../FamilyHubsUi/Options/IFamilyHubsUiOptions.cs | 1 + .../Header/IHasErrorStatePageModel.cs | 8 ++++++++ .../src/FamilyHubs.SharedKernel.Razor/Layout/ViewStart.cs | 7 +++++++ .../Pages/Shared/_Head.cshtml | 2 +- .../Pages/My-Account/ChangeName.cshtml.cs | 3 ++- .../Pages/Shared/ProfessionalReferralCacheModel.cs | 3 ++- 7 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Header/IHasErrorStatePageModel.cs diff --git a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/FamilyHubsUiOptions.cs b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/FamilyHubsUiOptions.cs index 700cb77e3..3396fa8a3 100644 --- a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/FamilyHubsUiOptions.cs +++ b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/FamilyHubsUiOptions.cs @@ -55,6 +55,8 @@ public FamilyHubsUiOptions GetAlternative(string serviceName) return alternativeFamilyHubsUi; } + public bool IsError { get; set; } + /// /// Returns an absolute URL from the Urls config section/dictionary, with an optional relativeUrl applied to the base.. /// diff --git a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/IFamilyHubsUiOptions.cs b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/IFamilyHubsUiOptions.cs index 6415e66fa..09d1b1288 100644 --- a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/IFamilyHubsUiOptions.cs +++ b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/FamilyHubsUi/Options/IFamilyHubsUiOptions.cs @@ -29,6 +29,7 @@ public interface IFamilyHubsUiOptions FooterOptions Footer { get; set; } FamilyHubsUiOptions GetAlternative(string serviceName); + bool IsError { get; set; } Uri Url(TUrlKeyEnum baseUrl, string? relativeUrl = null) where TUrlKeyEnum : struct, Enum; diff --git a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Header/IHasErrorStatePageModel.cs b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Header/IHasErrorStatePageModel.cs new file mode 100644 index 000000000..3eaf485a8 --- /dev/null +++ b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Header/IHasErrorStatePageModel.cs @@ -0,0 +1,8 @@ +using FamilyHubs.SharedKernel.Razor.ErrorNext; + +namespace FamilyHubs.SharedKernel.Razor.Header; + +public interface IHasErrorStatePageModel +{ + public IErrorState Errors { get; } +} diff --git a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Layout/ViewStart.cs b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Layout/ViewStart.cs index acb5df682..65dc79c74 100644 --- a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Layout/ViewStart.cs +++ b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Layout/ViewStart.cs @@ -1,6 +1,7 @@ using FamilyHubs.SharedKernel.Razor.AlternativeServices; using FamilyHubs.SharedKernel.Razor.FamilyHubsUi; using FamilyHubs.SharedKernel.Razor.FamilyHubsUi.Extensions; +using FamilyHubs.SharedKernel.Razor.Header; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.ViewFeatures; @@ -20,6 +21,12 @@ public static void InitialiseFamilyHubs(FamilyHubsLayoutModel familyHubsLayoutMo familyHubsLayoutModel.FamilyHubsUiOptions = Options.Create(altFamilyHubsUiOptions); } } + + if (pageModel is IHasErrorStatePageModel hasErrorStatePageModel) + { + familyHubsLayoutModel.FamilyHubsUiOptions.Value.IsError = hasErrorStatePageModel.Errors.HasErrors; + } + viewData.SetFamilyHubsLayoutModel(familyHubsLayoutModel); } } \ No newline at end of file diff --git a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Pages/Shared/_Head.cshtml b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Pages/Shared/_Head.cshtml index adb511e81..0789b8268 100644 --- a/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Pages/Shared/_Head.cshtml +++ b/src/shared/web-components/src/FamilyHubs.SharedKernel.Razor/Pages/Shared/_Head.cshtml @@ -4,7 +4,7 @@ -@ViewData["Title"] - @Model.ServiceName - GOV.UK +@if (Model.IsError) { <text>Error: </text> }@ViewData["Title"] - @Model.ServiceName - GOV.UK diff --git a/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/My-Account/ChangeName.cshtml.cs b/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/My-Account/ChangeName.cshtml.cs index 8d3f5bf19..a5185ecb8 100644 --- a/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/My-Account/ChangeName.cshtml.cs +++ b/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/My-Account/ChangeName.cshtml.cs @@ -4,11 +4,12 @@ using FamilyHubs.Referral.Web.Pages.Shared; using FamilyHubs.SharedKernel.Identity; using FamilyHubs.SharedKernel.Razor.ErrorNext; +using FamilyHubs.SharedKernel.Razor.Header; using Microsoft.AspNetCore.Mvc; namespace FamilyHubs.Referral.Web.Pages.My_Account; -public class ChangeNameModel : HeaderPageModel +public class ChangeNameModel : HeaderPageModel, IHasErrorStatePageModel { private readonly IIdamsClient _idamsClient; diff --git a/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/Shared/ProfessionalReferralCacheModel.cs b/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/Shared/ProfessionalReferralCacheModel.cs index 61d5af880..4e2937543 100644 --- a/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/Shared/ProfessionalReferralCacheModel.cs +++ b/src/ui/connect-ui/src/FamilyHubs.Referral.Web/Pages/Shared/ProfessionalReferralCacheModel.cs @@ -2,11 +2,12 @@ using FamilyHubs.Referral.Core.Models; using FamilyHubs.Referral.Web.Errors; using FamilyHubs.SharedKernel.Razor.ErrorNext; +using FamilyHubs.SharedKernel.Razor.Header; using Microsoft.AspNetCore.Mvc; namespace FamilyHubs.Referral.Web.Pages.Shared; -public class ProfessionalReferralCacheModel : ProfessionalReferralModel +public class ProfessionalReferralCacheModel : ProfessionalReferralModel, IHasErrorStatePageModel { // we could stop passing this to get/set public ConnectionRequestModel? ConnectionRequestModel { get; set; }