public async Task <Unit> Handle(ImportPayeSchemeLevyDeclarationsCommand request, CancellationToken cancellationToken, RequestHandlerDelegate <Unit> next)
        {
            var task   = LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(request.SagaId, request.AccountPayeSchemeId);
            var result = await Run(task, next);

            return(result);
        }
        public async Task <Unit> Handle(UpdateAccountLevyDeclarationTransactionBalancesCommand request, CancellationToken cancellationToken, RequestHandlerDelegate <Unit> next)
        {
            var task   = LevyDeclarationSagaTask.CreateUpdateAccountTransactionBalancesTask(request.SagaId, request.AccountId);
            var result = await Run(task, next);

            return(result);
        }
        private async Task <T> Run <T>(LevyDeclarationSagaTask task, RequestHandlerDelegate <T> next)
        {
            task.Start();

            var result = await next();

            task.Finish();

            _db.LevyDeclarationSagaTasks.Add(task);

            return(result);
        }
        public UpdateProcessLevyDeclarationsSagaProgressCommandHandlerTestsFixture SetTooManyImportLevyDeclarationsTasksCompleted()
        {
            Tasks = AccountPayeSchemes
                    .Select(aps => LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(Saga.Id, aps.Id))
                    .Append(LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(Saga.Id, AccountPayeSchemes[0].Id))
                    .ToList();

            Db.LevyDeclarationSagaTasks.AddRange(Tasks);
            Db.SaveChanges();

            return(this);
        }
        public UpdateProcessLevyDeclarationsSagaProgressCommandHandlerTestsFixture SetSomeImportLevyDeclarationTasksCompleted()
        {
            Tasks = new List <LevyDeclarationSagaTask>
            {
                LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(Saga.Id, AccountPayeSchemes[0].Id),
                LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(Saga.Id, AccountPayeSchemes[1].Id)
            };

            Db.LevyDeclarationSagaTasks.AddRange(Tasks);
            Db.SaveChanges();

            return(this);
        }
        public UpdateProcessLevyDeclarationsSagaProgressCommandHandlerTestsFixture SetTooManyUpdateAccountTransactionBalancesTasksCompleted()
        {
            Saga.Set(s => s.ImportPayeSchemeLevyDeclarationsTasksCompleteCount, AccountPayeSchemes.Count);

            Tasks = Accounts
                    .Select(a => LevyDeclarationSagaTask.CreateUpdateAccountTransactionBalancesTask(Saga.Id, a.Id))
                    .Append(LevyDeclarationSagaTask.CreateUpdateAccountTransactionBalancesTask(Saga.Id, Accounts[0].Id))
                    .ToList();

            Db.LevyDeclarationSagaTasks.AddRange(Tasks);
            Db.SaveChanges();

            return(this);
        }
        public UpdateProcessLevyDeclarationsSagaProgressCommandHandlerTestsFixture SetSomeUpdateAccountTransactionBalancesTasksCompleted()
        {
            Saga.Set(s => s.ImportPayeSchemeLevyDeclarationsTasksCompleteCount, AccountPayeSchemes.Count);

            Tasks = new List <LevyDeclarationSagaTask>
            {
                LevyDeclarationSagaTask.CreateUpdateAccountTransactionBalancesTask(Saga.Id, AccountPayeSchemes[0].AccountId)
            };

            Db.LevyDeclarationSagaTasks.AddRange(Tasks);
            Db.SaveChanges();

            return(this);
        }
Пример #8
0
        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 SetAllTasksCompleted()
        {
            Saga.Set(s => s.ImportPayeSchemeLevyDeclarationsTasksCompleteCount, Saga.ImportPayeSchemeLevyDeclarationsTasksCount)
            .Set(s => s.UpdateAccountTransactionBalancesTasksCompleteCount, Saga.UpdateAccountTransactionBalancesTasksCount)
            .Set(s => s.IsComplete, true)
            .Set(s => s.Updated, Now);

            var importPayeSchemeLevyDeclarationsTasks = AccountPayeSchemes
                                                        .Take(Saga.ImportPayeSchemeLevyDeclarationsTasksCount)
                                                        .Select(aps => LevyDeclarationSagaTask.CreateImportPayeSchemeLevyDeclarationsTask(Saga.Id, aps.Id));

            var updateAccountTransactionBalancesTasks = Accounts
                                                        .Take(Saga.UpdateAccountTransactionBalancesTasksCount)
                                                        .Select(a => LevyDeclarationSagaTask.CreateUpdateAccountTransactionBalancesTask(Saga.Id, a.Id));

            Tasks = importPayeSchemeLevyDeclarationsTasks.Concat(updateAccountTransactionBalancesTasks).ToList();

            Db.LevyDeclarationSagaTasks.AddRange(Tasks);
            Db.SaveChanges();

            return(this);
        }