private async Task <EpaDetails> CreateNewEpa(CreateBatchEpaRequest request) { _logger.LogInformation("CreateNewEpa Before Get Certificate from db"); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StandardCode); if (certificate is null) { _logger.LogInformation("CreateNewEpa Before StartCertificateRequest"); var startCertificateRequest = new StartCertificateRequest { StandardCode = request.StandardCode, UkPrn = request.UkPrn, Uln = request.Uln, Username = ExternalApiConstants.ApiUserName }; certificate = await _mediator.Send(startCertificateRequest); } else { certificate = EpaHelpers.ResetCertificateData(certificate); } if (certificate is null) { _logger.LogError($"CreateNewEpa StartCertificateRequest did not create Certificate for Uln {request.Uln} StandardCode {request.StandardCode}"); throw new NotFound(); } certificate.Status = Domain.Consts.CertificateStatus.Draft; _logger.LogInformation("CreateNewEpa Before Resetting Certificate Data"); var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); _logger.LogInformation("CreateNewEpa Before Adding EPAs"); if (request.EpaDetails?.Epas != null) { foreach (var epa in request.EpaDetails.Epas) { epa.EpaOutcome = EpaHelpers.NormalizeEpaOutcome(epa.EpaOutcome); certData.EpaDetails.Epas.Add(epa); } } var latestEpaRecord = certData.EpaDetails.Epas.OrderByDescending(epa => epa.EpaDate).FirstOrDefault(); certData.EpaDetails.LatestEpaDate = latestEpaRecord?.EpaDate; certData.EpaDetails.LatestEpaOutcome = latestEpaRecord?.EpaOutcome; _logger.LogInformation("CreateNewEpa Before Update CertificateData"); certificate.CertificateData = JsonConvert.SerializeObject(certData); _logger.LogInformation("CreateNewEpa Before Update Cert in db"); await _certificateRepository.Update(certificate, ExternalApiConstants.ApiUserName, CertificateActions.Epa); return(certData.EpaDetails); }
private async Task <EpaDetails> UpdateEpaDetails(UpdateBatchEpaRequest request) { _logger.LogInformation("UpdateEpaDetails Before Get Certificate from db"); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StandardCode); if (certificate is null) { throw new NotFound(); } else { certificate = EpaHelpers.ResetCertificateData(certificate); } _logger.LogInformation("UpdateEpaDetails Before Combining EpaDetails"); var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); certData.EpaDetails = new EpaDetails { EpaReference = certificate.CertificateReference, Epas = new List <EpaRecord>() }; if (request.EpaDetails?.Epas != null) { foreach (var epa in request.EpaDetails.Epas) { epa.EpaOutcome = EpaHelpers.NormalizeEpaOutcome(epa.EpaOutcome); certData.EpaDetails.Epas.Add(epa); } } var latestEpaRecord = certData.EpaDetails.Epas.OrderByDescending(epa => epa.EpaDate).FirstOrDefault(); certData.EpaDetails.LatestEpaDate = latestEpaRecord?.EpaDate; certData.EpaDetails.LatestEpaOutcome = latestEpaRecord?.EpaOutcome; _logger.LogInformation("UpdateEpaDetails Before Update CertificateData"); certificate.CertificateData = JsonConvert.SerializeObject(certData); _logger.LogInformation("UpdateEpaDetails Before Update Cert in db"); await _certificateRepository.Update(certificate, ExternalApiConstants.ApiUserName, CertificateActions.Epa); return(certData.EpaDetails); }
private async Task <EpaDetails> CreateNewEpa(CreateBatchEpaRequest request) { _logger.LogInformation("CreateNewEpa Before Get Certificate from db"); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StandardCode); if (certificate is null) { _logger.LogInformation("CreateNewEpa Before StartCertificateRequest"); var startCertificateRequest = new StartCertificateRequest { StandardCode = request.StandardCode, UkPrn = request.UkPrn, Uln = request.Uln, Username = ExternalApiConstants.ApiUserName, CourseOption = request.CourseOption, StandardUId = request.StandardUId }; certificate = await _mediator.Send(startCertificateRequest); } else { certificate = EpaHelpers.ResetCertificateData(certificate); } if (certificate is null) { _logger.LogError($"CreateNewEpa StartCertificateRequest did not create Certificate for Uln {request.Uln} StandardCode {request.StandardCode}"); throw new NotFoundException(); } certificate.Status = Domain.Consts.CertificateStatus.Draft; _logger.LogInformation("CreateNewEpa Before Resetting Certificate Data"); var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); _logger.LogInformation("CreateNewEpa Before Adding EPAs"); if (request.EpaDetails?.Epas != null) { foreach (var epa in request.EpaDetails.Epas) { epa.EpaOutcome = EpaHelpers.NormalizeEpaOutcome(epa.EpaOutcome); certData.EpaDetails.Epas.Add(epa); } } var latestEpaRecord = certData.EpaDetails.Epas.OrderByDescending(epa => epa.EpaDate).FirstOrDefault(); certData.EpaDetails.LatestEpaDate = latestEpaRecord?.EpaDate; certData.EpaDetails.LatestEpaOutcome = latestEpaRecord?.EpaOutcome; var epaAction = CertificateActions.Epa; if (latestEpaRecord?.EpaOutcome.Equals(EpaOutcome.Fail, StringComparison.InvariantCultureIgnoreCase) == true) { certData.AchievementDate = latestEpaRecord?.EpaDate; certData.OverallGrade = CertificateGrade.Fail; certificate.Status = CertificateStatus.Submitted; epaAction = CertificateActions.Submit; } else { certData.AchievementDate = null; certData.OverallGrade = null; certificate.Status = CertificateStatus.Draft; } _logger.LogInformation("CreateNewEpa Before Update CertificateData"); certificate.CertificateData = JsonConvert.SerializeObject(certData); _logger.LogInformation("CreateNewEpa Before Update Cert in db"); await _certificateRepository.Update(certificate, ExternalApiConstants.ApiUserName, epaAction); return(certData.EpaDetails); }
private async Task <EpaDetails> UpdateEpaDetails(UpdateBatchEpaRequest request) { _logger.LogInformation("UpdateEpaDetails Before Get Certificate from db"); var certificate = await _certificateRepository.GetCertificate(request.Uln, request.StandardCode); if (certificate is null) { throw new NotFoundException(); } else { certificate = EpaHelpers.ResetCertificateData(certificate); } _logger.LogInformation("UpdateEpaDetails Before Combining EpaDetails"); var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); certData.EpaDetails = new EpaDetails { EpaReference = certificate.CertificateReference, Epas = new List <EpaRecord>() }; certData.Version = string.IsNullOrWhiteSpace(request.Version) ? null : request.Version; certData.CourseOption = string.IsNullOrWhiteSpace(request.CourseOption) ? null : request.CourseOption; if (request.EpaDetails?.Epas != null) { foreach (var epa in request.EpaDetails.Epas) { epa.EpaOutcome = EpaHelpers.NormalizeEpaOutcome(epa.EpaOutcome); certData.EpaDetails.Epas.Add(epa); } } var latestEpaRecord = certData.EpaDetails.Epas.OrderByDescending(epa => epa.EpaDate).FirstOrDefault(); certData.EpaDetails.LatestEpaDate = latestEpaRecord?.EpaDate; certData.EpaDetails.LatestEpaOutcome = latestEpaRecord?.EpaOutcome; var epaAction = CertificateActions.Epa; if (latestEpaRecord?.EpaOutcome.Equals(EpaOutcome.Fail, System.StringComparison.InvariantCultureIgnoreCase) == true) { certData.AchievementDate = latestEpaRecord?.EpaDate; certData.OverallGrade = CertificateGrade.Fail; certificate.Status = CertificateStatus.Submitted; epaAction = CertificateActions.Submit; } else { certData.AchievementDate = null; certData.OverallGrade = null; certificate.Status = CertificateStatus.Draft; } _logger.LogInformation("UpdateEpaDetails Before Update CertificateData"); certificate.CertificateData = JsonConvert.SerializeObject(certData); _logger.LogInformation("UpdateEpaDetails Before Update Cert in db"); await _certificateRepository.Update(certificate, ExternalApiConstants.ApiUserName, epaAction); return(certData.EpaDetails); }