diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Mappers/Apprentice/DetailsViewModelMapperTests.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Mappers/Apprentice/DetailsViewModelMapperTests.cs index 2d6d61503..bd5fc240b 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Mappers/Apprentice/DetailsViewModelMapperTests.cs +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web.UnitTests/Mappers/Apprentice/DetailsViewModelMapperTests.cs @@ -5,7 +5,6 @@ using SFA.DAS.Apprenticeships.Types; using SFA.DAS.CommitmentsV2.Api.Client; using SFA.DAS.CommitmentsV2.Api.Types.Responses; -using SFA.DAS.CommitmentsV2.Shared.Interfaces; using SFA.DAS.CommitmentsV2.Types; using SFA.DAS.Encoding; using SFA.DAS.ProviderCommitments.Infrastructure.OuterApi; @@ -42,6 +41,13 @@ public async Task ThenFullNameIsMappedCorrectly() _fixture.Result.ApprenticeName.Should().Be(_fixture.ApiResponse.Apprenticeship.FirstName + " " + _fixture.ApiResponse.Apprenticeship.LastName); } + [Test] + public async Task ThenApprenticeshipTypeMappedCorrectly() + { + await _fixture.Map(); + _fixture.Result.LearningType.Should().Be(_fixture.ApiResponse.Apprenticeship.LearningType); + } + [Test] public async Task ThenEmployerIsMappedCorrectly() { @@ -98,7 +104,7 @@ public async Task ThenAgreementIdIsMappedCorrectly() await _fixture.Map(); _fixture.Result.AgreementId.Should().Be(_fixture.AgreementId); } - + [Test] public async Task ThenDateOfBirthIsMappedCorrectly() { @@ -430,7 +436,6 @@ public async Task With_Single_Datalock_Then_AvailableTriageOption_Is_Mapped_Corr _fixture.Result.AvailableTriageOption.Should().Be(expectedTriageOption); } - [TestCase(false, DataLockErrorCode.Dlock04, DataLockErrorCode.Dlock07, DetailsViewModel.TriageOption.Update)] [TestCase(true, DataLockErrorCode.Dlock04, DataLockErrorCode.Dlock07, DetailsViewModel.TriageOption.Both)] [TestCase(true, DataLockErrorCode.Dlock03, DataLockErrorCode.Dlock03 | DataLockErrorCode.Dlock07, DetailsViewModel.TriageOption.Restart)] @@ -498,7 +503,7 @@ public async Task ThenAPendingChangeOfPartyOriginatingFromEmployerDoesNotSetHasP _fixture.Result.HasPendingChangeOfPartyRequest.Should().BeFalse(); } - + [TestCase(null, false)] [TestCase(OverlappingTrainingDateRequestStatus.Resolved, false)] [TestCase(OverlappingTrainingDateRequestStatus.Rejected, false)] @@ -670,7 +675,7 @@ public async Task And_PriceChangeDetailsArePopulated_Then_PriceChangeDetailsRetu public async Task ThenPaymentStatusIsMappedCorrectly(bool paymentsFrozen, bool waitingToStart, string expectedStatus) { _fixture.WithPaymentsFrozenSetTo(paymentsFrozen); - _fixture.WithLearnerStatusDetailsSetTo(waitingToStart ? new LearnerStatusDetails{ LearnerStatus = LearnerStatus.WaitingToStart } : new LearnerStatusDetails { LearnerStatus = LearnerStatus.InLearning }); + _fixture.WithLearnerStatusDetailsSetTo(waitingToStart ? new LearnerStatusDetails { LearnerStatus = LearnerStatus.WaitingToStart } : new LearnerStatusDetails { LearnerStatus = LearnerStatus.InLearning }); await _fixture.Map(); @@ -742,7 +747,7 @@ public class DetailsViewModelMapperFixture public IEnumerable ApprenticeshipUpdates { get; private set; } public IEnumerable DataLocks { get; private set; } public IEnumerable ChangeOfPartyRequests { get; private set; } - public IEnumerable OverlappingTrainingDateRequests{ get; private set; } + public IEnumerable OverlappingTrainingDateRequests { get; private set; } public IEnumerable ChangeOfEmployerChain { get; private set; } public GetNewerTrainingProgrammeVersionsResponse GetNewerTrainingProgrammeVersionsResponse { get; private set; } public GetTrainingProgrammeResponse GetTrainingProgrammeByStandardUIdResponse { get; private set; } @@ -1005,7 +1010,7 @@ public DetailsViewModelMapperFixture WithChangeOfPartyRequest(ChangeOfPartyReque return this; } - + public DetailsViewModelMapperFixture WithOverlappingTrainingDateRequests(OverlappingTrainingDateRequestStatus status) { var draftApprenticeshipId = Fixture.Create(); @@ -1023,7 +1028,7 @@ public DetailsViewModelMapperFixture WithOverlappingTrainingDateRequests(Overlap ActionedOn = null } }; - + return this; } @@ -1111,7 +1116,7 @@ public DetailsViewModelMapperFixture WithPendingPriceChangePopulated() TrainingPrice = 3248, Initiator = "Provider" }; - + return this; } diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Mappers/Apprentice/DetailsViewModelMapper.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Mappers/Apprentice/DetailsViewModelMapper.cs index c8bb573af..86d3ab6ec 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Mappers/Apprentice/DetailsViewModelMapper.cs +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Mappers/Apprentice/DetailsViewModelMapper.cs @@ -1,4 +1,5 @@ -using SFA.DAS.CommitmentsV2.Api.Client; +using SFA.DAS.Apprenticeships.Types; +using SFA.DAS.CommitmentsV2.Api.Client; using SFA.DAS.CommitmentsV2.Shared.Interfaces; using SFA.DAS.CommitmentsV2.Types; using SFA.DAS.Encoding; @@ -7,9 +8,6 @@ using SFA.DAS.ProviderCommitments.Infrastructure.OuterApi.Requests.Apprentices; using SFA.DAS.ProviderCommitments.Web.Extensions; using SFA.DAS.ProviderCommitments.Web.Models.Apprentice; -using SFA.DAS.CommitmentsV2.Shared.Extensions; -using Azure; -using SFA.DAS.Apprenticeships.Types; namespace SFA.DAS.ProviderCommitments.Web.Mappers.Apprentice { @@ -125,7 +123,8 @@ public async Task Map(DetailsRequest source) LearnerStatus = data.LearnerStatusDetails.LearnerStatus, WithdrawalChangedDate = data.LearnerStatusDetails.WithdrawalChangedDate, LastCensusDateOfLearning = data.LearnerStatusDetails.LastCensusDateOfLearning, - LastDayOfLearning = data.LearnerStatusDetails.LastDayOfLearning + LastDayOfLearning = data.LearnerStatusDetails.LastDayOfLearning, + LearningType = data.Apprenticeship.LearningType, }; } catch (Exception e) diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Models/Apprentice/DetailsViewModel.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Models/Apprentice/DetailsViewModel.cs index d24713468..8250c4dc9 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Models/Apprentice/DetailsViewModel.cs +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Models/Apprentice/DetailsViewModel.cs @@ -1,9 +1,8 @@ -using SFA.DAS.ProviderCommitments.Web.ModelBinding; +using SFA.DAS.Apprenticeships.Types; using SFA.DAS.CommitmentsV2.Shared.Extensions; using SFA.DAS.CommitmentsV2.Types; using SFA.DAS.ProviderCommitments.Enums; -using SFA.DAS.ProviderCommitments.Infrastructure.OuterApi.Requests.Apprentices; -using SFA.DAS.Apprenticeships.Types; +using SFA.DAS.ProviderCommitments.Web.ModelBinding; namespace SFA.DAS.ProviderCommitments.Web.Models.Apprentice { @@ -96,6 +95,7 @@ public class DetailsViewModel : IAuthorizationContextModel public DateTime? WithdrawalChangedDate { get; set; } public DateTime? LastCensusDateOfLearning { get; set; } public DateTime? LastDayOfLearning { get; set; } + public LearningType? LearningType { get; set; } public enum DataLockSummaryStatus { diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/Details.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/Details.cshtml index d84e2e604..b1b32804b 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/Details.cshtml +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/Details.cshtml @@ -1,413 +1,21 @@ @model SFA.DAS.ProviderCommitments.Web.Models.Apprentice.DetailsViewModel -@using SFA.DAS.CommitmentsV2.Shared.Extensions -@using SFA.DAS.CommitmentsV2.Types -@using SFA.DAS.ProviderCommitments.Web.Extensions -@using SFA.DAS.ProviderCommitments.Web.Models.Apprentice @using SFA.DAS.ProviderCommitments.Web.RouteValues +@using SFA.DAS.ProviderCommitments.Enums; @{ ViewData["Title"] = "Apprentice Details"; ViewBag.GaData.Vpv = "/apprentices/apprentice/details"; - ViewBag.GaData.Org = Model.Employer; - - var paymentStatusTagClass = Model.PaymentStatus.Status switch - { - "Inactive" => "govuk-tag--grey", - "Active" => "govuk-tag--blue", - "Withheld" => "govuk-tag--red", - _ => "govuk-tag--blue" // default - }; + ViewBag.GaData.Org = Model.Employer; } -
-
- - - -

@Model.ApprenticeName

- - @if (Model.ShowChangeEmployerLink && Model.Status != ApprenticeshipStatus.Completed) - { - - } - - @if (Model.ConfirmationStatus == ConfirmationStatus.Overdue) - { -
- - - Help with your apprentice’s overdue confirmation - - -
-

- If your apprentice has not confirmed their apprenticeship details within the 14 day deadline, you - should: - -

    -
  • - contact the apprentice to complete their apprenticeship confirmation -
  • -
    - Or -
    -
  • - contact the apprentice’s employer to ask the apprentice to complete their apprenticeship - confirmation -
  • -
-

-
-
- } - -

Apprentice status

- - - - - - - - - - - @if (Model.Status == ApprenticeshipStatus.Stopped) - { - - - - - } - - @if (Model.Status == ApprenticeshipStatus.Paused) - { - - - - - } - - @if (Model.Status == ApprenticeshipStatus.Completed) - { - - - - - } - -
Apprentice confirmation - @Model.ConfirmationStatus.ToDisplayString()
Stop applies from - @Model.StopDate.Value.ToGdsFormatWithoutDay()
Apprenticeship pause date@Model.PauseDate.Value.ToGdsFormat() -
Completion payment month - @Model.CompletionDate.Value.ToGdsFormatWithoutDay()
- -
-
-

Overview

-
-
- - - - - - - - - - - - - - - - - - - - - - - - @if (Model.EmployerHistory != null && Model.EmployerHistory.Count > 1) - { - - - - - - } - -
Employer@Model.Employer - - @if (Model.ShowChangeEmployerLink) - { - Change - } -
Reference@Model.Reference
Agreement ID@Model.AgreementId
Employer history - @foreach (var employer in Model.EmployerHistory) - { -

- @if (employer.ShowLink) - { - - @employer.EmployerName - - } - else - { - @employer.EmployerName - } -
- @employer.FromDate.ToString("MMM yyyy") to - @employer.ToDate.ToString("MMM yyyy") -

- } -
- -
-
-

Apprentice

-
-
- @if (Model.AllowEditApprentice) - { - Edit apprentice - } -
-
- - - - - - - - - @if (!string.IsNullOrEmpty(Model.Email) || Model.EmailShouldBePresent) - { - - - - - - - } - - - - - - - - - - - - - - - - @if (!Model.DeliveryModel.Equals(DeliveryModel.Regular) || Model.HasMultipleDeliveryModelOptions) - { - - - - - - } - @if (!string.IsNullOrEmpty(Model.Version)) - { - - - - - - } - @if (Model.Option != null || Model.HasOptions) - { - - - - - - } - - @if (!Model.HasPendingStartDateChange) - { - - - - - - } - else - { - - } - - - - - - - - @if (Model.DeliveryModel.Equals(DeliveryModel.PortableFlexiJob)) - { - - - - - - } - @if (Model.DeliveryModel.Equals(DeliveryModel.PortableFlexiJob)) - { - - - - - - } - - @if (!Model.HasPendingPriceChange) - { - @if (Model.TrainingPrice.HasValue) - { - - - - - - } - - @if (Model.EndPointAssessmentPrice.HasValue) - { - - - - - - } - - - - - - - } - - - - - - - -
Name@Model.ApprenticeName -
Email address - - - - - @if (Model.CanResendInvitation) - { - - - - } -
@Model.Email
- Resend invitation email -
-
Date of birth@Model.DateOfBirth.ToGdsFormat()
Unique learner number@Model.Uln
Apprenticeship training course@Model.CourseName
Apprenticeship delivery model@Model.DeliveryModel.ToDescription() -
Version@Model.Version - @if (Model.ShowChangeVersionLink && Model.AllowEditApprentice) - { - Change - } -
Option@(!string.IsNullOrEmpty(Model.Option) ? - Model.Option : "To be confirmed") - @if (Model.AllowEditApprentice && Model.HasOptions && !Model.SingleOption) - { - Change - } -
Planned training start date@Model.StartDate.Value.ToGdsFormatWithoutDay() -
Planned training end date@Model.EndDate.ToGdsFormatWithoutDay()
Planned end date for this employment@Model.EmploymentEndDateDisplay
Training price for this employment@Model.EmploymentPriceDisplay
Training price (TNP1)@Model.TrainingPrice.Value.ToGdsCostFormat()
End-point assessment price (TNP2)@Model.EndPointAssessmentPrice.Value.ToGdsCostFormat()
Total agreed apprenticeship price@Model.Cost.ToGdsCostFormat()
Your reference@Model.ProviderRef
- - @if (Model.HasPendingPriceChange) - { - - } - - @if (Model.RecognisePriorLearning != null) - { -
-
-

Prior learning details

-
-
- - @if (Model.RecognisePriorLearning == true) - { - - - - @if (Model.TrainingTotalHours != null) - { - - - - - - } - @if (Model.DurationReducedByHours != null) - { - - - - - - } - @if (Model.DurationReducedBy != null) - { - - - - - - } - - @if (Model.PriceReducedBy != null) - { - - - - - - } - -
Total off-the-job training time for this apprenticeship standard - @Model.TrainingTotalHoursDisplay
Off-the-job training time reduction due to prior - learning - @Model.DurationReducedByHoursDisplay
Duration reduction due to prior learning - @Model.DurationReducedByDisplay
Price reduction due to prior learning - @Model.PriceReducedBy.FormatCost()
- } - else - { -

This apprentice has no recognised prior learning.

- } - } - -
-
+@if (Model.LearningType == LearningType.ApprenticeshipUnit) +{ + +} +else +{ + +} @section breadcrumb { Back diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/DetailsPartials/_ViewApprenticeDetails.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/DetailsPartials/_ViewApprenticeDetails.cshtml new file mode 100644 index 000000000..c65ac7d38 --- /dev/null +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/DetailsPartials/_ViewApprenticeDetails.cshtml @@ -0,0 +1,427 @@ +@model SFA.DAS.ProviderCommitments.Web.Models.Apprentice.DetailsViewModel +@using SFA.DAS.CommitmentsV2.Shared.Extensions +@using SFA.DAS.CommitmentsV2.Types +@using SFA.DAS.ProviderCommitments.Web.Extensions +@using SFA.DAS.ProviderCommitments.Web.Models.Apprentice +@using SFA.DAS.ProviderCommitments.Web.RouteValues + +@{ + ViewData["Title"] = "Apprentice Details"; + ViewBag.GaData.Vpv = "/apprentices/apprentice/details"; + ViewBag.GaData.Org = Model.Employer; + + var paymentStatusTagClass = Model.PaymentStatus.Status switch + { + "Inactive" => "govuk-tag--grey", + "Active" => "govuk-tag--blue", + "Withheld" => "govuk-tag--red", + _ => "govuk-tag--blue" // default + }; +} + +
+
+ + + +

@Model.ApprenticeName

+ + @if (Model.ShowChangeEmployerLink && Model.Status != ApprenticeshipStatus.Completed) + { + + } + + @if (Model.ConfirmationStatus == ConfirmationStatus.Overdue) + { +
+ + + Help with your apprentice’s overdue confirmation + + +
+

+ If your apprentice has not confirmed their apprenticeship details within the 14 day deadline, you + should: + +

    +
  • + contact the apprentice to complete their apprenticeship confirmation +
  • +
    + Or +
    +
  • + contact the apprentice’s employer to ask the apprentice to complete their apprenticeship + confirmation +
  • +
+

+
+
+ } + +

Apprentice status

+ + + + + + + + + + + @if (Model.Status == ApprenticeshipStatus.Stopped) + { + + + + + } + + @if (Model.Status == ApprenticeshipStatus.Paused) + { + + + + + } + + @if (Model.Status == ApprenticeshipStatus.Completed) + { + + + + + } + +
Apprentice confirmation + @Model.ConfirmationStatus.ToDisplayString() +
Stop applies from + @Model.StopDate.Value.ToGdsFormatWithoutDay() +
Apprenticeship pause date + @Model.PauseDate.Value.ToGdsFormat() +
Completion payment month + @Model.CompletionDate.Value.ToGdsFormatWithoutDay() +
+ +
+
+

Overview

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + @if (Model.EmployerHistory != null && Model.EmployerHistory.Count > 1) + { + + + + + + } + +
Employer + @Model.Employer + + @if (Model.ShowChangeEmployerLink) + { + Change + } +
Reference@Model.Reference
Agreement ID@Model.AgreementId
Employer history + @foreach (var employer in Model.EmployerHistory) + { +

+ @if (employer.ShowLink) + { + + @employer.EmployerName + + } + else + { + @employer.EmployerName + } +
+ + @employer.FromDate.ToString("MMM yyyy") to + @employer.ToDate.ToString("MMM yyyy") + +

+ } +
+ +
+
+

Apprentice

+
+
+ @if (Model.AllowEditApprentice) + { + Edit apprentice + } +
+
+ + + + + + + + + @if (!string.IsNullOrEmpty(Model.Email) || Model.EmailShouldBePresent) + { + + + + + + + } + + + + + + + + + + + + + + + + @if (!Model.DeliveryModel.Equals(DeliveryModel.Regular) || Model.HasMultipleDeliveryModelOptions) + { + + + + + + } + @if (!string.IsNullOrEmpty(Model.Version)) + { + + + + + + } + @if (Model.Option != null || Model.HasOptions) + { + + + + + + } + + @if (!Model.HasPendingStartDateChange) + { + + + + + + } + else + { + + } + + + + + + + + @if (Model.DeliveryModel.Equals(DeliveryModel.PortableFlexiJob)) + { + + + + + + } + @if (Model.DeliveryModel.Equals(DeliveryModel.PortableFlexiJob)) + { + + + + + + } + + @if (!Model.HasPendingPriceChange) + { + @if (Model.TrainingPrice.HasValue) + { + + + + + + } + + @if (Model.EndPointAssessmentPrice.HasValue) + { + + + + + + } + + + + + + + } + + + + + + + +
Name + @Model.ApprenticeName +
Email address + + + + + @if (Model.CanResendInvitation) + { + + + + } +
@Model.Email
+ Resend invitation email +
+
Date of birth@Model.DateOfBirth.ToGdsFormat()
Unique learner number@Model.Uln
Apprenticeship training course@Model.CourseName
Apprenticeship delivery model + @Model.DeliveryModel.ToDescription() +
Version@Model.Version + @if (Model.ShowChangeVersionLink && Model.AllowEditApprentice) + { + Change + } +
Option + @(!string.IsNullOrEmpty(Model.Option) ? + Model.Option : "To be confirmed") + + @if (Model.AllowEditApprentice && Model.HasOptions && !Model.SingleOption) + { + Change + } +
Planned training start date@Model.StartDate.Value.ToGdsFormatWithoutDay() +
Planned training end date@Model.EndDate.ToGdsFormatWithoutDay()
Planned end date for this employment@Model.EmploymentEndDateDisplay
Training price for this employment@Model.EmploymentPriceDisplay
Training price (TNP1)@Model.TrainingPrice.Value.ToGdsCostFormat()
End-point assessment price (TNP2)@Model.EndPointAssessmentPrice.Value.ToGdsCostFormat()
Total agreed apprenticeship price@Model.Cost.ToGdsCostFormat()
Your reference@Model.ProviderRef
+ + @if (Model.HasPendingPriceChange) + { + + } + + @if (Model.RecognisePriorLearning != null) + { +
+
+

Prior learning details

+
+
+ + @if (Model.RecognisePriorLearning == true) + { + + + + @if (Model.TrainingTotalHours != null) + { + + + + + + } + @if (Model.DurationReducedByHours != null) + { + + + + + + } + @if (Model.DurationReducedBy != null) + { + + + + + + } + + @if (Model.PriceReducedBy != null) + { + + + + + + } + +
Total off-the-job training time for this apprenticeship standard + @Model.TrainingTotalHoursDisplay +
+ Off-the-job training time reduction due to prior + learning + + @Model.DurationReducedByHoursDisplay +
Duration reduction due to prior learning + @Model.DurationReducedByDisplay +
Price reduction due to prior learning + @Model.PriceReducedBy.FormatCost() +
+ } + else + { +

This apprentice has no recognised prior learning.

+ } + } + +
+
\ No newline at end of file diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/DetailsPartials/_ViewApprenticeUnitDetails.cshtml b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/DetailsPartials/_ViewApprenticeUnitDetails.cshtml new file mode 100644 index 000000000..eeb1f2999 --- /dev/null +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments.Web/Views/Apprentice/DetailsPartials/_ViewApprenticeUnitDetails.cshtml @@ -0,0 +1,185 @@ +@model SFA.DAS.ProviderCommitments.Web.Models.Apprentice.DetailsViewModel +@using SFA.DAS.CommitmentsV2.Shared.Extensions +@using SFA.DAS.CommitmentsV2.Types +@using SFA.DAS.ProviderCommitments.Web.Extensions +@using SFA.DAS.ProviderCommitments.Web.Models.Apprentice +@using SFA.DAS.ProviderCommitments.Web.RouteValues + +@{ + ViewData["Title"] = "Apprentice Details"; + ViewBag.GaData.Vpv = "/apprentices/apprentice/details"; + ViewBag.GaData.Org = Model.Employer; +} + +
+
+ +

View details for @Model.ApprenticeName

+ +
+ + + Help with your changes to the learner's employer + + +
+

+ If a learner needs to move to a new employer you should: +

+
    +
  • + contact their original employer and ask them to stop the learner + record +
  • +
  • + speak to the new employer to agree new training dates and + price +
  • + +
  • + request permission to move the learner to the new employer's + Apprenticeship service account. +
  • +
+

Once you've agreed these details, you can change the employer.

+

+ Non-levy employers will not need apprenticeship funding reserved when taking on an learner from another + employer. +

+
+
+ +

Learner status

+ + + + + + + +
+ +
+
+

Overview

+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Employer + @Model.Employer + + @if (Model.ShowChangeEmployerLink) + { + Change + } +
Reference@Model.Reference
Agreement ID@Model.AgreementId
+ +
+
+

Learner details

+
+
+ @if (Model.AllowEditApprentice) + { + Edit learner + } +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @if (!Model.HasPendingStartDateChange) + { + + + + + + } + else + { + + } + + + + + + + + @if (!Model.HasPendingPriceChange) + { + + + + + + } + + + + + + + + +
Name + @Model.ApprenticeName +
Email + @Model.Email +
Date of birth@Model.DateOfBirth.ToGdsFormat()
Unique learner number@Model.Uln
Training course@Model.CourseName
Planned training start date@Model.StartDate.Value.ToGdsFormatWithoutDay() +
Planned training end date@Model.EndDate.ToGdsFormatWithoutDay()
Total agreed training price@Model.Cost.ToGdsCostFormat()
Your reference@Model.ProviderRef
+
+
diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Enums/LearningType.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Enums/LearningType.cs new file mode 100644 index 000000000..0a996a8f0 --- /dev/null +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Enums/LearningType.cs @@ -0,0 +1,7 @@ +namespace SFA.DAS.ProviderCommitments.Enums; +public enum LearningType : byte +{ + Apprenticeship = 0, + FoundationApprenticeship = 1, + ApprenticeshipUnit = 2 +} diff --git a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Infrastructure/OuterApi/Requests/Apprentices/GetManageApprenticeshipDetailsRequest.cs b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Infrastructure/OuterApi/Requests/Apprentices/GetManageApprenticeshipDetailsRequest.cs index ea50441cc..3488011a9 100644 --- a/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Infrastructure/OuterApi/Requests/Apprentices/GetManageApprenticeshipDetailsRequest.cs +++ b/src/SFA.DAS.ProviderCommitments/SFA.DAS.ProviderCommitments/Infrastructure/OuterApi/Requests/Apprentices/GetManageApprenticeshipDetailsRequest.cs @@ -1,8 +1,9 @@ -using SFA.DAS.Apprenticeships.Types; -using SFA.DAS.CommitmentsV2.Types; using System; using System.Collections.Generic; +using SFA.DAS.Apprenticeships.Types; using SFA.DAS.CommitmentsV2.Api.Types.Responses; +using SFA.DAS.CommitmentsV2.Types; +using SFA.DAS.ProviderCommitments.Enums; namespace SFA.DAS.ProviderCommitments.Infrastructure.OuterApi.Requests.Apprentices; @@ -89,6 +90,7 @@ public class ApprenticeshipDetails public int? DurationReducedByHours { get; set; } public int? TrainingTotalHours { get; set; } public bool? IsDurationReducedByRpl { get; set; } + public LearningType? LearningType { get; set; } } public class PriceEpisode @@ -192,7 +194,6 @@ public class PaymentsStatusDetails public string ReasonFrozen { get; set; } public DateTime? FrozenOn { get; set; } } - } public class LearnerStatusDetails