public void TransferRegistration(TqRegistrationProfile profile, Provider transferTo)
        {
            var toProvider           = DbContext.TlProvider.FirstOrDefault(x => x.UkPrn == (long)transferTo);
            var transferToTqProvider = ProviderDataProvider.CreateTqProvider(DbContext, TqAwardingOrganisation, toProvider, true);

            foreach (var pathway in profile.TqRegistrationPathways)
            {
                pathway.Status  = RegistrationPathwayStatus.Transferred;
                pathway.EndDate = DateTime.UtcNow;

                foreach (var specialism in pathway.TqRegistrationSpecialisms)
                {
                    specialism.IsOptedin = true;
                    specialism.EndDate   = DateTime.UtcNow;
                }
            }

            var industryPlacement        = profile.TqRegistrationPathways.FirstOrDefault()?.IndustryPlacements?.FirstOrDefault();
            var tqRegistrationPathway    = RegistrationsDataProvider.CreateTqRegistrationPathway(DbContext, profile, transferToTqProvider);
            var tqRegistrationSpecialism = RegistrationsDataProvider.CreateTqRegistrationSpecialism(DbContext, tqRegistrationPathway, Specialism);

            DbContext.SaveChanges();

            if (industryPlacement != null)
            {
                IndustryPlacementProvider.CreateIndustryPlacement(DbContext, tqRegistrationPathway.Id, industryPlacement.Status);
            }

            DbContext.SaveChanges();
        }
        public override void Given()
        {
            // Seed Tlevel data for pearson
            _uln = 1111111111;
            SeedTestData(EnumAwardingOrganisation.Pearson, true);
            _tqRegistrationProfile = SeedRegistrationData(_uln);

            CreateMapper();
            ProviderRepositoryLogger                 = new Logger <ProviderRepository>(new NullLoggerFactory());
            RegistrationRepositoryLogger             = new Logger <RegistrationRepository>(new NullLoggerFactory());
            TqRegistrationPathwayRepositoryLogger    = new Logger <GenericRepository <TqRegistrationPathway> >(new NullLoggerFactory());
            TqRegistrationSpecialismRepositoryLogger = new Logger <GenericRepository <TqRegistrationSpecialism> >(new NullLoggerFactory());
            ProviderRepository                 = new ProviderRepository(ProviderRepositoryLogger, DbContext);
            RegistrationRepository             = new RegistrationRepository(RegistrationRepositoryLogger, DbContext);
            TqRegistrationPathwayRepository    = new GenericRepository <TqRegistrationPathway>(TqRegistrationPathwayRepositoryLogger, DbContext);
            TqRegistrationSpecialismRepository = new GenericRepository <TqRegistrationSpecialism>(TqRegistrationSpecialismRepositoryLogger, DbContext);
            RegistrationService                = new RegistrationService(ProviderRepository, RegistrationRepository, TqRegistrationPathwayRepository, TqRegistrationSpecialismRepository, RegistrationMapper, RegistrationRepositoryLogger);

            var newProvider = TlProviders.Last();

            _updateRegistrationRequest = new ManageRegistration
            {
                ProfileId          = _profileId,
                Uln                = _uln,
                FirstName          = "John",
                LastName           = "Smith",
                DateOfBirth        = DateTime.UtcNow.AddYears(-20),
                AoUkprn            = TlAwardingOrganisation.UkPrn,
                ProviderUkprn      = newProvider.UkPrn,
                CoreCode           = Pathway.LarId,
                SpecialismCodes    = new List <string>(),
                PerformedBy        = "Test User",
                HasProviderChanged = false
            };
        }
示例#3
0
        public void SeedQualificationAchievedData(TqRegistrationProfile profile)
        {
            var engQual  = Qualifications.FirstOrDefault(e => e.TlLookup.Code == "Eng");
            var mathQual = Qualifications.FirstOrDefault(e => e.TlLookup.Code == "Math");

            var engQualifcationGrade   = engQual.QualificationType.QualificationGrades.FirstOrDefault(x => x.IsAllowable);
            var mathsQualifcationGrade = mathQual.QualificationType.QualificationGrades.FirstOrDefault(x => x.IsAllowable);

            profile.QualificationAchieved.Add(new QualificationAchieved
            {
                TqRegistrationProfileId = profile.Id,
                QualificationId         = engQual.Id,
                QualificationGradeId    = engQualifcationGrade.Id,
                IsAchieved = engQualifcationGrade.IsAllowable
            });

            profile.QualificationAchieved.Add(new QualificationAchieved
            {
                TqRegistrationProfileId = profile.Id,
                QualificationId         = mathQual.Id,
                QualificationGradeId    = mathsQualifcationGrade.Id,
                IsAchieved = mathsQualifcationGrade.IsAllowable
            });
            DbContext.SaveChanges();
        }
        public TqPathwayAssessment SeedPathwayAssessmentData(TqRegistrationProfile registrationProfile)
        {
            var pathwayAssessment   = new TqPathwayAssessmentBuilder().Build(registrationProfile.TqRegistrationPathways.First());
            var tqPathwayAssessment = PathwayAssessmentDataProvider.CreateTqPathwayAssessment(DbContext, pathwayAssessment);

            DbContext.SaveChanges();
            return(tqPathwayAssessment);
        }
        public TqSpecialismAssessment SeedSpecialismAssessmentData(TqRegistrationProfile registrationProfile)
        {
            var specialism             = registrationProfile.TqRegistrationPathways.First().TqRegistrationSpecialisms.First();
            var specialsimAssessment   = new TqSpecialismAssessmentBuilder().Build(specialism);
            var tqSpecialismAssessment = SpecialismAssessmentDataProvider.CreateTqSpecialismAssessment(DbContext, specialsimAssessment);

            DbContext.SaveChanges();
            return(tqSpecialismAssessment);
        }
示例#6
0
        public IList <TqRegistrationPathway> BuildList(TqRegistrationProfile tqRegistrationProfile = null)
        {
            tqRegistrationProfile ??= new TqRegistrationProfileBuilder().Build();
            var tqRegistrationPathways = new List <TqRegistrationPathway> {
                new TqRegistrationPathway
                {
                    TqRegistrationProfileId = tqRegistrationProfile.Id,
                    TqRegistrationProfile   = tqRegistrationProfile,
                    TqProviderId            = 1,
                    AcademicYear            = 2020,
                    StartDate    = DateTime.UtcNow,
                    Status       = ResultsAndCertification.Common.Enum.RegistrationPathwayStatus.Active,
                    IsBulkUpload = true,
                    CreatedBy    = Constants.CreatedByUser,
                    CreatedOn    = Constants.CreatedOn,
                    ModifiedBy   = Constants.ModifiedByUser,
                    ModifiedOn   = Constants.ModifiedOn
                },
                new TqRegistrationPathway
                {
                    TqRegistrationProfileId = tqRegistrationProfile.Id,
                    TqRegistrationProfile   = tqRegistrationProfile,
                    TqProviderId            = 1,
                    AcademicYear            = 2020,
                    StartDate    = DateTime.UtcNow,
                    Status       = ResultsAndCertification.Common.Enum.RegistrationPathwayStatus.Active,
                    IsBulkUpload = true,
                    CreatedBy    = Constants.CreatedByUser,
                    CreatedOn    = Constants.CreatedOn,
                    ModifiedBy   = Constants.ModifiedByUser,
                    ModifiedOn   = Constants.ModifiedOn
                },
                new TqRegistrationPathway
                {
                    TqRegistrationProfileId = tqRegistrationProfile.Id,
                    TqRegistrationProfile   = tqRegistrationProfile,
                    TqProviderId            = 1,
                    AcademicYear            = 2020,
                    StartDate    = DateTime.UtcNow,
                    Status       = ResultsAndCertification.Common.Enum.RegistrationPathwayStatus.Active,
                    IsBulkUpload = true,
                    CreatedBy    = Constants.CreatedByUser,
                    CreatedOn    = Constants.CreatedOn,
                    ModifiedBy   = Constants.ModifiedByUser,
                    ModifiedOn   = Constants.ModifiedOn
                }
            };

            return(tqRegistrationPathways);
        }
        public void BuildLearnerRecordCriteria(TqRegistrationProfile profile, bool?isEngishAndMathsAchieved, bool seedIndustryPlacement = false, IndustryPlacementStatus ipStatus = IndustryPlacementStatus.Completed)
        {
            if (profile == null)
            {
                return;
            }

            profile.IsEnglishAndMathsAchieved = isEngishAndMathsAchieved;

            if (seedIndustryPlacement)
            {
                var pathway = profile.TqRegistrationPathways.OrderByDescending(x => x.CreatedOn).FirstOrDefault();
                IndustryPlacementProvider.CreateIndustryPlacement(DbContext, pathway.Id, ipStatus);
            }
        }
        public static TqRegistrationProfile CreateTqRegistrationProfile(ResultsAndCertificationDbContext _dbContext, long uniqueLearnerNumber, string firstName, string lastName, DateTime dateOfBirth, bool addToDbContext = true)
        {
            var tqRegistrationProfile = new TqRegistrationProfile
            {
                UniqueLearnerNumber = uniqueLearnerNumber,
                Firstname           = firstName,
                Lastname            = lastName,
                DateofBirth         = dateOfBirth
            };

            if (addToDbContext)
            {
                _dbContext.Add(tqRegistrationProfile);
            }
            return(tqRegistrationProfile);
        }
示例#9
0
        public void AssertRegistrationProfile(TqRegistrationProfile actualProfile, TqRegistrationProfile expectedProfile)
        {
            if (expectedProfile != null)
            {
                actualProfile.Should().NotBeNull();
            }

            actualProfile.UniqueLearnerNumber.Should().Be(expectedProfile.UniqueLearnerNumber);
            actualProfile.Firstname.Should().Be(expectedProfile.Firstname);
            actualProfile.Lastname.Should().Be(expectedProfile.Lastname);
            actualProfile.DateofBirth.Should().Be(expectedProfile.DateofBirth);
            actualProfile.Gender.Should().Be(expectedProfile.Gender);
            actualProfile.IsLearnerVerified.Should().Be(expectedProfile.IsLearnerVerified);
            actualProfile.IsEnglishAndMathsAchieved.Should().Be(expectedProfile.IsEnglishAndMathsAchieved);
            actualProfile.IsSendLearner.Should().Be(expectedProfile.IsSendLearner);
            actualProfile.IsRcFeed.Should().Be(expectedProfile.IsRcFeed);
        }
        public override void Given()
        {
            // Seed Tlevel data for pearson
            _uln = 1111111111;
            SeedTestData(EnumAwardingOrganisation.Pearson, true);
            _tqRegistrationProfile = SeedRegistrationData(_uln);

            // Assessments seed
            var tqPathwayAssessmentsSeedData = new List <TqPathwayAssessment>();
            var pathwayAssessments           = GetPathwayAssessmentsDataToProcess(_tqRegistrationProfile.TqRegistrationPathways.ToList(), isBulkUpload: false);

            tqPathwayAssessmentsSeedData.AddRange(pathwayAssessments);
            SeedPathwayAssessmentsData(tqPathwayAssessmentsSeedData, false);

            var tqPathwayResultsSeedData = new List <TqPathwayResult>();

            foreach (var assessment in pathwayAssessments)
            {
                tqPathwayResultsSeedData.AddRange(GetPathwayResultsDataToProcess(new List <TqPathwayAssessment> {
                    assessment
                }, isBulkUpload: false));
            }

            SeedPathwayResultsData(tqPathwayResultsSeedData, false);
            DbContext.SaveChangesAsync();

            CreateMapper();
            ProviderRepositoryLogger                 = new Logger <ProviderRepository>(new NullLoggerFactory());
            RegistrationRepositoryLogger             = new Logger <RegistrationRepository>(new NullLoggerFactory());
            TqRegistrationPathwayRepositoryLogger    = new Logger <GenericRepository <TqRegistrationPathway> >(new NullLoggerFactory());
            TqRegistrationSpecialismRepositoryLogger = new Logger <GenericRepository <TqRegistrationSpecialism> >(new NullLoggerFactory());
            ProviderRepository                 = new ProviderRepository(ProviderRepositoryLogger, DbContext);
            RegistrationRepository             = new RegistrationRepository(RegistrationRepositoryLogger, DbContext);
            TqRegistrationPathwayRepository    = new GenericRepository <TqRegistrationPathway>(TqRegistrationPathwayRepositoryLogger, DbContext);
            TqRegistrationSpecialismRepository = new GenericRepository <TqRegistrationSpecialism>(TqRegistrationSpecialismRepositoryLogger, DbContext);
            RegistrationService                = new RegistrationService(ProviderRepository, RegistrationRepository, TqRegistrationPathwayRepository, TqRegistrationSpecialismRepository, RegistrationMapper, RegistrationRepositoryLogger);

            _reJoinRegistrationRequest = new RejoinRegistrationRequest
            {
                AoUkprn     = TlAwardingOrganisation.UkPrn,
                PerformedBy = "Test User"
            };
        }
        public void BuildLearnerRecordCriteria(TqRegistrationProfile profile, bool?isRcFeed, bool seedQualificationAchieved, bool isSendQualification, bool?isEngishAndMathsAchieved, bool seedIndustryPlacement = false, bool?isSendLearner = null, IndustryPlacementStatus ipStatus = IndustryPlacementStatus.Completed)
        {
            if (profile == null)
            {
                return;
            }

            profile.IsRcFeed = isRcFeed;
            profile.IsEnglishAndMathsAchieved = isEngishAndMathsAchieved;
            profile.IsSendLearner             = isSendLearner;

            if (seedQualificationAchieved)
            {
                var engQual  = Qualifications.FirstOrDefault(e => e.TlLookup.Code == "Eng" && e.IsSendQualification == isSendQualification);
                var mathQual = Qualifications.FirstOrDefault(e => e.TlLookup.Code == "Math");

                var engQualifcationGrade   = engQual.QualificationType.QualificationGrades.FirstOrDefault(x => x.IsAllowable == isEngishAndMathsAchieved);
                var mathsQualifcationGrade = mathQual.QualificationType.QualificationGrades.FirstOrDefault(x => x.IsAllowable == isEngishAndMathsAchieved);

                profile.QualificationAchieved.Add(new QualificationAchieved
                {
                    TqRegistrationProfileId = profile.Id,
                    QualificationId         = engQual.Id,
                    QualificationGradeId    = engQualifcationGrade.Id,
                    IsAchieved = engQualifcationGrade.IsAllowable
                });

                profile.QualificationAchieved.Add(new QualificationAchieved
                {
                    TqRegistrationProfileId = profile.Id,
                    QualificationId         = mathQual.Id,
                    QualificationGradeId    = mathsQualifcationGrade.Id,
                    IsAchieved = mathsQualifcationGrade.IsAllowable
                });
            }

            if (seedIndustryPlacement)
            {
                var pathway = profile.TqRegistrationPathways.OrderByDescending(x => x.CreatedOn).FirstOrDefault();
                IndustryPlacementProvider.CreateIndustryPlacement(DbContext, pathway.Id, ipStatus);
            }
        }
示例#12
0
        public QualificationAchieved Build(TqRegistrationProfile tqRegistrationProfile = null, Qualification qualification = null, QualificationGrade qualificationGrade = null)
        {
            tqRegistrationProfile ??= new TqRegistrationProfileBuilder().Build();
            qualification ??= new QualificationBuilder().Build();
            qualificationGrade ??= new QualificationGradeBuilder().Build();

            return(new QualificationAchieved
            {
                TqRegistrationProfileId = tqRegistrationProfile.Id,
                TqRegistrationProfile = tqRegistrationProfile,
                QualificationId = qualification.Id,
                Qualification = qualification,
                QualificationGradeId = qualificationGrade.Id,
                QualificationGrade = qualificationGrade,
                IsAchieved = true,
                CreatedBy = Constants.CreatedByUser,
                CreatedOn = Constants.CreatedOn,
                ModifiedBy = Constants.ModifiedByUser,
                ModifiedOn = Constants.ModifiedOn
            });
        }
示例#13
0
        public IList <QualificationAchieved> BuildList(TqRegistrationProfile tqRegistrationProfile = null)
        {
            tqRegistrationProfile ??= new TqRegistrationProfileBuilder().Build();
            var qualifications      = new QualificationBuilder().BuildList();
            var qualificationGrades = new QualificationGradeBuilder().BuildList();

            var qualificationAchievedList = new List <QualificationAchieved> {
                new QualificationAchieved
                {
                    TqRegistrationProfileId = tqRegistrationProfile.Id,
                    TqRegistrationProfile   = tqRegistrationProfile,
                    QualificationId         = qualifications[0].Id,
                    Qualification           = qualifications[0],
                    QualificationGradeId    = qualificationGrades[0].Id,
                    QualificationGrade      = qualificationGrades[0],
                    IsAchieved = true,
                    CreatedBy  = Constants.CreatedByUser,
                    CreatedOn  = Constants.CreatedOn,
                    ModifiedBy = Constants.ModifiedByUser,
                    ModifiedOn = Constants.ModifiedOn
                },
                new QualificationAchieved
                {
                    TqRegistrationProfileId = tqRegistrationProfile.Id,
                    TqRegistrationProfile   = tqRegistrationProfile,
                    QualificationId         = qualifications[1].Id,
                    Qualification           = qualifications[1],
                    QualificationGradeId    = qualificationGrades[1].Id,
                    QualificationGrade      = qualificationGrades[1],
                    IsAchieved = true,
                    CreatedBy  = Constants.CreatedByUser,
                    CreatedOn  = Constants.CreatedOn,
                    ModifiedBy = Constants.ModifiedByUser,
                    ModifiedOn = Constants.ModifiedOn
                }
            };

            return(qualificationAchievedList);
        }
        private static TqRegistrationProfile ProcessProfileAndQualificationsAchieved(LearnerRecordDetails learnerRecord, TqRegistrationProfile profile)
        {
            if (learnerRecord.IsLearnerVerified == false && learnerRecord.IsLearnerVerified == profile.IsLearnerVerified)
            {
                return(null);
            }

            var isProfileChanged      = false;
            var learnerLearningEvents = learnerRecord.LearningEventDetails.Where(x => x.IsQualificationAllowed);

            if (learnerRecord.IsLearnerVerified != profile.IsLearnerVerified)
            {
                profile.IsLearnerVerified = learnerRecord.IsLearnerVerified;
                profile.ModifiedOn        = DateTime.UtcNow;
                profile.ModifiedBy        = learnerRecord.PerformedBy;
                isProfileChanged          = true;
            }

            if (!profile.IsEnglishAndMathsAchieved.HasValue || !profile.IsEnglishAndMathsAchieved.Value)
            {
                if (learnerLearningEvents.Any())
                {
                    var isQualificationAchievedChanged = false;

                    foreach (var learnerLearningEvent in learnerLearningEvents)
                    {
                        var existingQualificationAchieved = profile.QualificationAchieved.FirstOrDefault(q => q.QualificationId == learnerLearningEvent.QualificationId);

                        if (existingQualificationAchieved != null)
                        {
                            if (existingQualificationAchieved.QualificationGradeId != learnerLearningEvent.QualificationGradeId || existingQualificationAchieved.IsAchieved != learnerLearningEvent.IsAchieved)
                            {
                                existingQualificationAchieved.QualificationGradeId = learnerLearningEvent.QualificationGradeId;
                                existingQualificationAchieved.IsAchieved           = learnerLearningEvent.IsAchieved;
                                existingQualificationAchieved.ModifiedBy           = learnerRecord.PerformedBy;
                                existingQualificationAchieved.ModifiedOn           = DateTime.UtcNow;
                                isQualificationAchievedChanged = true;
                            }
                        }
                        else
                        {
                            profile.QualificationAchieved.Add(new QualificationAchieved
                            {
                                TqRegistrationProfileId = profile.Id,
                                QualificationId         = learnerLearningEvent.QualificationId,
                                QualificationGradeId    = learnerLearningEvent.QualificationGradeId,
                                IsAchieved = learnerLearningEvent.IsAchieved,
                                CreatedBy  = learnerRecord.PerformedBy
                            });
                            isQualificationAchievedChanged = true;
                        }
                    }

                    if (isQualificationAchievedChanged)
                    {
                        profile.IsEnglishAndMathsAchieved = learnerLearningEvents.Any(e => e.IsAchieved && e.IsEnglishSubject) && learnerLearningEvents.Any(e => e.IsAchieved && e.IsMathsSubject);
                        profile.IsRcFeed   = false;
                        profile.ModifiedOn = DateTime.UtcNow;
                        profile.ModifiedBy = learnerRecord.PerformedBy;
                        isProfileChanged   = true;
                    }
                }
            }

            return(isProfileChanged ? profile : null);
        }
 private bool IsValidLearner(TqRegistrationProfile profile)
 {
     return(profile != null && (profile.IsRcFeed == null || profile.IsRcFeed.Value == false));
 }
        public static TqRegistrationPathway CreateTqRegistrationPathway(ResultsAndCertificationDbContext _dbContext, TqRegistrationProfile tqRegistrationProfile, int tqProviderId, DateTime registrationDate, RegistrationPathwayStatus status = RegistrationPathwayStatus.Active, bool addToDbContext = true)
        {
            if (tqRegistrationProfile == null)
            {
                tqRegistrationProfile = new TqRegistrationProfileBuilder().Build();
            }

            var tqRegistrationPathway = new TqRegistrationPathway
            {
                TqRegistrationProfileId = tqRegistrationProfile.Id,
                TqProviderId            = tqProviderId,
                AcademicYear            = registrationDate.Year,
                StartDate    = DateTime.UtcNow,
                Status       = status,
                IsBulkUpload = true
            };

            if (addToDbContext)
            {
                _dbContext.Add(tqRegistrationPathway);
            }
            return(tqRegistrationPathway);
        }
        public static TqRegistrationPathway CreateTqRegistrationPathway(ResultsAndCertificationDbContext _dbContext, TqRegistrationProfile tqRegistrationProfile, bool addToDbContext = true)
        {
            if (tqRegistrationProfile == null)
            {
                tqRegistrationProfile = new TqRegistrationProfileBuilder().Build();
            }

            var tqRegistrationPathway = new TqRegistrationPathwayBuilder().Build(tqRegistrationProfile);

            if (addToDbContext)
            {
                _dbContext.Add(tqRegistrationPathway);
            }
            return(tqRegistrationPathway);
        }