private async Task <Certificate> GetCertificate(GetBatchCertificateRequest request) { _logger.LogInformation("GetCertificate Before Get Certificate from db"); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StandardCode); _logger.LogInformation("GetCertificate Before Get Searching Organisation from db"); var searchingOrganisation = await _organisationQueryRepository.GetByUkPrn(request.UkPrn); var allowedCertificateStatus = new string[] { CertificateStatus.Draft, CertificateStatus.Submitted, CertificateStatus.Printed, CertificateStatus.Reprint }; if (certificate != null && searchingOrganisation != null && allowedCertificateStatus.Contains(certificate.Status)) { var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); if (string.Equals(certData.LearnerFamilyName, request.FamilyName, StringComparison.InvariantCultureIgnoreCase)) { certificate = await CertificateHelpers.ApplyStatusInformation(_certificateRepository, _contactQueryRepository, certificate); if (!EpaOutcome.Pass.Equals(certData.EpaDetails?.LatestEpaOutcome, StringComparison.InvariantCultureIgnoreCase)) { // As EPA has not passed, only give access to basic information & EPA Details certificate = RedactCertificateInformation(certificate, true); } if (certificate.OrganisationId != searchingOrganisation.Id) { var providedStandards = await _standardRepository.GetEpaoRegisteredStandards(searchingOrganisation.EndPointAssessorOrganisationId, short.MaxValue, null); if (providedStandards.PageOfResults.Any(s => s.StandardCode == certificate.StandardCode)) { // Shared standard but not the EPAO who created the certificate certificate = RedactCertificateInformation(certificate, false); } else { certificate = null; } } } else { certificate = null; } } else { certificate = null; } return(certificate); }
public async Task <PaginatedList <GetEpaoRegisteredStandardsResponse> > Handle(GetEpaoRegisteredStandardsRequest request, CancellationToken cancellationToken) { _logger.LogInformation("Retreiving Epao registered standards"); var result = await _standardRepository.GetEpaoRegisteredStandards(request.EpaoId, request.PageSize, request.PageIndex); var epaoRegisteredStandardsResult = result.PageOfResults.Select(o => new GetEpaoRegisteredStandardsResponse { Level = o.Level, StandardCode = o.StandardCode, StandardName = o.StandardName, ReferenceNumber = o.ReferenceNumber }).ToList(); return(new PaginatedList <GetEpaoRegisteredStandardsResponse>(epaoRegisteredStandardsResult, result.TotalCount, request.PageIndex, request.PageSize)); }
private async Task <Certificate> GetCertificate(GetBatchCertificateRequest request) { _logger.LogInformation("GetCertificate Before Get Certificate from db"); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StandardCode, request.FamilyName, request.IncludeLogs); _logger.LogInformation("GetCertificate Before Get Searching Organisation from db"); var searchingOrganisation = await _organisationQueryRepository.GetByUkPrn(request.UkPrn); var allowedCertificateStatus = new[] { CertificateStatus.Draft, CertificateStatus.Submitted }.Concat(CertificateStatus.PrintProcessStatus); if (certificate == null || searchingOrganisation == null || !allowedCertificateStatus.Contains(certificate.Status)) { return(null); } var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); certificate = await CertificateHelpers.ApplyStatusInformation(_certificateRepository, _contactQueryRepository, certificate); if ((certificate.Status == CertificateStatus.Submitted || CertificateStatus.HasPrintProcessStatus(certificate.Status)) && certData.OverallGrade == CertificateGrade.Fail) { return(null); } else if (certificate.Status == CertificateStatus.Draft && EpaOutcome.Pass.Equals(certData.EpaDetails?.LatestEpaOutcome, StringComparison.InvariantCultureIgnoreCase) && certData.OverallGrade == null) { return(null); } if (certificate.OrganisationId != searchingOrganisation.Id) { var providedStandards = await _standardRepository.GetEpaoRegisteredStandards(searchingOrganisation.EndPointAssessorOrganisationId, int.MaxValue, 1); if (providedStandards.PageOfResults.Any(s => s.StandardCode == certificate.StandardCode)) { // Shared standard but not the EPAO who created the certificate certificate = RedactCertificateInformation(certificate, false); } else { certificate = null; } } return(certificate); }
public async Task <IEnumerable <EPORegisteredStandards> > GetEpaoRegisteredStandards(string endPointAssessorOrganisationId) { var results = await _standardRepository.GetEpaoRegisteredStandards(endPointAssessorOrganisationId, int.MaxValue, 1); return(results.PageOfResults); }