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 28, 2025
1 parent 9556ea3 commit e7da79f
Show file tree
Hide file tree
Showing 51 changed files with 1,890 additions and 269 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,9 @@ 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 @@ -16,7 +16,7 @@ public class AddressModel(AuthorizeAccessLinkGenerator linkGenerator) : PageMode

[BindProperty]
[Display(Name = "Address line 1")]
[Required(ErrorMessage = "Enter address line 1")]
[Required(ErrorMessage = "Enter address line 1, typically the building and street")]
[MaxLength(200, ErrorMessage = "Address line 1 must be 200 characters or less")]
public string? AddressLine1 { get; set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,70 @@
<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>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnName(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="name">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
<govuk-summary-list-row>
<govuk-summary-list-row-key>Previous name</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.PreviousName</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnPreviousName(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="previous name">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
@if (!string.IsNullOrEmpty(Model.PreviousName))
{
<govuk-summary-list-row>
<govuk-summary-list-row-key>Previous name</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.PreviousName</govuk-summary-list-row-value>
<govuk-summary-list-row-actions>
<govuk-summary-list-row-action href="@LinkGenerator.RequestTrnPreviousName(Model.JourneyInstance!.InstanceId, fromCheckAnswers: true)" visually-hidden-text="previous name">Change</govuk-summary-list-row-action>
</govuk-summary-list-row-actions>
</govuk-summary-list-row>
}
<govuk-summary-list-row>
<govuk-summary-list-row-key>Date of birth</govuk-summary-list-row-key>
<govuk-summary-list-row-value>@Model.DateOfBirth!.Value.ToString("d MMMM yyyy")</govuk-summary-list-row-value>
Expand Down Expand Up @@ -64,7 +107,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,28 @@ 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}
Working In School or Educational Setting: {(state.WorkingInSchoolOrEducationalSetting == true ? "Yes" : "No")}
Personal Email: {state.PersonalEmail}
Work Email: {state.WorkEmail}
Name: {state.Name}
Previous name: {state.PreviousName}
Date of birth: {state.DateOfBirth:dd/MM/yyyy}
National Insurance number: {NationalInsuranceNumberHelper.Normalize(state.NationalInsuranceNumber)}
Registered For NPQ: {(state.HaveRegisteredForAnNpq == true ? "Yes" : "No")}
NPQ application ID: {state.NpqApplicationId}
NPQ name: {state.NpqName}
NPQ training provider: {state.NpqTrainingProvider}
""";
if (state.HasNationalInsuranceNumber == false)
{
Expand Down Expand Up @@ -104,7 +118,7 @@ await crmQueryDispatcher.ExecuteQueryAsync(
EvidenceFileName = JourneyInstance!.State.EvidenceFileName!,
EvidenceFileContent = stream,
EvidenceFileMimeType = evidenceFileMimeType,
EmailAddress = JourneyInstance!.State.Email!
EmailAddress = JourneyInstance!.State.PersonalEmail!
});

await JourneyInstance!.UpdateStateAsync(state => state.HasPendingTrnRequest = true);
Expand All @@ -119,9 +133,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 @@ -13,7 +13,7 @@
<form action="@LinkGenerator.RequestTrnDateOfBirth(Model.JourneyInstance!.InstanceId, Model.FromCheckAnswers)" method="post">
<govuk-date-input asp-for="DateOfBirth">
<govuk-date-input-fieldset>
<govuk-date-input-fieldset-legend is-page-heading="true" class="govuk-fieldset__legend--l" />
<govuk-date-input-fieldset-legend is-page-heading="false" class="govuk-fieldset__legend--l" />
<govuk-date-input-day autocomplete="bday-day" />
<govuk-date-input-month autocomplete="bday-month" />
<govuk-date-input-year autocomplete="bday-year" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using GovUk.Frontend.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.RazorPages;
Expand All @@ -16,6 +17,7 @@ public class DateOfBirthModel(AuthorizeAccessLinkGenerator linkGenerator, IClock

[BindProperty]
[Display(Name = "What is your date of birth?")]
[DateInput(ErrorMessagePrefix = "Date of birth")]
[Required(ErrorMessage = "Enter your date of birth")]
public DateOnly? DateOfBirth { get; set; }

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.RequestTrnPersonalEmail(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.PersonalEmail is null)
{
context.Result = Redirect(linkGenerator.RequestTrnEmail(JourneyInstance.InstanceId));
context.Result = Redirect(linkGenerator.RequestTrnPersonalEmail(JourneyInstance.InstanceId));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,14 @@
}

<govuk-file-upload asp-for="EvidenceFile" input-accept=".jpeg, .jpg, .pdf, .png">
<govuk-file-upload-label>Upload file</govuk-file-upload-label>
<govuk-file-upload-label>
<div>
Upload File
<p class="govuk-hint">
File must be a JPEG, JPG, PDF or PNG and smaller than 3MB.
</p>
</div>
</govuk-file-upload-label>
</govuk-file-upload>

<govuk-button type="submit">Continue</govuk-button>
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
Loading

0 comments on commit e7da79f

Please sign in to comment.