public void CheckDatabaseSchemaAgainstEntityFrameworkExpectedSchema() { const string databaseName = "SFA.DAS.EmployerFinanceV2.Database"; var configuration = new ConfigurationBuilder().AddAzureTableStorage(EmployerFinanceConfigurationKeys.Base).Build(); var employerFinanceConfiguration = configuration.GetEmployerFinanceSection <EmployerFinanceConfiguration>(); using (var connection = new SqlConnection(employerFinanceConfiguration.DatabaseConnectionString)) { var optionsBuilder = new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseSqlServer(connection); using (var context = new EmployerFinanceDbContext(optionsBuilder.Options)) { var config = new CompareEfSqlConfig { TablesToIgnoreCommaDelimited = "ClientOutboxData,OutboxData,SchemaVersions,Users" }; config.IgnoreTheseErrors( $"EXTRA IN DATABASE: {databaseName}->Index 'AccountPayeSchemes', index constraint name. Found = AK_AccountPayeSchemes_AccountId_EmployerReferenceNumber{Environment.NewLine}" + $"EXTRA IN DATABASE: {databaseName}->Index 'LevyDeclarationSagas', index constraint name. Found = UK_LevyDeclarationSagas_PayrollPeriod{Environment.NewLine}" + $"EXTRA IN DATABASE: {databaseName}->Index 'LevyDeclarationSagas', index constraint name. Found = UK_LevyDeclarationSagas_PayrollPeriod_AccountPayeSchemeId"); var comparer = new CompareEfSql(config); var hasErrors = comparer.CompareEfWithDb(context); hasErrors.Should().BeFalse(comparer.GetAllErrors); } } }
public EmployerFinanceDbBuilder( DbBuilderDependentRepositories dependentRepositories, EmployerFinanceDbContext dbContext) { DependentRepositories = dependentRepositories; _dbContext = dbContext; }
private EmployerFinanceDbContext GetFinanceDbContext(IContext context) { var db = new EmployerFinanceDbContext(context.GetInstance <LevyDeclarationProviderConfiguration>().DatabaseConnectionString); db.Database.BeginTransaction(); return(db); }
public ProcessLevyDeclarationsCommandHandlerTestsFixture() { Fixture = new Fixture(); Now = DateTime.UtcNow; UnitOfWorkContext = new UnitOfWorkContext(); EmployerReferenceNumbers = new List <string> { "AAA111", "BBB222", "CCC333" }; Accounts = new List <Account> { Fixture.Create <Account>(), Fixture.Create <Account>() }; AccountPayeSchemes = new List <AccountPayeScheme> { new AccountPayeScheme(Accounts[0], EmployerReferenceNumbers[0], Now).Set(aps => aps.Id, 1), new AccountPayeScheme(Accounts[0], EmployerReferenceNumbers[1], Now).Set(aps => aps.Id, 2), new AccountPayeScheme(Accounts[1], EmployerReferenceNumbers[2], Now).Set(aps => aps.Id, 3) }; Command = new ProcessLevyDeclarationsCommand(Now); Db = new EmployerFinanceDbContext(new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); Db.AccountPayeSchemes.AddRange(AccountPayeSchemes); Db.SaveChanges(); Handler = new ProcessLevyDeclarationsCommandHandler(Db); }
public static async Task <TransferAllowance> GetTransferAllowance(this EmployerFinanceDbContext db, long accountId, decimal transferAllowancePercentage) { var transferAllowance = await db.SqlQueryAsync <TransferAllowance>( "[employer_financial].[GetAccountTransferAllowance] @accountId = {0}, @allowancePercentage = {1}", accountId, transferAllowancePercentage).ConfigureAwait(false); return(transferAllowance.SingleOrDefault() ?? new TransferAllowance()); }
public GetTransferConnectionInvitationAuthorizationQueryHandler( Lazy <EmployerAccountsDbContext> accountDb, EmployerFinanceDbContext financeDb, EmployerFinanceConfiguration configuration, IAuthorizationService authorizationService) { _accountDb = accountDb; _financeDb = financeDb; _configuration = configuration; _authorizationService = authorizationService; }
public static Task ImportProviders(this EmployerFinanceDbContext db, DataTable providersDataTable) { var providers = new SqlParameter("providers", SqlDbType.Structured) { TypeName = "Providers", Value = providersDataTable }; var now = new SqlParameter("now", DateTime.UtcNow); return(db.ExecuteSqlCommandAsync("EXEC ImportProviders @providers, @now", providers, now)); }
public RunProcessLevyDeclarationsSagaTaskCommandHandlerTestsFixture() { Now = DateTime.UtcNow; AccountPayeSchemeId = 1; AccountId = 2; ImportPayeSchemeLevyDeclarationsCommand = new ImportPayeSchemeLevyDeclarationsCommand(SagaId, Now, AccountPayeSchemeId); UpdateAccountLevyDeclarationTransactionBalancesCommand = new UpdateAccountLevyDeclarationTransactionBalancesCommand(SagaId, AccountId); Db = new EmployerFinanceDbContext(new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); Handler = new RunLevyDeclarationSagaTaskCommandHandler(Db); NextTask = new Mock <RequestHandlerDelegate <Unit> >(); NextTask.Setup(t => t()).Callback(() => NextTaskInvoked = DateTime.UtcNow).ReturnsAsync(Unit.Value); }
public ProcessLevyDeclarationsAdHocCommandHandlerTestsFixture() { Fixture = new Fixture(); Now = DateTime.UtcNow; UnitOfWorkContext = new UnitOfWorkContext(); //todo: //AccountPayeScheme = Fixture.Create<AccountPayeScheme>().Set(aps => aps.Id, 1); AccountPayeScheme = new AccountPayeScheme(Fixture.Create <Account>(), "AAA111", Fixture.Create <DateTime>()).Set(aps => aps.Id, 1); Command = new ProcessLevyDeclarationsAdHocCommand(Now, AccountPayeScheme.Id); Db = new EmployerFinanceDbContext(new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); Db.AccountPayeSchemes.Add(AccountPayeScheme); Db.SaveChanges(); Handler = new ProcessLevyDeclarationsAdHocCommandHandler(Db); }
public UpdateLevyDeclarationTransactionBalancesCommandHandlerTestsFixture() { Fixture = new Fixture(); Now = DateTime.UtcNow; EmployerReferenceNumbers = new List <string> { "AAA111", "BBB222", "CCC333" }; Accounts = new List <Account> { Fixture.Create <Account>().Set(a => a.Id, 1), Fixture.Create <Account>().Set(a => a.Id, 2) }; AccountPayeSchemes = new List <AccountPayeScheme> { new AccountPayeScheme(Accounts[0], EmployerReferenceNumbers[0], Now).Set(aps => aps.Id, 3), new AccountPayeScheme(Accounts[0], EmployerReferenceNumbers[1], Now).Set(aps => aps.Id, 4), new AccountPayeScheme(Accounts[1], EmployerReferenceNumbers[2], Now).Set(aps => aps.Id, 5) }; Saga = ObjectActivator.CreateInstance <LevyDeclarationSaga>().Set(s => s.Id, 6); LevyDeclarationSagaTasks = AccountPayeSchemes .Select(aps => LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(Saga.Id, aps.Id)) .ToList(); Command = new UpdateLevyDeclarationTransactionBalancesCommand(Saga.Id); Db = new EmployerFinanceDbContext(new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); UniformSession = new Mock <IUniformSession>(); Db.AccountPayeSchemes.AddRange(AccountPayeSchemes); Db.LevyDeclarationSagas.Add(Saga); Db.LevyDeclarationSagaTasks.AddRange(LevyDeclarationSagaTasks); Db.SaveChanges(); Handler = new UpdateLevyDeclarationTransactionBalancesCommandHandler(Db, UniformSession.Object); }
public UpdateProcessLevyDeclarationsSagaProgressCommandHandlerTestsFixture() { Fixture = new Fixture(); Now = DateTime.UtcNow; UnitOfWorkContext = new UnitOfWorkContext(); PayeSchemeRefs = new List <string> { "AAA111", "BBB222", "CCC333" }; Accounts = new List <Account> { Fixture.Create <Account>(), Fixture.Create <Account>() }; AccountPayeSchemes = new List <AccountPayeScheme> { new AccountPayeScheme(Accounts[0], PayeSchemeRefs[0], Now).Set(aps => aps.Id, 1), new AccountPayeScheme(Accounts[0], PayeSchemeRefs[1], Now).Set(aps => aps.Id, 2), new AccountPayeScheme(Accounts[1], PayeSchemeRefs[2], Now).Set(aps => aps.Id, 3) }; Saga = ObjectActivator.CreateInstance <LevyDeclarationSaga>() .Set(s => s.Id, 4) .Set(s => s.PayrollPeriod, Now); Command = new UpdateLevyDeclarationSagaProgressCommand(Saga.Id); Db = new EmployerFinanceDbContext(new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); UniformSession = new Mock <IUniformSession>(); Db.AccountPayeSchemes.AddRange(AccountPayeSchemes); Db.LevyDeclarationSagas.Add(Saga); Db.SaveChanges(); Handler = new UpdateLevyDeclarationSagaProgressCommandHandler(Db, UniformSession.Object); }
public ImportLevyDeclarationsCommandHandlerTestsFixture() { Fixture = new Fixture(); Now = DateTime.UtcNow; EmployerReferenceNumbers = new List <string> { "AAA111", "BBB222", "CCC333" }; Accounts = new List <Account> { Fixture.Create <Account>(), Fixture.Create <Account>() }; AccountPayeSchemes = new List <AccountPayeScheme> { new AccountPayeScheme(Accounts[0], EmployerReferenceNumbers[0], Now).Set(aps => aps.Id, 1), new AccountPayeScheme(Accounts[0], EmployerReferenceNumbers[1], Now).Set(aps => aps.Id, 2), new AccountPayeScheme(Accounts[1], EmployerReferenceNumbers[2], Now).Set(aps => aps.Id, 3) }; //todo: not sure why this doesn't work //ExcludedAccountPayeScheme = Fixture.Create<AccountPayeScheme>().Set(aps => aps.Id, 4); ExcludedAccountPayeScheme = new AccountPayeScheme(Fixture.Create <Account>(), "DDD444", Fixture.Create <DateTime>()).Set(aps => aps.Id, 4); Command = new ImportLevyDeclarationsCommand(5, Now, AccountPayeSchemes.Max(aps => aps.Id)); Db = new EmployerFinanceDbContext(new DbContextOptionsBuilder <EmployerFinanceDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); UniformSession = new Mock <IUniformSession>(); Db.AccountPayeSchemes.AddRange(AccountPayeSchemes.Append(ExcludedAccountPayeScheme)); Db.SaveChanges(); Handler = new ImportLevyDeclarationsCommandHandler(Db, UniformSession.Object); }
public async Task CreateFinanceStatistics() { var fixture = new Fixture(); var financeDbContext = new EmployerFinanceDbContext(_configuration.DatabaseConnectionString); var lazyDb = new Lazy <EmployerFinanceDbContext>(() => financeDbContext); var levyRepository = new DasLevyRepository(_configuration, Mock.Of <ILog>(), lazyDb); financeDbContext.Database.BeginTransaction(); try { await levyRepository.CreatePayments(new List <PaymentDetails> { fixture .Build <PaymentDetails>() .With(details => details.CollectionPeriodId, "R05") // could put sanitised collection period and delivery period values in for mth and year .With(details => details.PeriodEnd, "R12") .With(details => details.EmployerAccountVersion, $"ver-{DateTime.Now.Ticks.ToString().Substring(4,10)}") .With(details => details.ApprenticeshipVersion, $"ver-{DateTime.Now.Ticks.ToString().Substring(4,10)}") .Without(details => details.FrameworkCode) .Without(details => details.PathwayCode) .Without(details => details.PathwayName) .Create() }); financeDbContext.Database.CurrentTransaction.Commit(); } catch (Exception e) { financeDbContext.Database.CurrentTransaction.Rollback(); Console.WriteLine(e); throw; } }
public GetTransferAllowanceQueryHandler(EmployerFinanceDbContext db, LevyDeclarationProviderConfiguration configuration) { _db = db; _configuration = configuration; }
public GetTransferTransactionDetailsQueryHandler(EmployerFinanceDbContext dbContext, IPublicHashingService publicHashingService) { _dbContext = dbContext; _publicHashingService = publicHashingService; }
public TransferAllowanceService(EmployerFinanceDbContext db, EmployerFinanceConfiguration configuration) { _db = db; _configuration = configuration; }
public UpdateLevyDeclarationTransactionBalancesCommandHandler(EmployerFinanceDbContext db, IUniformSession uniformSession) { _db = db; _uniformSession = uniformSession; }
public UpdateLevyDeclarationSagaProgressCommandHandler(EmployerFinanceDbContext db, IUniformSession uniformSession) { _db = db; _uniformSession = uniformSession; }
public GetTransferAllowanceQueryHandler(EmployerFinanceDbContext db, EmployerFinanceConfiguration configuration) { _db = db; _configuration = configuration; }
public RunLevyDeclarationSagaTaskCommandHandler(EmployerFinanceDbContext db) { _db = db; }
public ProcessLevyDeclarationsAdHocCommandHandler(EmployerFinanceDbContext db) { _db = db; }
public ImportLevyDeclarationsCommandHandler(EmployerFinanceDbContext db, IUniformSession uniformSession) { _db = db; _uniformSession = uniformSession; }
public GetFinancialStatisticsQueryHandler(EmployerFinanceDbContext financeDb) { _financeDb = financeDb; }