- 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..32bafdaa4e 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,34 @@ 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 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)
+ {
+ //filter the submission that within the year selected
+ if (submission.CreatedDate.Year == filters.YearAccepted || filters.YearAccepted == null)
{
- AgreementId = agreement.Id,
- AgreementAcceptedDate = agreement.AcceptedDate,
- Submission = submission,
- IsCurrent = agreement.IsCurrent
- };
-
- enrolmentCards.Add(card);
+ //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
+ {
+ 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 +221,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 +239,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