public async Task <ActionResult <AccessTerm> > GetAccessTerm(int enrolleeId, int accessTermId) { var enrollee = await _enrolleeService.GetEnrolleeAsync(enrolleeId); if (enrollee == null) { return(NotFound(ApiResponse.Message($"Enrollee not found with id {enrolleeId}"))); } if (!User.CanView(enrollee)) { return(Forbid()); } if (!await _accessTermService.AccessTermExistsOnEnrolleeAsync(accessTermId, enrolleeId)) { return(NotFound(ApiResponse.Message($"Access term not found with id {accessTermId} for enrollee id: {enrolleeId}"))); } AccessTerm accessTerm = await _accessTermService.GetEnrolleesAccessTermAsync(enrolleeId, accessTermId); accessTerm.TermsOfAccess = await _razorConverterService.RenderViewToStringAsync("/Views/TermsOfAccess.cshtml", accessTerm); if (User.IsAdmin()) { await _businessEventService.CreateAdminViewEventAsync(enrollee.Id, "Admin viewing Terms of Access"); } return(Ok(ApiResponse.Result(accessTerm))); }
/** * Generates an Access Term based off of the enrollee */ private async Task <AccessTerm> GenerateAccessTermAsync(Enrollee enrollee) { var accessTerms = new AccessTerm { Enrollee = enrollee }; accessTerms.GlobalClause = await GetGlobalClause(); accessTerms.UserClause = await GetUserClause(enrollee); accessTerms.AccessTermLicenseClassClauses .AddRange(await GetAccessTermLicenseClassClauses(enrollee, accessTerms)); accessTerms.LimitsConditionsClause = await GetAccessTermLimitsConditionsClause(enrollee); return(accessTerms); }
public async Task <ActionResult <AccessTerm> > GetAccessTermLatest(int enrolleeId, [FromQuery] bool signed) { var enrollee = await _enrolleeService.GetEnrolleeAsync(enrolleeId); if (enrollee == null) { return(NotFound(ApiResponse.Message($"Enrollee not found with id {enrolleeId}"))); } if (!User.CanView(enrollee)) { return(Forbid()); } AccessTerm accessTerm = (signed) ? await _accessTermService.GetMostRecentAcceptedEnrolleesAccessTermAsync(enrolleeId) : await _accessTermService.GetMostRecentNotAcceptedEnrolleesAccessTermAsync(enrolleeId); accessTerm.TermsOfAccess = await _razorConverterService.RenderViewToStringAsync("/Views/TermsOfAccess.cshtml", accessTerm); return(Ok(ApiResponse.Result(accessTerm))); }
public async Task <ActionResult <EnrolleeProfileVersion> > GetEnrolmentForAccessTerm(int enrolleeId, int accessTermId) { var enrollee = await _enrolleeService.GetEnrolleeAsync(enrolleeId); if (enrollee == null) { return(NotFound(ApiResponse.Message($"Enrollee not found with id {enrolleeId}"))); } if (!User.CanView(enrollee)) { return(Forbid()); } AccessTerm acceptedAccessTerm = await _accessTermService.GetEnrolleesAccessTermAsync(enrolleeId, accessTermId); if (acceptedAccessTerm == null) { return(NotFound(ApiResponse.Message($"Accepted Access Term not found with id {accessTermId} for enrollee with id {enrolleeId}"))); } var enrolleeProfileHistory = await _enrolleeProfileVersionService .GetEnrolleeProfileVersionBeforeDateAsync(enrolleeId, (DateTimeOffset)acceptedAccessTerm.AcceptedDate); if (enrolleeProfileHistory == null) { return(NotFound(ApiResponse.Message($"No enrolment profile history found for Access Term with id {accessTermId} for enrollee with id {enrolleeId}."))); } if (User.IsAdmin()) { await _businessEventService.CreateAdminViewEventAsync(enrollee.Id, "Admin viewing Enrolment in PRIME History"); } return(Ok(ApiResponse.Result(enrolleeProfileHistory))); }
private async Task <IEnumerable <AccessTermLicenseClassClause> > GetAccessTermLicenseClassClauses(Enrollee enrollee, AccessTerm accessTerms) { var licenseClassClauses = new List <LicenseClassClause>(); if (enrollee.Certifications.Count > 0) { foreach (var org in enrollee.EnrolleeOrganizationTypes) { foreach (var cert in enrollee.Certifications) { var mappings = await _context.LicenseClassClauseMappings .Include(m => m.LicenseClassClause) .Where(m => m.LicenseCode == cert.LicenseCode) .Where(m => m.OrganizatonTypeCode == org.OrganizationTypeCode) .ToListAsync(); foreach (var mapping in mappings) { // Check if License Class Clause already in list if (licenseClassClauses.FindAll(lcc => lcc.Id == mapping.LicenseClassClauseId).Count == 0) { licenseClassClauses.Add(mapping.LicenseClassClause); } } } } } return(licenseClassClauses.Select(lcc => new AccessTermLicenseClassClause { AccessTerm = accessTerms, LicenseClassClause = lcc })); }