Ejemplo n.º 1
0
        public void UpdateTest()
        {
            var newReferenceNumber        = 3L;
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();

            IApprenticeshipVacancyReadRepository readRepository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                      logger.Object);
            IApprenticeshipVacancyWriteRepository writeRepository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                        logger.Object);

            var vacancy = readRepository.Get(VacancyReferenceNumber_VacancyA);

            vacancy.VacancyReferenceNumber = newReferenceNumber;
            vacancy.LocationAddresses      = null; // TODO: Change to separate repo method
            writeRepository.Save(vacancy);

            vacancy = readRepository.Get(VacancyReferenceNumber_VacancyA);

            vacancy.Should().BeNull();

            vacancy = readRepository.Get(newReferenceNumber);

            vacancy.Status.Should().Be(ProviderVacancyStatuses.Live);
            vacancy.Title.Should().Be("Test vacancy");
            vacancy.WageType.Should().Be(WageType.Custom);
            vacancy.TrainingType = TrainingType.Frameworks;
        }
Ejemplo n.º 2
0
        public override void Run()
        {
            var configService = _container.GetInstance <IConfigurationService>();
            var options       = configService.Get <MigrateFromAvmsConfiguration>();

            var sourceDatabase = new GetOpenConnectionFromConnectionString(options.SourceConnectionString);
            var targetDatabase = new GetOpenConnectionFromConnectionString(options.TargetConnectionString);

            var genericSyncRepository = new GenericSyncRespository(_logService, sourceDatabase, targetDatabase);
            var avmsSyncRepository    = new AvmsSyncRespository(_logService, sourceDatabase, targetDatabase);

            var tables = new AvmsToAvmsPlusTables(_logService, options, avmsSyncRepository, true).All;

            var controller = new Controller(
                options,
                _logService,
                genericSyncRepository,
                tableSpec => new MutateTarget(_logService, genericSyncRepository, (int)Math.Max(5000 * tableSpec.BatchSizeMultiplier, 1), tableSpec),
                tables
                );

            try
            {
                controller.DoAll(_cancelSource);
            }
            catch (Exception ex)
            {
                _logService.Error("Unhandled exception from controller.DoAll method", ex);
                throw;
            }
        }
Ejemplo n.º 3
0
        public void GetVacancyByGuidTest()
        {
            // configure _mapper
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();
            IApprenticeshipVacancyReadRepository repository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                  logger.Object);

            var vacancy = repository.Get(VacancyId_VacancyA);

            vacancy.Status.Should().Be(ProviderVacancyStatuses.Live);
            vacancy.Title.Should().Be("Test vacancy");
            vacancy.WageType.Should().Be(WageType.Custom);
            vacancy.TrainingType = TrainingType.Frameworks;
        }
Ejemplo n.º 4
0
        public void GetForProviderByUkprnAndProviderSiteErnTest()
        {
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();
            IApprenticeshipVacancyReadRepository repository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                  logger.Object);

            var vacancies = repository.GetForProvider("1", "3");

            vacancies.Should().HaveCount(12);

            vacancies = repository.GetForProvider("2", "3");
            vacancies.Should().HaveCount(0);

            vacancies = repository.GetForProvider("1", "4");
            vacancies.Should().HaveCount(0);
        }
Ejemplo n.º 5
0
        public void GetWithStatusTest()
        {
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();
            IApprenticeshipVacancyReadRepository repository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                  logger.Object);

            var vacancies = repository.GetWithStatus(ProviderVacancyStatuses.ParentVacancy, ProviderVacancyStatuses.Live);

            vacancies.Should().HaveCount(13);

            vacancies = repository.GetWithStatus(ProviderVacancyStatuses.Live);
            vacancies.Should().HaveCount(12);

            vacancies = repository.GetWithStatus(ProviderVacancyStatuses.ParentVacancy);
            vacancies.Should().HaveCount(1);

            vacancies = repository.GetWithStatus(ProviderVacancyStatuses.PendingQA);
            vacancies.Should().HaveCount(0);
        }
Ejemplo n.º 6
0
        public void RoundTripTest()
        {
            // Arrange
            var database   = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger     = new Mock <ILogService>();
            var repository = new ApprenticeshipVacancyRepository(database, _mapper, logger.Object);

            var vacancy = CreateValidDomainVacancy();

            // Act
            repository.Save(vacancy);

            var loadedVacancy = repository.Get(vacancy.VacancyReferenceNumber);

            // Assert
            loadedVacancy.ShouldBeEquivalentTo(vacancy,
                                               options => ExcludeHardOnes(options)
                                               .Excluding(x => Regex.IsMatch(x.SelectedMemberPath, "LocationAddresses\\[[0-9]+\\].Address.Uprn")) //TODO
                                               .Using <DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1000))
                                               .WhenTypeIs <DateTime>());
        }
        public MigrationProcessor(IConfigurationService configurationService, ILogService logService)
        {
            _logService = logService;

            var configuration = configurationService.Get <MigrateFromFaaToAvmsPlusConfiguration>();

            //Ensure date precision is honoured
            Dapper.SqlMapper.AddTypeMap(typeof(DateTime), System.Data.DbType.DateTime2);

            var sourceDatabase         = new GetOpenConnectionFromConnectionString(configuration.SourceConnectionString);
            var targetDatabase         = new GetOpenConnectionFromConnectionString(configuration.TargetConnectionString);
            var genericSyncRespository = new GenericSyncRespository(_logService, sourceDatabase, targetDatabase);

            _syncRepository = new SyncRepository(targetDatabase);

            var applicationMappers = new ApplicationMappers(_logService);

            _candidateMigrationProcessor = new CandidateMigrationProcessor(new CandidateMappers(_logService), _syncRepository, genericSyncRespository, targetDatabase, configurationService, _logService);
            _traineeshipApplicationsMigrationProcessor    = new VacancyApplicationsMigrationProcessor(new TraineeshipApplicationsUpdater(_syncRepository), applicationMappers, genericSyncRespository, sourceDatabase, targetDatabase, configurationService, _logService);
            _apprenticeshipApplicationsMigrationProcessor = new VacancyApplicationsMigrationProcessor(new ApprenticeshipApplicationsUpdater(_syncRepository), applicationMappers, genericSyncRespository, sourceDatabase, targetDatabase, configurationService, _logService);
            _auditMigrationProcessor = new AuditMigrationProcessor(_syncRepository, targetDatabase, configurationService, _logService);

            _logService.Info("Initialisation");
        }
Ejemplo n.º 8
0
 public void Meep()
 {
     _connection =
         new GetOpenConnectionFromConnectionString(DatabaseConfigurationProvider.Instance.TargetConnectionString);
 }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            var log = new ConsoleLogService();

            log.Info("Initialisation");

            var options = new Options();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
            {
                return;
            }

            if (options.SourceConnectionString == null || options.TargetConnectionString == null || options.RecordBatchSize == 0)
            {
                var configService    = new AzureBlobConfigurationService(new MyConfigurationManager(), log);
                var persistentConfig = configService.Get <MigrateFromAvmsConfiguration>();

                if (options.SourceConnectionString == null)
                {
                    options.SourceConnectionString = persistentConfig.SourceConnectionString;
                }
                if (options.TargetConnectionString == null)
                {
                    options.TargetConnectionString = persistentConfig.TargetConnectionString;
                }
                if (options.RecordBatchSize == 0)
                {
                    options.RecordBatchSize = persistentConfig.RecordBatchSize;
                }
                if (options.MaxNumberOfChangesToDetailPerTable == null)
                {
                    options.MaxNumberOfChangesToDetailPerTable = persistentConfig.MaxNumberOfChangesToDetailPerTable;
                }
                if (options.AnonymiseData == false)
                {
                    options.AnonymiseData = persistentConfig.AnonymiseData;
                }
            }

            if (options.Verbose)
            {
                Console.WriteLine($@"
SourceConnectionString             = {options.SourceConnectionString}
TargetConnectionString             = {options.TargetConnectionString}
RecordBatchSize                    = {options.RecordBatchSize}
MaxNumberOfChangesToDetailPerTable = {options.MaxNumberOfChangesToDetailPerTable}
AnonymiseData                      = {options.AnonymiseData}
SingleFullUpdate                   = {options.SingleFullUpdate}
");
            }

            var sourceDatabase = new GetOpenConnectionFromConnectionString(options.SourceConnectionString);
            var targetDatabase = new GetOpenConnectionFromConnectionString(options.TargetConnectionString);

            var genericSyncRepository = new GenericSyncRespository(log, sourceDatabase, targetDatabase);
            var avmsSyncRepository    = new AvmsSyncRespository(log, sourceDatabase, targetDatabase);

            Func <ITableSpec, IMutateTarget> createMutateTarget;

            if (options.DummyRun)
            {
                createMutateTarget = tableSpec => new DummyMutateTarget(log, tableSpec);
            }
            else
            {
                createMutateTarget = tableSpec => new MutateTarget(log, genericSyncRepository, (int)Math.Max(5000 * tableSpec.BatchSizeMultiplier, 1), tableSpec);
            }

            var tables = new AvmsToAvmsPlusTables(log, options, avmsSyncRepository, !options.ExcludeVacancy).All;

            if (options.SingleTable != null)
            {
                tables = tables.Where(t => t.Name == options.SingleTable);
            }

            var controller = new Controller(options, log, genericSyncRepository, createMutateTarget, tables);

            if (options.Reset)
            {
                controller.Reset();
            }

            var cancellationTokenSource = new System.Threading.CancellationTokenSource();

            bool threaded = true;

            if (options.SingleFullUpdate)
            {
                controller.DoFullScanForAll(threaded);
            }
            else
            {
                controller.DoAll(new System.Threading.CancellationTokenSource(), threaded);
            }
        }