Skip to content

Commit

Permalink
Updated get a trn journey
Browse files Browse the repository at this point in the history
  • Loading branch information
MrKevJoy committed Jan 24, 2025
1 parent 926d6c1 commit fb51196
Show file tree
Hide file tree
Showing 47 changed files with 1,864 additions and 224 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,32 @@ public string NotFound(JourneyInstanceId journeyInstanceId) =>
public string SignOut(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/SignOut", journeyInstanceId: journeyInstanceId);

public string RequestTrn(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/Index", journeyInstanceId: journeyInstanceId);
public string RequestTrn(JourneyInstanceId journeyInstanceId, string? AccessToken = null) =>
GetRequiredPathByPage("/RequestTrn/Index", routeValues: new { AccessToken }, journeyInstanceId: journeyInstanceId);

public string TakingNpqRequireTrn(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/TakingNpq", journeyInstanceId: journeyInstanceId);

public string RequestTrnNpqCheck(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/NpqCheck", journeyInstanceId: journeyInstanceId);

public string RequestTrnWorkingInSchoolOrEducationalSetting(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/SchoolOrEducationalSetting", journeyInstanceId: journeyInstanceId);

public string RequestTrnNpqApplication(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/NpqApplication", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);

public string RequestTrnNpqName(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/NpqName", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);

public string RequestTrnNotEligible(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/NotEligible", journeyInstanceId: journeyInstanceId);

public string RequestTrnEmail(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/Email", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);
public string RequestTrnWorkEmail(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/WorkEmail", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);

public string RequestTrnPersonalEmail(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/PersonalEmail", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);

public string RequestTrnName(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/Name", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);
Expand All @@ -68,6 +83,10 @@ public string RequestTrnAddress(JourneyInstanceId journeyInstanceId, bool? fromC
public string RequestTrnCheckAnswers(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/CheckAnswers", journeyInstanceId: journeyInstanceId);

public string RequestTrnNpqTrainingProvider(JourneyInstanceId journeyInstanceId, bool? fromCheckAnswers = null) =>
GetRequiredPathByPage("/RequestTrn/NpqTrainingProvider", routeValues: new { fromCheckAnswers }, journeyInstanceId: journeyInstanceId);


public string RequestTrnEmailInUse(JourneyInstanceId journeyInstanceId) =>
GetRequiredPathByPage("/RequestTrn/EmailInUse", journeyInstanceId: journeyInstanceId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,55 @@
<h1 class="govuk-heading-l">@ViewBag.Title</h1>

<govuk-summary-list>
<govuk-summary-list-row>
<govuk-summary-list-row-key>Email</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.Email</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnEmail(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="email">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
@if (!string.IsNullOrEmpty(Model.NpqApplicationId))
{
<govuk-summary-list-row>
<govuk-summary-list-row-key>NPQ application ID</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.NpqApplicationId</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnNpqApplication(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="email">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
}
else
{
<govuk-summary-list-row>
<govuk-summary-list-row-key>NPQ</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.NpqName</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnNpqName(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="email">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
<govuk-summary-list-row>
<govuk-summary-list-row-key>NPQ Provider</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.NpqProvider</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnNpqTrainingProvider(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="email">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
}
@if (!string.IsNullOrEmpty(Model.WorkEmail))
{
<govuk-summary-list-row>
<govuk-summary-list-row-key>Work email</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.WorkEmail</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnWorkEmail(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="email">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
}
@if (!string.IsNullOrEmpty(Model.PersonalEmail))
{
<govuk-summary-list-row>
<govuk-summary-list-row-key>Personal email</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.PersonalEmail</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnPersonalEmail(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="email">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
}


<govuk-summary-list-row>
<govuk-summary-list-row-key>Name</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.Name</govuk-summary-list-row-value>
Expand Down Expand Up @@ -64,7 +106,9 @@
@Model.AddressLine1<br />
@if (!string.IsNullOrWhiteSpace(Model.AddressLine2))
{
@Model.AddressLine2<br />
@Model.AddressLine2

<br />
}
@Model.TownOrCity<br />
@Model.PostalCode<br />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class CheckAnswersModel(AuthorizeAccessLinkGenerator linkGenerator, ICrmQ

public RequestTrnJourneyState? JourneyState { get; set; }

public string? Email { get; set; }
public string? WorkEmail { get; set; }

public string? Name { get; set; }

Expand All @@ -45,10 +45,14 @@ public class CheckAnswersModel(AuthorizeAccessLinkGenerator linkGenerator, ICrmQ
public string? PostalCode { get; set; }

public string? Country { get; set; }
public string? NpqApplicationId { get; set; }
public string? PersonalEmail { get; set; }
public string? NpqName { get; set; }
public string? NpqProvider { get; set; }

public async Task OnGetAsync()
{
Email = JourneyInstance!.State.Email;
WorkEmail = JourneyInstance!.State.WorkEmail;
Name = JourneyInstance!.State.Name;
PreviousName = JourneyInstance!.State.PreviousName;
DateOfBirth = JourneyInstance!.State.DateOfBirth;
Expand All @@ -64,18 +68,26 @@ await fileService.GetFileUrlAsync(JourneyInstance!.State.EvidenceFileId!.Value,
TownOrCity = JourneyInstance!.State.TownOrCity;
PostalCode = JourneyInstance!.State.PostalCode;
Country = JourneyInstance!.State.Country;
NpqApplicationId = JourneyInstance!.State.NpqApplicationId;
PersonalEmail = JourneyInstance!.State.PersonalEmail;
NpqName = JourneyInstance!.State.NpqName;
NpqProvider = JourneyInstance!.State.NpqTrainingProvider;
}

public async Task<IActionResult> OnPostAsync()
{
var state = JourneyInstance!.State;

var description = $"""
Email: {state.Email}
WorkEmail: {state.WorkEmail}
Name: {state.Name}
Personal Email: {state.PersonalEmail}
Previous name: {state.PreviousName}
Date of birth: {state.DateOfBirth:dd/MM/yyyy}
National Insurance number: {NationalInsuranceNumberHelper.Normalize(state.NationalInsuranceNumber)}
NPQ application ID: {state.NpqApplicationId}
NPQ name: {state.NpqName}
NPQ training provider: {state.NpqTrainingProvider}
""";
if (state.HasNationalInsuranceNumber == false)
{
Expand Down Expand Up @@ -104,7 +116,7 @@ await crmQueryDispatcher.ExecuteQueryAsync(
EvidenceFileName = JourneyInstance!.State.EvidenceFileName!,
EvidenceFileContent = stream,
EvidenceFileMimeType = evidenceFileMimeType,
EmailAddress = JourneyInstance!.State.Email!
EmailAddress = JourneyInstance!.State.WorkEmail!
});

await JourneyInstance!.UpdateStateAsync(state => state.HasPendingTrnRequest = true);
Expand All @@ -119,9 +131,18 @@ public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
{
context.Result = Redirect(linkGenerator.RequestTrnSubmitted(JourneyInstance!.InstanceId));
}
else if (state.Email is null)
else if (state.HaveRegisteredForAnNpq is null && state.NpqApplicationId is null)
{
context.Result = Redirect(linkGenerator.RequestTrnEmail(JourneyInstance.InstanceId));
context.Result = Redirect(linkGenerator.RequestTrnNpqApplication(JourneyInstance.InstanceId));
}
else if (state.WorkEmail is null && state.WorkingInSchoolOrEducationalSetting == true)
{
context.Result = Redirect(linkGenerator.RequestTrnWorkEmail(JourneyInstance.InstanceId));
}
else if (state.PersonalEmail is null)
{
// personal email is required for either WorkingInSchoolOrEducationalSetting being true or false
context.Result = Redirect(linkGenerator.RequestTrnPersonalEmail(JourneyInstance.InstanceId));
}
else if (state.Name is null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
}

@section BeforeContent {
<govuk-back-link href="@(LinkGenerator.RequestTrnEmail(Model.JourneyInstance!.InstanceId))" />
<govuk-back-link href="@(LinkGenerator.RequestTrnWorkEmail(Model.JourneyInstance!.InstanceId))" />
}

<div class="govuk-grid-row">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ public class EmailInUseModel(AuthorizeAccessLinkGenerator linkGenerator) : PageM
public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
{
var state = JourneyInstance!.State;
if (state.Email is null)
if (state.WorkEmail is null)
{
context.Result = Redirect(linkGenerator.RequestTrnEmail(JourneyInstance.InstanceId));
context.Result = Redirect(linkGenerator.RequestTrnWorkEmail(JourneyInstance.InstanceId));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
@page "/request-trn"
@model TeachingRecordSystem.AuthorizeAccess.Pages.RequestTrn.IndexModel
@{
ViewBag.Title = "Get a teacher reference number (TRN)";
ViewBag.Title = "Request a teacher reference number for a national professional qualification";
}

<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<h1 class="govuk-heading-l">@ViewBag.Title</h1>
<p class="govuk-body">Use this service to get a teacher reference number (TRN) if you’re registering for a national professional qualification (NPQ).</p>
<p class="govuk-body">Use this service to get a teacher reference number (TRN) if you plan on taking a national professional qualification (NPQ).</p>
</div>
</div>

<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<p class="govuk-body">Do not use this service if:</p>
<ul class="govuk-list govuk-list--bullet">
<li>you’ve forgotten your TRN or you’re not sure if you have one - use the <a class="govuk-link" href="https://find-a-lost-trn.education.gov.uk/start">Find a lost TRN</a> service instead</li>
<li>you need a TRN because you’re a mentor for a trainee or early career teacher - request one via Galaxkey instead</li>
<li>you need a TRN for a different reason - <a class="govuk-link" href="https://www.gov.uk/guidance/teacher-reference-number-trn#what-youll-need-a-trn-for">find out what you need a TRN for</a></li>
</ul>
</div>
</div>

Expand All @@ -24,4 +35,4 @@
</div>
</div>

<govuk-button-link href="@LinkGenerator.RequestTrnNpqCheck(Model.JourneyInstance!.InstanceId)" is-start-button="true">Start now</govuk-button-link>
<govuk-button-link href="@LinkGenerator.TakingNpqRequireTrn(Model.JourneyInstance!.InstanceId)" is-start-button="true">Start now</govuk-button-link>
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
}

@section BeforeContent {
<govuk-back-link href="@(Model.FromCheckAnswers == true ? LinkGenerator.RequestTrnCheckAnswers(Model.JourneyInstance!.InstanceId) : LinkGenerator.RequestTrnEmail(Model.JourneyInstance!.InstanceId))" />
<govuk-back-link href="@(Model.FromCheckAnswers == true ? LinkGenerator.RequestTrnCheckAnswers(Model.JourneyInstance!.InstanceId) : LinkGenerator.RequestTrnPersonalEmail(Model.JourneyInstance!.InstanceId))" />
}

<div class="govuk-grid-row">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,13 @@ public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
{
context.Result = Redirect(linkGenerator.RequestTrnSubmitted(JourneyInstance!.InstanceId));
}
else if (state.Email is null)
else if (state.PersonalEmail is null)
{
context.Result = Redirect(linkGenerator.RequestTrnEmail(JourneyInstance.InstanceId));
context.Result = Redirect(linkGenerator.RequestTrnPersonalEmail(JourneyInstance.InstanceId));
}
else if (state.WorkEmail is null && state.WorkingInSchoolOrEducationalSetting == true)
{
context.Result = Redirect(linkGenerator.RequestTrnWorkEmail(JourneyInstance.InstanceId));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
}

@section BeforeContent {
<govuk-back-link href="@LinkGenerator.RequestTrnNpqCheck(Model.JourneyInstance!.InstanceId)" />
<govuk-back-link href="@LinkGenerator.TakingNpqRequireTrn(Model.JourneyInstance!.InstanceId)" />
}

<div class="govuk-grid-row">
<div class="govuk-grid-column-full-from-desktop">
<h1 class="govuk-heading-l">@ViewBag.Title</h1>

<p class="govuk-body">You can only use this service if you need a TRN to register for an NPQ.</p>
<p class="govuk-body">You can only use this service if you need a TRN because you’re taking an NPQ.</p>
<p class="govuk-body">
Find out how to <a class="govuk-link" href="https://www.gov.uk/guidance/teacher-reference-number-trn#if-youre-a-mentor-for-a-trainee-or-early-career-teacher">get a TRN if you’re a mentor for a trainee or early career teacher</a>.
</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
{
context.Result = Redirect(linkGenerator.RequestTrnSubmitted(JourneyInstance!.InstanceId));
}
else if (state.IsPlanningToTakeAnNpq is null)
else if (state.IsTakingNpq is null)
{
context.Result = Redirect(linkGenerator.RequestTrnNpqCheck(JourneyInstance!.InstanceId));
context.Result = Redirect(linkGenerator.TakingNpqRequireTrn(JourneyInstance!.InstanceId));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
@page "/request-trn/npq-application"
@model TeachingRecordSystem.AuthorizeAccess.Pages.RequestTrn.NpqApplicationModel
@{
ViewBag.Title = Html.DisplayNameFor(m => m.NpqApplicationId);
}

@section BeforeContent {
<govuk-back-link href="@(Model.FromCheckAnswers == true ? LinkGenerator.RequestTrnCheckAnswers(Model.JourneyInstance!.InstanceId) : LinkGenerator.RequestTrnNpqCheck(Model.JourneyInstance!.InstanceId))" />
}

<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<form action="@LinkGenerator.RequestTrnNpqApplication(Model.JourneyInstance!.InstanceId, Model.FromCheckAnswers)" method="post">
<govuk-input asp-for="NpqApplicationId" spellcheck="false">
<govuk-input-label is-page-heading="true" class="govuk-label--l" />
</govuk-input>

<govuk-details open="true">
<govuk-details-summary>Where to find this</govuk-details-summary>
<govuk-details-text>
<p>You can find your NPQ application ID:</p>
<ul class="govuk-list govuk-list--bullet">
<li>by signing in to your NPQ online account</li>
<li>on your NPQ registration confirmation email</li>
</ul>

</govuk-details-text>
</govuk-details>
<p>

<a href="@LinkGenerator.RequestTrnNpqName(Model.JourneyInstance!.InstanceId)" class="govuk-link" rel="noreferrer noopener" target="_blank">I cannot find my NPQ application ID</a>
</p>


<govuk-button type="submit">Continue</govuk-button>
</form>
</div>
</div>
Loading

0 comments on commit fb51196

Please sign in to comment.