From fde35c0d71c5889fef31eae1cc21eb7b22d2c56f Mon Sep 17 00:00:00 2001 From: Paul Graham Date: Thu, 17 Jul 2025 16:14:06 +0100 Subject: [PATCH 1/3] redirect to Selct From Ilr regardless of UseLearnerData flag --- .../WhenIPostSelectHowToAddApprentice.cs | 58 ------------------- .../WhenSelectingHowToAddApprentice.cs | 14 ++--- .../Controllers/CohortController.cs | 28 ++------- 3 files changed, 10 insertions(+), 90 deletions(-) delete mode 100644 src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenIPostSelectHowToAddApprentice.cs diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenIPostSelectHowToAddApprentice.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenIPostSelectHowToAddApprentice.cs deleted file mode 100644 index 5aba304b0..000000000 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenIPostSelectHowToAddApprentice.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using SFA.DAS.CommitmentsV2.Api.Client; -using SFA.DAS.CommitmentsV2.Shared.Interfaces; -using SFA.DAS.Encoding; -using SFA.DAS.ProviderCommitments.Interfaces; -using SFA.DAS.ProviderCommitments.Web.Controllers; -using SFA.DAS.ProviderCommitments.Web.Models.Cohort; -using SFA.DAS.ProviderUrlHelper; - -namespace SFA.DAS.ProviderCommitments.Web.UnitTests.Controllers.CohortControllerTests -{ - [TestFixture] - public class WhenIPostSelectHowToAddApprentice - { - [Test] - public void PostHowTo_WithValidModel_WithIlrOption_ShouldRedirectToSelectLearnerRecord() - { - var fixture = new WhenIPostSelectHowToAddApprenticeFixture(); - fixture.ViewModel.Selection = AddFirstDraftApprenticeshipJourneyOptions.Ilr; - - var result = fixture.Sut.SelectHowToAddApprentice(fixture.ViewModel); - result.VerifyReturnsRedirectToActionResult().WithActionName("SelectLearnerRecord"); - var action = result as RedirectToActionResult; - action.RouteValues["providerId"].Should().Be(fixture.ViewModel.ProviderId); - action.RouteValues["EmployerAccountLegalEntityPublicHashedId"].Should().Be(fixture.ViewModel.EmployerAccountLegalEntityPublicHashedId); - action.RouteValues["CacheKey"].Should().Be(fixture.ViewModel.CacheKey); - } - - [Test] - public void PostHowTo_WithValidModel_WithManualOption_ShouldRedirectToSelectCourse() - { - var fixture = new WhenIPostSelectHowToAddApprenticeFixture(); - fixture.ViewModel.Selection = AddFirstDraftApprenticeshipJourneyOptions.Manual; - - var result = fixture.Sut.SelectHowToAddApprentice(fixture.ViewModel); - result.VerifyReturnsRedirectToActionResult().WithActionName("SelectCourse"); - var action = result as RedirectToActionResult; - action.RouteValues["providerId"].Should().Be(fixture.ViewModel.ProviderId); - action.RouteValues["EmployerAccountLegalEntityPublicHashedId"].Should().Be(fixture.ViewModel.EmployerAccountLegalEntityPublicHashedId); - action.RouteValues["CacheKey"].Should().Be(fixture.ViewModel.CacheKey); - } - } - - public class WhenIPostSelectHowToAddApprenticeFixture - { - public readonly SelectHowToAddFirstApprenticeshipJourneyViewModel ViewModel; - - public readonly CohortController Sut; - - public WhenIPostSelectHowToAddApprenticeFixture() - { - ViewModel = new SelectHowToAddFirstApprenticeshipJourneyViewModel { ProviderId = 123, EmployerAccountLegalEntityPublicHashedId = "XYZ", CacheKey = Guid.NewGuid()}; - - Sut = new CohortController(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), - Mock.Of(), Mock.Of(),Mock.Of(), Mock.Of>()); - } - } -} diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenSelectingHowToAddApprentice.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenSelectingHowToAddApprentice.cs index ba32779ce..dd0826a49 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenSelectingHowToAddApprentice.cs +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Controllers/CohortControllerTests/WhenSelectingHowToAddApprentice.cs @@ -13,19 +13,17 @@ namespace SFA.DAS.ProviderCommitments.Web.UnitTests.Controllers.CohortController public class WhenSelectingHowToAddApprentice { [Test] - public void ThenReturnsView() + public void ThenReturnsRedirectToSelectFromIlr() { var fixture = new WhenSelectingHowToAddApprenticeFixture(); - var result = fixture.Act() as ViewResult; + var result = fixture.Act() as RedirectToActionResult; result.Should().NotBeNull(); - result.Model.GetType().Should().Be(typeof(SelectHowToAddFirstApprenticeshipJourneyViewModel)); - var model = result.Model as SelectHowToAddFirstApprenticeshipJourneyViewModel; - model.Should().NotBeNull(); - model.ProviderId.Should().Be(fixture.Request.ProviderId); - model.EmployerAccountLegalEntityPublicHashedId.Should().Be(fixture.Request.EmployerAccountLegalEntityPublicHashedId); - model.CacheKey.Should().Be(fixture.Request.CacheKey); + + result.RouteValues["providerId"].Should().Be(fixture.Request.ProviderId); + result.RouteValues["EmployerAccountLegalEntityPublicHashedId"].Should().Be(fixture.Request.EmployerAccountLegalEntityPublicHashedId); + result.RouteValues["CacheKey"].Should().Be(fixture.Request.CacheKey); } } diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Controllers/CohortController.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Controllers/CohortController.cs index a0fab6691..84f93852e 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Controllers/CohortController.cs +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Controllers/CohortController.cs @@ -124,37 +124,17 @@ public async Task AddNewDraftApprenticeship(CreateCohortWithDraft [Route("add/select-how")] public IActionResult SelectHowToAddApprentice(CreateCohortWithDraftApprenticeshipRequest request) { - var model = new SelectHowToAddFirstApprenticeshipJourneyViewModel + var redirectModel = new CreateCohortWithDraftApprenticeshipRequest { ProviderId = request.ProviderId, EmployerAccountLegalEntityPublicHashedId = request.EmployerAccountLegalEntityPublicHashedId, - CacheKey = request.CacheKey + CacheKey = request.CacheKey, + UseLearnerData = true }; - return View(model); + return RedirectToAction("SelectLearnerRecord", "Learner", redirectModel); } - [HttpPost] - [Route("add/select-how")] - [Authorize(Policy = nameof(PolicyNames.HasContributorOrAbovePermission))] - public ActionResult SelectHowToAddApprentice(SelectHowToAddFirstApprenticeshipJourneyViewModel model) - { - var redirectModel = new CreateCohortWithDraftApprenticeshipRequest - { - ProviderId = model.ProviderId, - EmployerAccountLegalEntityPublicHashedId = model.EmployerAccountLegalEntityPublicHashedId, - CacheKey = model.CacheKey, - UseLearnerData = (model.Selection == AddFirstDraftApprenticeshipJourneyOptions.Ilr) - }; - - if (model.Selection == AddFirstDraftApprenticeshipJourneyOptions.Ilr) - { - return RedirectToAction("SelectLearnerRecord", "Learner", redirectModel); - } - return RedirectToAction("SelectCourse", redirectModel); - } - - [HttpGet] [Route("choose-cohort", Name = RouteNames.ChooseCohort)] public async Task ChooseCohort(ChooseCohortByProviderRequest request) From f9fe07420779cdd83e8764c7a7c6e29828b3167e Mon Sep 17 00:00:00 2001 From: Paul Graham Date: Wed, 23 Jul 2025 14:26:49 +0100 Subject: [PATCH 2/3] NMake Add page readonly --- .../Shared/AddDraftApprenticeship.cshtml | 2 +- .../Shared/DraftApprenticeshipReadOnly.cshtml | 222 ++++++++++++++++++ 2 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml index 0691017b6..8e8c9abc2 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml @@ -18,7 +18,7 @@ - + diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml new file mode 100644 index 000000000..092f0cb80 --- /dev/null +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml @@ -0,0 +1,222 @@ +@using SFA.DAS.CommitmentsV2.Shared.Extensions +@using SFA.DAS.CommitmentsV2.Types +@using SFA.DAS.CommitmentsV2.Api.Client +@using SFA.DAS.ProviderCommitments.Extensions +@using SFA.DAS.ProviderCommitments.Interfaces +@using SFA.DAS.ProviderCommitments.Web.Models +@inject IAuthorizationService AuthorizationService +@inject ICommitmentsApiClient CommitmentsApiClient +@model SFA.DAS.ProviderCommitments.Web.Models.DraftApprenticeshipViewModel + +@Html.HiddenFor(x => x.ReservationId) +@Html.HiddenFor(x => x.IsContinuation) +@Html.HiddenFor(x => x.IsOnFlexiPaymentPilot) +@Html.HiddenFor(x => x.Employer) +@Html.HiddenFor(x => x.LearnerDataId) + + + + +@{ + string editCourseLabel = "Add"; + string editDeliveryModelLabel = "Change"; + var startDateLabel = Model.DeliveryModel == DeliveryModel.Regular ? "Planned training start date" : "Planned apprenticeship training start date"; + var endDateLabel = Model.DeliveryModel == DeliveryModel.Regular ? "Planned training end date" : "Planned apprenticeship training end date"; + + ViewBag.ValidationOrder = "FirstName,LastName,Email,DateOfBirth,IsOnFlexiPaymentPilot,Uln,StartDate,EndDate,EmploymentEndDate,Cost,EmploymentPrice,Reference"; + + Model.CourseCode = ViewData.ModelState[nameof(Model.CourseCode)]?.AttemptedValue ?? Model.CourseCode; + Model.DeliveryModel = ViewData.ModelState[nameof(Model.DeliveryModel)]?.AttemptedValue.ToEnum() ?? Model.DeliveryModel; + + if (!string.IsNullOrWhiteSpace(Model.CourseCode)) + { + Model.CourseName = (await CommitmentsApiClient.GetTrainingProgramme(Model.CourseCode)).TrainingProgramme.Name; + } +} + + + + +@if (Model is EditDraftApprenticeshipViewModel) +{ +

Edit apprentice details

+} +else +{ +

Check apprentice details

+} + +
+

You can only receive payments for this apprentice if all the fields have been completed by yourself for the employer.

+
+ +
+
+ + + I need to change some apprentice details + + +
+ You will need to amend most details in the ILR. It can take up to 15 minutes to update here and you might need to refresh your browser. +
+
+
+ +

Apprentice personal details

+ +
+
+ +
+ @Html.ValidationMessageFor(m => m.Uln, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Uln) }) +
+
+
+ Unique learner number +
+
+ @Model.Uln + @Html.HiddenFor(x => x.Uln) +
+
+
+
+
+ @Html.ValidationMessageFor(m => m.FirstName, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.FirstName)}) +
+
+
+ First name +
+
+ @Model.FirstName + @Html.HiddenFor(x => x.FirstName) +
+
+
+
+
+ @Html.ValidationMessageFor(m => m.LastName, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.LastName)}) +
+
+
+ Last name +
+
+ @Model.LastName + @Html.HiddenFor(x => x.LastName) +
+
+
+
+
+ @Html.ValidationMessageFor(m => m.DateOfBirth, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.DateOfBirth)}) +
+
+
+ Date of birth +
+
+ @(Model.DateOfBirth.HasValue ? Model.DateOfBirth.Date.Value.ToString("dd MMM yyyy") : "") + @Html.HiddenFor(x => x.BirthDay) + @Html.HiddenFor(x => x.BirthMonth) + @Html.HiddenFor(x => x.BirthYear) +
+
+
+
+
+ + @Html.ValidationMessageFor(m => m.Email, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Email)}) + +
+ + + Why do we need an email address? + + +
+ Your apprentice will receive an email alert inviting them to the My apprenticeship service. On + the service, your apprentice will be able to: +
    +
  • review and confirm their apprenticeship details
  • +
  • understand the roles and responsibilities of an apprentice, an employer and a training + provider +
  • +
  • find help and support during their apprenticeship
  • +
+
+
+
+
+
+ +

Apprentice training details

+ +
+ @Html.ValidationMessageFor(m => m.DateOfBirth, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.StartDate) }) +
+
+
+ @startDateLabel +
+
+ @(Model.StartDate.HasValue && Model.StartDate.Date.HasValue ? Model.StartDate.Date.Value.ToString("MMM yyyy") : "") + @Html.HiddenFor(x => x.StartMonth) + @Html.HiddenFor(x => x.StartYear) +
+
+
+
+ +
+ @Html.ValidationMessageFor(m => m.DateOfBirth, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.EndDate) }) +
+
+
+ @endDateLabel +
+
+ @(Model.EndDate.HasValue && Model.EndDate.Date.HasValue ? Model.EndDate.Date.Value.ToString("MMM yyyy") : "") + @Html.HiddenFor(x => x.EndMonth) + @Html.HiddenFor(x => x.EndYear) +
+
+
+
+ +
+ @Html.ValidationMessageFor(m => m.Cost, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Cost) }) +
+
+
+ Total agreed apprenticeship price (excluding VAT) +
+
+ @Model.Cost + @Html.HiddenFor(x => x.Cost) +
+
+
+
+ +
+
+ + + Add a reference, such as employee number or location - this won’t be seen by the employer + + @Html.ValidationMessageFor(m => m.Reference, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Reference) }) + + +
+
+ +
+

End-point assessments

+

We'll ask the employer to confirm the apprentice + assessment organisation for this apprentice. We'll do this before the end of the apprenticeship.

+
From 34e2aa9ae605881a7b1e6a5f9a54e29506acba55 Mon Sep 17 00:00:00 2001 From: Paul Graham Date: Wed, 23 Jul 2025 14:32:19 +0100 Subject: [PATCH 3/3] Revert "NMake Add page readonly" This reverts commit f9fe07420779cdd83e8764c7a7c6e29828b3167e. --- .../Shared/AddDraftApprenticeship.cshtml | 2 +- .../Shared/DraftApprenticeshipReadOnly.cshtml | 222 ------------------ 2 files changed, 1 insertion(+), 223 deletions(-) delete mode 100644 src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml index 8e8c9abc2..0691017b6 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/AddDraftApprenticeship.cshtml @@ -18,7 +18,7 @@ - + diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml deleted file mode 100644 index 092f0cb80..000000000 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Shared/DraftApprenticeshipReadOnly.cshtml +++ /dev/null @@ -1,222 +0,0 @@ -@using SFA.DAS.CommitmentsV2.Shared.Extensions -@using SFA.DAS.CommitmentsV2.Types -@using SFA.DAS.CommitmentsV2.Api.Client -@using SFA.DAS.ProviderCommitments.Extensions -@using SFA.DAS.ProviderCommitments.Interfaces -@using SFA.DAS.ProviderCommitments.Web.Models -@inject IAuthorizationService AuthorizationService -@inject ICommitmentsApiClient CommitmentsApiClient -@model SFA.DAS.ProviderCommitments.Web.Models.DraftApprenticeshipViewModel - -@Html.HiddenFor(x => x.ReservationId) -@Html.HiddenFor(x => x.IsContinuation) -@Html.HiddenFor(x => x.IsOnFlexiPaymentPilot) -@Html.HiddenFor(x => x.Employer) -@Html.HiddenFor(x => x.LearnerDataId) - - - - -@{ - string editCourseLabel = "Add"; - string editDeliveryModelLabel = "Change"; - var startDateLabel = Model.DeliveryModel == DeliveryModel.Regular ? "Planned training start date" : "Planned apprenticeship training start date"; - var endDateLabel = Model.DeliveryModel == DeliveryModel.Regular ? "Planned training end date" : "Planned apprenticeship training end date"; - - ViewBag.ValidationOrder = "FirstName,LastName,Email,DateOfBirth,IsOnFlexiPaymentPilot,Uln,StartDate,EndDate,EmploymentEndDate,Cost,EmploymentPrice,Reference"; - - Model.CourseCode = ViewData.ModelState[nameof(Model.CourseCode)]?.AttemptedValue ?? Model.CourseCode; - Model.DeliveryModel = ViewData.ModelState[nameof(Model.DeliveryModel)]?.AttemptedValue.ToEnum() ?? Model.DeliveryModel; - - if (!string.IsNullOrWhiteSpace(Model.CourseCode)) - { - Model.CourseName = (await CommitmentsApiClient.GetTrainingProgramme(Model.CourseCode)).TrainingProgramme.Name; - } -} - - - - -@if (Model is EditDraftApprenticeshipViewModel) -{ -

Edit apprentice details

-} -else -{ -

Check apprentice details

-} - -
-

You can only receive payments for this apprentice if all the fields have been completed by yourself for the employer.

-
- -
-
- - - I need to change some apprentice details - - -
- You will need to amend most details in the ILR. It can take up to 15 minutes to update here and you might need to refresh your browser. -
-
-
- -

Apprentice personal details

- -
-
- -
- @Html.ValidationMessageFor(m => m.Uln, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Uln) }) -
-
-
- Unique learner number -
-
- @Model.Uln - @Html.HiddenFor(x => x.Uln) -
-
-
-
-
- @Html.ValidationMessageFor(m => m.FirstName, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.FirstName)}) -
-
-
- First name -
-
- @Model.FirstName - @Html.HiddenFor(x => x.FirstName) -
-
-
-
-
- @Html.ValidationMessageFor(m => m.LastName, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.LastName)}) -
-
-
- Last name -
-
- @Model.LastName - @Html.HiddenFor(x => x.LastName) -
-
-
-
-
- @Html.ValidationMessageFor(m => m.DateOfBirth, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.DateOfBirth)}) -
-
-
- Date of birth -
-
- @(Model.DateOfBirth.HasValue ? Model.DateOfBirth.Date.Value.ToString("dd MMM yyyy") : "") - @Html.HiddenFor(x => x.BirthDay) - @Html.HiddenFor(x => x.BirthMonth) - @Html.HiddenFor(x => x.BirthYear) -
-
-
-
-
- - @Html.ValidationMessageFor(m => m.Email, null, new {@class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Email)}) - -
- - - Why do we need an email address? - - -
- Your apprentice will receive an email alert inviting them to the My apprenticeship service. On - the service, your apprentice will be able to: -
    -
  • review and confirm their apprenticeship details
  • -
  • understand the roles and responsibilities of an apprentice, an employer and a training - provider -
  • -
  • find help and support during their apprenticeship
  • -
-
-
-
-
-
- -

Apprentice training details

- -
- @Html.ValidationMessageFor(m => m.DateOfBirth, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.StartDate) }) -
-
-
- @startDateLabel -
-
- @(Model.StartDate.HasValue && Model.StartDate.Date.HasValue ? Model.StartDate.Date.Value.ToString("MMM yyyy") : "") - @Html.HiddenFor(x => x.StartMonth) - @Html.HiddenFor(x => x.StartYear) -
-
-
-
- -
- @Html.ValidationMessageFor(m => m.DateOfBirth, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.EndDate) }) -
-
-
- @endDateLabel -
-
- @(Model.EndDate.HasValue && Model.EndDate.Date.HasValue ? Model.EndDate.Date.Value.ToString("MMM yyyy") : "") - @Html.HiddenFor(x => x.EndMonth) - @Html.HiddenFor(x => x.EndYear) -
-
-
-
- -
- @Html.ValidationMessageFor(m => m.Cost, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Cost) }) -
-
-
- Total agreed apprenticeship price (excluding VAT) -
-
- @Model.Cost - @Html.HiddenFor(x => x.Cost) -
-
-
-
- -
-
- - - Add a reference, such as employee number or location - this won’t be seen by the employer - - @Html.ValidationMessageFor(m => m.Reference, null, new { @class = "govuk-error-message", id = "error-message-" + Html.IdFor(m => m.Reference) }) - - -
-
- -
-

End-point assessments

-

We'll ask the employer to confirm the apprentice - assessment organisation for this apprentice. We'll do this before the end of the apprenticeship.

-