public async Task <Standard> GetStandardVersionById(string id, string version = null) { Standard standard = null; try { var standardId = new StandardId(id); switch (standardId.IdType) { case StandardId.StandardIdType.LarsCode: standard = await _standardRepository.GetStandardVersionByLarsCode(standardId.LarsCode, version); break; case StandardId.StandardIdType.IFateReferenceNumber: standard = await _standardRepository.GetStandardVersionByIFateReferenceNumber(standardId.IFateReferenceNumber, version); break; case StandardId.StandardIdType.StandardUId: standard = await _standardRepository.GetStandardVersionByStandardUId(standardId.StandardUId); break; default: throw new ArgumentOutOfRangeException("id", "StandardId was not of type StandardUId, LarsCode or IfateReferenceNumber"); } } catch (Exception ex) { _logger.LogError(ex, $"STANDARD VERSION: Failed to get for standard id: {id}"); } return(standard); }
public async Task <LearnerDetailResult> Handle(GetLearnerDetailRequest request, CancellationToken cancellationToken) { var learner = await _learnerRepository.Get(request.Uln, request.StdCode); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StdCode); var logs = new List <CertificateLogSummary>(); var certificateData = new CertificateData(); var epao = new Organisation(); if (certificate != null) { if (request.AllRecords) { logs.AddRange(await _staffCertificateRepository.GetAllCertificateLogs(certificate.Id)); } else { var showSummaryStatus = new[] { CertificateStatus.Submitted }.Concat(CertificateStatus.PrintProcessStatus).ToList(); if (showSummaryStatus.Contains(certificate.Status)) { logs.AddRange(await _staffCertificateRepository.GetSummaryCertificateLogs(certificate.Id)); } else { var latestCertificateLog = await _staffCertificateRepository.GetLatestCertificateLog(certificate.Id); if (latestCertificateLog != null) { logs.Add(latestCertificateLog); } } } if (logs.Count() > 1) { CalculateDifferences(logs); } certificateData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData) ?? new CertificateData(); epao = await _organisationRepository.Get(certificate.OrganisationId) ?? new Organisation(); } var standard = await _standardRepository.GetStandardVersionByLarsCode(request.StdCode, certificateData?.Version); var learnerDetail = new LearnerDetailResult() { Uln = request.Uln, FamilyName = !string.IsNullOrEmpty(certificateData.LearnerFamilyName) ? certificateData.LearnerFamilyName : learner?.FamilyName, GivenNames = !string.IsNullOrEmpty(certificateData.LearnerGivenNames) ? certificateData.LearnerGivenNames : learner?.GivenNames, LearnStartDate = certificateData.LearningStartDate.HasValue ? certificateData.LearningStartDate : learner?.LearnStartDate, StandardCode = (certificate?.StandardCode).HasValue ? certificate.StandardCode : standard?.LarsCode ?? 0, Standard = !string.IsNullOrEmpty(certificateData.StandardName) ? certificateData.StandardName : standard?.Title, Version = !string.IsNullOrEmpty(certificateData.Version) ? certificateData.Version : learner?.Version, Level = certificateData.StandardLevel > 0 ? certificateData.StandardLevel : standard?.Level ?? 0, CertificateReference = certificate?.CertificateReference, CertificateStatus = certificate?.Status, OverallGrade = certificateData.OverallGrade, AchievementDate = certificateData.AchievementDate, Option = !string.IsNullOrEmpty(certificateData.CourseOption) ? certificateData.CourseOption : learner?.CourseOption, OrganisationName = epao.EndPointAssessorName, OrganisationId = epao.EndPointAssessorOrganisationId, CertificateLogs = logs, FundingModel = learner?.FundingModel, CompletionStatus = learner?.CompletionStatus, CompletionStatusDescription = FormatCompletionStatusDescription(learner?.CompletionStatus), IsPrivatelyFunded = certificate?.IsPrivatelyFunded, CertificateId = certificate?.Id, PrintStatusAt = certificate?.CertificateBatchLog?.StatusAt, ReasonForChange = certificate?.CertificateBatchLog?.ReasonForChange, CertificateSendTo = certificateData.SendTo.ToString(), ContactName = certificateData.ContactName, ContactDept = certificateData.Department, ContactOrganisation = certificateData.ContactOrganisation, ContactAddLine1 = certificateData.ContactAddLine1, ContactAddLine2 = certificateData.ContactAddLine2, ContactAddLine3 = certificateData.ContactAddLine3, ContactAddLine4 = certificateData.ContactAddLine4, ContactPostCode = certificateData.ContactPostCode, LastUpdatedAt = certificate?.LatestChange() }; return(learnerDetail); }