private static Certificate GenerateCertificate(long uln, int standardCode, string familyName, string status, Guid organisationId) { var reference = $"{uln}-{standardCode}"; var epas = Builder <EpaRecord> .CreateListOfSize(1).All() .With(i => i.EpaDate = DateTime.UtcNow.AddDays(-1)) .With(i => i.EpaOutcome = EpaOutcome.Pass) .Build().ToList(); var epaDetails = new EpaDetails { EpaReference = reference, LatestEpaDate = epas[0].EpaDate, LatestEpaOutcome = epas[0].EpaOutcome, Epas = epas }; return(Builder <Certificate> .CreateNew() .With(i => i.Uln = uln) .With(i => i.StandardCode = standardCode) .With(i => i.Status = status) .With(i => i.OrganisationId = organisationId) .With(i => i.CertificateReference = reference) .With(i => i.CertificateData = JsonConvert.SerializeObject(Builder <CertificateData> .CreateNew() .With(cd => cd.LearnerFamilyName = familyName) .With(cd => cd.OverallGrade = CertificateGrade.Pass) .With(cd => cd.EpaDetails = epaDetails) .Build())) .Build()); }
public async Task WhenCallingUpdateEpa_ValidationSuccessful_ReturnsEPADetails( Standard standard, EpaDetails epaDetails, UpdateBatchEpaRequest request) { //Arrange var validationResult = new ValidationResult(); _mockMediator.Setup(s => s.Send(It.IsAny <GetStandardVersionRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockMediator.Setup(t => t.Send(It.Is <GetCertificateForUlnRequest>(s => s.Uln == request.Uln && s.StandardCode == standard.LarsCode), new System.Threading.CancellationToken())).ReturnsAsync((Certificate)null); _mockMediator.Setup(s => s.Send(It.IsAny <UpdateBatchEpaRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(epaDetails); _mockUpdateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(new ValidationResult()); //Act var controllerResult = await _epaBatchController.Update(new List <UpdateBatchEpaRequest> { request }) as ObjectResult; //Assert controllerResult.StatusCode.Should().Be((int)HttpStatusCode.OK); var model = controllerResult.Value as IEnumerable <BatchEpaResponse>; var result = model.First(); result.RequestId.Should().Be(request.RequestId); result.StandardCode.Should().Be(request.StandardCode); result.StandardReference.Should().Be(request.StandardReference); result.Uln.Should().Be(request.Uln); result.FamilyName.Should().Be(request.FamilyName); result.EpaDetails.Should().BeEquivalentTo(epaDetails); result.ValidationErrors.Should().BeEmpty(); }
private EpaDetails GetEpaDetailsFromCertificate(Certificate certificate) { EpaDetails epaDetails = null; if (certificate != null && certificate.Status != CertificateStatus.Deleted) { var certificateData = GetCertificateDataFromCertificate(certificate); epaDetails = certificateData.EpaDetails; } return(epaDetails); }
public override int GetHashCode() { unchecked { const int hashBase = (int)2166136261; const int multiplier = 16777619; int hash = hashBase; hash = (hash * multiplier) ^ (LearnerData is null ? 0 : LearnerData.GetHashCode()); hash = (hash * multiplier) ^ (Status is null ? 0 : Status.GetHashCode()); hash = (hash * multiplier) ^ (EpaDetails is null ? 0 : EpaDetails.GetHashCode()); hash = (hash * multiplier) ^ (Certificate is null ? 0 : Certificate.GetHashCode()); return(hash); } }
private static Certificate GeneratePartialCertificate(long uln, int standardCode, string familyName, Guid organisationId, string overallGrade) { var reference = $"{uln}-{standardCode}"; var epaDetails = new EpaDetails { Epas = new List <EpaRecord>() }; if (!string.IsNullOrEmpty(overallGrade)) { var epas = Builder <EpaRecord> .CreateListOfSize(1).All() .With(i => i.EpaDate = DateTime.UtcNow.AddDays(-1)) .With(i => i.EpaOutcome = overallGrade == CertificateGrade.Fail ? EpaOutcome.Fail : EpaOutcome.Pass) .Build().ToList(); epaDetails = new EpaDetails { EpaReference = reference, LatestEpaDate = epas[0].EpaDate, LatestEpaOutcome = epas[0].EpaOutcome, Epas = epas }; } // NOTE: This is to simulate a certificate that was been partly started via the Web App return(Builder <Certificate> .CreateNew() .With(i => i.Uln = uln) .With(i => i.StandardCode = standardCode) .With(i => i.Status = CertificateStatus.Draft) .With(i => i.OrganisationId = organisationId) .With(i => i.CertificateReference = reference) .With(i => i.CertificateData = JsonConvert.SerializeObject(Builder <CertificateData> .CreateNew() .With(cd => cd.LearnerFamilyName = familyName) .With(cd => cd.OverallGrade = overallGrade) .With(cd => cd.AchievementDate = null) .With(cd => cd.EpaDetails = epaDetails) .With(cd => cd.ContactName = null) .With(cd => cd.ContactOrganisation = null) .With(cd => cd.Department = null) .With(cd => cd.ContactAddLine1 = null) .With(cd => cd.ContactAddLine2 = null) .With(cd => cd.ContactAddLine3 = null) .With(cd => cd.ContactAddLine4 = null) .With(cd => cd.ContactPostCode = null) .Build())) .Build()); }
private static Certificate GenerateEpaCertificate(long uln, int standardCode, string familyName, Guid organisationId, bool hasPassedEpa, bool createEpaDetails = true, string overallGrade = null) { // NOTE: This is to simulate a certificate that has only the EPA part submitted var reference = $"{uln}-{standardCode}"; var epas = Builder <EpaRecord> .CreateListOfSize(1).All() .With(i => i.EpaDate = DateTime.UtcNow.AddDays(-1)) .With(i => i.EpaOutcome = hasPassedEpa ? EpaOutcome.Pass : EpaOutcome.Fail) .Build().ToList(); var epaDetails = new EpaDetails(); if (createEpaDetails) { epaDetails = new EpaDetails { EpaReference = reference, LatestEpaDate = epas[0].EpaDate, LatestEpaOutcome = epas[0].EpaOutcome, Epas = epas }; } return(Builder <Certificate> .CreateNew() .With(i => i.Uln = uln) .With(i => i.StandardCode = standardCode) .With(i => i.Status = CertificateStatus.Draft) .With(i => i.OrganisationId = organisationId) .With(i => i.CertificateReference = $"{uln}-{standardCode}") .With(i => i.CertificateData = JsonConvert.SerializeObject(Builder <CertificateData> .CreateNew() .With(cd => cd.LearnerFamilyName = familyName) .With(cd => cd.OverallGrade = overallGrade) .With(cd => cd.AchievementDate = null) .With(cd => cd.EpaDetails = epaDetails) .With(cd => cd.ContactName = null) .With(cd => cd.ContactOrganisation = null) .With(cd => cd.Department = null) .With(cd => cd.ContactAddLine1 = null) .With(cd => cd.ContactAddLine2 = null) .With(cd => cd.ContactAddLine3 = null) .With(cd => cd.ContactAddLine4 = null) .With(cd => cd.ContactPostCode = null) .Build())) .Build()); }
private CertificateData CombineCertificateData(CertificateData data, Domain.Entities.Learner learner, Standard standard, Provider provider, StandardOptions options, Certificate certificate) { var epaDetails = new EpaDetails(); if (certificate != null) { var certData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); if (certData.EpaDetails != null) { epaDetails = certData.EpaDetails; } } if (epaDetails.Epas is null) { epaDetails.Epas = new List <EpaRecord>(); } var epaOutcome = data.OverallGrade == CertificateGrade.Fail ? EpaOutcome.Fail : EpaOutcome.Pass; if (data.AchievementDate != null && !epaDetails.Epas.Any(rec => rec.EpaDate == data.AchievementDate.Value && rec.EpaOutcome == epaOutcome)) { var record = new EpaRecord { EpaDate = data.AchievementDate.Value, EpaOutcome = epaOutcome }; epaDetails.Epas.Add(record); var latestRecord = epaDetails.Epas.OrderByDescending(epa => epa.EpaDate).First(); epaDetails.LatestEpaDate = latestRecord.EpaDate; epaDetails.LatestEpaOutcome = latestRecord.EpaOutcome; } return(new CertificateData() { LearnerGivenNames = learner.GivenNames, LearnerFamilyName = learner.FamilyName, LearningStartDate = learner.LearnStartDate, StandardReference = standard.IfateReferenceNumber, StandardName = standard.Title, StandardLevel = standard.Level, StandardPublicationDate = standard.EffectiveFrom, FullName = $"{learner.GivenNames} {learner.FamilyName}", ProviderName = provider.Name, ContactName = data.ContactName, ContactOrganisation = data.ContactOrganisation, Department = data.Department, ContactAddLine1 = data.ContactAddLine1, ContactAddLine2 = data.ContactAddLine2, ContactAddLine3 = data.ContactAddLine3, ContactAddLine4 = data.ContactAddLine4, ContactPostCode = data.ContactPostCode, Registration = data.Registration, AchievementDate = data.AchievementDate, CourseOption = CertificateHelpers.NormalizeCourseOption(options, data.CourseOption), OverallGrade = CertificateHelpers.NormalizeOverallGrade(data.OverallGrade), Version = data.Version, EpaDetails = epaDetails }); }