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());
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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());
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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
            });
        }