From 1256aba80c2a4421343513eb2e9dace2f0775d9b Mon Sep 17 00:00:00 2001 From: Jack Wong <108699279+bergomi02@users.noreply.github.com> Date: Wed, 3 Jun 2026 15:59:25 -0700 Subject: [PATCH 1/3] initial commit --- ...nrollee-access-term-enrolment.component.ts | 12 ++--- .../enrollee-enrolments.component.html | 28 ++++++---- .../app/shared/models/enrolment-card.model.ts | 3 ++ .../EnrolleeAgreementsController.cs | 51 +++++++++++-------- .../Services/EnrolleeAgreementService.cs | 1 + .../Services/EnrolleeSubmissionService.cs | 1 + .../Enrollee/EnrolmentCardViewModel.cs | 5 ++ 7 files changed, 64 insertions(+), 37 deletions(-) diff --git a/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-access-term-enrolment/enrollee-access-term-enrolment.component.ts b/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-access-term-enrolment/enrollee-access-term-enrolment.component.ts index d4ca2ab496..9102002f7d 100644 --- a/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-access-term-enrolment/enrollee-access-term-enrolment.component.ts +++ b/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-access-term-enrolment/enrollee-access-term-enrolment.component.ts @@ -13,10 +13,10 @@ import { RouteUtils } from '@lib/utils/route-utils.class'; import { AdjudicationRoutes } from '@adjudication/adjudication.routes'; @Component({ - selector: 'app-enrollee-access-term-enrolment', - templateUrl: './enrollee-access-term-enrolment.component.html', - styleUrls: ['./enrollee-access-term-enrolment.component.scss'], - standalone: false + selector: 'app-enrollee-access-term-enrolment', + templateUrl: './enrollee-access-term-enrolment.component.html', + styleUrls: ['./enrollee-access-term-enrolment.component.scss'], + standalone: false }) export class EnrolleeAccessTermEnrolmentComponent extends AbstractComponent implements OnInit { public busy: Subscription; @@ -39,8 +39,8 @@ export class EnrolleeAccessTermEnrolmentComponent extends AbstractComponent impl public ngOnInit() { const enrolleeId = this.route.snapshot.params.id; - const accessTermId = this.route.snapshot.params.aid; - this.busy = this.adjudicationResource.getSubmissionForAgreement(enrolleeId, accessTermId) + const submissionId = this.route.snapshot.params.aid; + this.busy = this.adjudicationResource.getSubmissionForAgreement(enrolleeId, submissionId) .subscribe((enrolmentSubmission: HttpEnrolleeSubmission) => this.enrolmentSubmission = this.enrolleeSubmissionAdapterResponse(enrolmentSubmission) ); diff --git a/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-enrolments/enrollee-enrolments.component.html b/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-enrolments/enrollee-enrolments.component.html index f1a09e7cf7..0081b0b5b4 100644 --- a/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-enrolments/enrollee-enrolments.component.html +++ b/prime-angular-frontend/src/app/modules/adjudication/pages/enrollee-enrolments/enrollee-enrolments.component.html @@ -36,8 +36,10 @@ isCurrent: enrolmentCard.isCurrent && !isUnderAdjudication(enrollee), submittedDate: enrolmentCard.submissionCreatedDate, acceptedDate: enrolmentCard.agreementAcceptedDate, + approvedDate: enrolmentCard.enrolmentApprovedDate, + agreementType: enrolmentCard.agreementType, remoteAccess: enrolmentCard.requestedRemoteAccess, - enrolmentRoute: [enrolmentCard.agreementId, AdjudicationRoutes.ENROLLEE_ACCESS_TERM_ENROLMENT], + enrolmentRoute: [enrolmentCard.submissionId, AdjudicationRoutes.ENROLLEE_ACCESS_TERM_ENROLMENT], toaRoute: [enrolmentCard.agreementId, AdjudicationRoutes.ENROLLEE_ACCESS_TERM], isLast: last }"> @@ -49,6 +51,8 @@ let-isCurrent="isCurrent" let-submittedDate="submittedDate" let-acceptedDate="acceptedDate" + let-approvedDate="approvedDate" + let-agreementType="agreementType" let-remoteAccess="remoteAccess" let-enrolmentRoute="enrolmentRoute" let-toaRoute="toaRoute" @@ -61,19 +65,25 @@ to mat-card-title not allowing the use of flexbox -->
- Submitted {{ submittedDate | formatDate: 'MMMM Do YYYY' }} + Enrolment submitted on {{ submittedDate | formatDate: 'MMMM Do YYYY' }} CURRENT
-

- - This PRIME enrolment was approved on {{ acceptedDate | formatDate: 'MMMM Do YYYY' }} +

+ + {{ 'This PRIME enrolment was approved on ' + (approvedDate | formatDate: 'MMMM Do YYYY') }} - Enrollee edited and submitted an Enrolment, but has not signed the Terms of Access + This PRIME enrolment was not approved

- + +

+ TOA assigned - {{ agreementType }} + {{ acceptedDate ? ', TOA was accepted on ' + (acceptedDate | formatDate: 'MMMM Do YYYY') : + ', TOA was not accepted' }} +

+
User Requested Remote Access @@ -82,10 +92,10 @@ + [routerLink]="enrolmentRoute">View Enrolment Detail diff --git a/prime-angular-frontend/src/app/shared/models/enrolment-card.model.ts b/prime-angular-frontend/src/app/shared/models/enrolment-card.model.ts index 7eb7b12a88..7dcbaf1105 100644 --- a/prime-angular-frontend/src/app/shared/models/enrolment-card.model.ts +++ b/prime-angular-frontend/src/app/shared/models/enrolment-card.model.ts @@ -1,6 +1,9 @@ export interface EnrolmentCard { agreementId: number; + submissionId: number; + agreementType: string; agreementAcceptedDate: string; + enrolmentApprovedDate: string; requestedRemoteAccess: boolean; submissionCreatedDate: string; isCurrent: boolean; diff --git a/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs b/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs index 8401dec4b8..30d9cb62f7 100644 --- a/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs +++ b/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs @@ -10,6 +10,8 @@ using Prime.Models.Api; using Prime.ViewModels; using Prime.Services.Razor; +using System.Linq; +using System; namespace Prime.Controllers { @@ -137,22 +139,33 @@ public async Task GetEnrolleeEnrolmentCards(int enrolleeId, [FromQ } var enrolmentCards = new List(); - + var submissions = await _enrolleeSubmissionService.GetEnrolleeSubmissionsAsync(enrolleeId); var agreements = await _enrolleeAgreementService.GetEnrolleeAgreementsAsync(enrolleeId, filters); + var agreementsArg = agreements.ToArray(); + var lastSubmissionDate = null as DateTimeOffset?; - foreach (var agreement in agreements) - { - var submission = await _enrolleeSubmissionService.GetEnrolleeSubmissionBeforeDateAsync(enrolleeId, agreement.AcceptedDate.Value); + var currentSubmission = submissions.First(); - var card = new EnrolmentCardViewModel + foreach (var submission in submissions) + { + if (submission.CreatedDate.Year == filters.YearAccepted || filters.YearAccepted == null) { - AgreementId = agreement.Id, - AgreementAcceptedDate = agreement.AcceptedDate, - Submission = submission, - IsCurrent = agreement.IsCurrent - }; - - enrolmentCards.Add(card); + var agreement = agreements.Where(a => submission.CreatedDate <= a.CreatedDate && + (lastSubmissionDate == null || a.CreatedDate < lastSubmissionDate)).FirstOrDefault(); + var card = new EnrolmentCardViewModel + { + AgreementId = agreement != null ? agreement.Id : 0, + AgreementType = agreement != null ? agreement.AgreementVersion.AccessType : null, + AgreementAcceptedDate = agreement != null ? agreement.AcceptedDate : null, + EnrolmentApprovedDate = agreement != null ? agreement.CreatedDate : null, + Submission = submission, + SubmissionId = submission.Id, + IsCurrent = currentSubmission.Id == submission.Id + }; + + enrolmentCards.Add(card); + lastSubmissionDate = submission.CreatedDate; + } } if (User.IsAdministrant()) @@ -207,13 +220,13 @@ public async Task GetAgreement(int enrolleeId, int agreementId) /// /// /// - [HttpGet("{enrolleeId}/agreements/{agreementId}/submission", Name = nameof(GetSubmissionForAgreement))] + [HttpGet("{enrolleeId}/agreements/{submissionId}/submission", Name = nameof(GetSubmissionForAgreement))] [ProducesResponseType(typeof(ApiMessageResponse), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status403Forbidden)] [ProducesResponseType(typeof(ApiMessageResponse), StatusCodes.Status404NotFound)] [ProducesResponseType(typeof(ApiResultResponse), StatusCodes.Status200OK)] - public async Task GetSubmissionForAgreement(int enrolleeId, int agreementId) + public async Task GetSubmissionForAgreement(int enrolleeId, int submissionId) { var record = await _enrolleeService.GetPermissionsRecordAsync(enrolleeId); if (record == null) @@ -225,16 +238,10 @@ public async Task GetSubmissionForAgreement(int enrolleeId, int ag return Forbid(); } - Agreement agreement = await _enrolleeAgreementService.GetEnrolleeAgreementAsync(enrolleeId, agreementId); - if (agreement == null || agreement.AcceptedDate == null) - { - return NotFound($"Accepted Agreement not found with id {agreementId} for enrollee with id {enrolleeId}"); - } - - var enrolleeSubmission = await _enrolleeSubmissionService.GetEnrolleeSubmissionBeforeDateAsync(enrolleeId, agreement.AcceptedDate.Value); + var enrolleeSubmission = await _enrolleeSubmissionService.GetEnrolleeSubmissionAsync(submissionId); if (enrolleeSubmission == null) { - return NotFound($"No enrolment submissions were found for Agreement with id {agreementId} for enrollee with id {enrolleeId}."); + return NotFound($"No enrolment submissions were found for Submission with id {submissionId} for enrollee with id {enrolleeId}."); } if (User.IsAdministrant()) diff --git a/prime-dotnet-webapi/Services/EnrolleeAgreementService.cs b/prime-dotnet-webapi/Services/EnrolleeAgreementService.cs index 40f50c79d4..775323299a 100644 --- a/prime-dotnet-webapi/Services/EnrolleeAgreementService.cs +++ b/prime-dotnet-webapi/Services/EnrolleeAgreementService.cs @@ -66,6 +66,7 @@ public async Task> GetEnrolleeAgreementsAsync(int enrolle var agreements = await _context.Agreements .AsNoTracking() .Include(at => at.SignedAgreement) + .Include(at => at.AgreementVersion) .Where(at => at.EnrolleeId == enrolleeId) .OrderByDescending(at => at.CreatedDate) .If(filters.OnlyLatest, q => q.Take(1)) diff --git a/prime-dotnet-webapi/Services/EnrolleeSubmissionService.cs b/prime-dotnet-webapi/Services/EnrolleeSubmissionService.cs index 765624b966..3e377113e5 100644 --- a/prime-dotnet-webapi/Services/EnrolleeSubmissionService.cs +++ b/prime-dotnet-webapi/Services/EnrolleeSubmissionService.cs @@ -35,6 +35,7 @@ public async Task> GetEnrolleeSubmissionsAsync(int enrol { return await _context.Submissions .Where(epv => epv.EnrolleeId == enrolleeId) + .OrderByDescending(epv => epv.CreatedDate) .ToListAsync(); } diff --git a/prime-dotnet-webapi/ViewModels/Enrollee/EnrolmentCardViewModel.cs b/prime-dotnet-webapi/ViewModels/Enrollee/EnrolmentCardViewModel.cs index 93705a13b6..840022d58f 100644 --- a/prime-dotnet-webapi/ViewModels/Enrollee/EnrolmentCardViewModel.cs +++ b/prime-dotnet-webapi/ViewModels/Enrollee/EnrolmentCardViewModel.cs @@ -7,14 +7,19 @@ namespace Prime.ViewModels public class EnrolmentCardViewModel { public int AgreementId { get; set; } + public int SubmissionId { get; set; } + public string AgreementType { get; set; } public DateTimeOffset? AgreementAcceptedDate { get; set; } + public DateTimeOffset? EnrolmentApprovedDate { get; set; } + public bool IsCurrent { get; set; } [JsonIgnore] public Submission Submission { get; set; } + public bool RequestedRemoteAccess { get From 7bb97b357e07b908550e6b1bae5c381729ce77a0 Mon Sep 17 00:00:00 2001 From: Jack Wong <108699279+bergomi02@users.noreply.github.com> Date: Thu, 4 Jun 2026 13:02:36 -0700 Subject: [PATCH 2/3] remove unused code --- prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs b/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs index 30d9cb62f7..28d5ef4756 100644 --- a/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs +++ b/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs @@ -141,7 +141,6 @@ public async Task GetEnrolleeEnrolmentCards(int enrolleeId, [FromQ var enrolmentCards = new List(); var submissions = await _enrolleeSubmissionService.GetEnrolleeSubmissionsAsync(enrolleeId); var agreements = await _enrolleeAgreementService.GetEnrolleeAgreementsAsync(enrolleeId, filters); - var agreementsArg = agreements.ToArray(); var lastSubmissionDate = null as DateTimeOffset?; var currentSubmission = submissions.First(); From 15aace00815b3ffbc55ae4f11d3c08f3570a38c6 Mon Sep 17 00:00:00 2001 From: Jack Wong <108699279+bergomi02@users.noreply.github.com> Date: Thu, 4 Jun 2026 13:03:49 -0700 Subject: [PATCH 3/3] add comment --- prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs b/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs index 28d5ef4756..32bafdaa4e 100644 --- a/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs +++ b/prime-dotnet-webapi/Controllers/EnrolleeAgreementsController.cs @@ -147,8 +147,10 @@ public async Task GetEnrolleeEnrolmentCards(int enrolleeId, [FromQ foreach (var submission in submissions) { + //filter the submission that within the year selected if (submission.CreatedDate.Year == filters.YearAccepted || filters.YearAccepted == null) { + //find the agreement that created after the submission and before the next submission (if exists) var agreement = agreements.Where(a => submission.CreatedDate <= a.CreatedDate && (lastSubmissionDate == null || a.CreatedDate < lastSubmissionDate)).FirstOrDefault(); var card = new EnrolmentCardViewModel