Beispiel #1
0
        public void TestUnitOfWorkWithCommit()
        {
            var bus     = new FakeBus();
            var events  = new ClaimsEventHandler(bus);
            var storage = new EventStore(bus);

            var eventStoreRepository = new Repository <Claim>(storage, @"c:\shibutemp\eventstore.txt");
            var emailProvider        = new TextEmailProvider(@"c:\shibutemp\emaillog.txt");

            var connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=MyTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";

            using (var connection = new System.Data.SqlClient.SqlConnection(connectionString))
            {
                connection.Open();
                var unitOfWork = new UnitOfWork(connection).WithTransaction();
                //var unitOfWork = new UnitOfWork(connection);

                var queryService   = new MyCqrs.Persistent.ClaimsQueryService(unitOfWork);
                var commandService = new MyCqrs.Persistent.ClaimsCommandService(unitOfWork);

                var commands = new ClaimsCommandHandler(bus, queryService, commandService, eventStoreRepository, emailProvider);
                RegisterCommandHandles(bus, commands);
                RegisterEventHandles(bus, events);


                var claimNo = "C009";
                var command = new ClaimFileCommand(claimNo, 10, DateTime.Now);
                // bus.Send(command);

                var claimRejectedCommand = new ClaimRejectedCommand(claimNo, "r_user1", DateTime.Now);
                bus.Send(claimRejectedCommand);

                //var claimApprovedCommand = new ClaimApprovedCommand(claimNo, "a_user1", DateTime.Now);
                //bus.Send(claimApprovedCommand);

                unitOfWork.Commit();
                //unitOfWork.Rollback();
            }

            var eventDatas = TextEventStoreProvider.GetEventData("4eba9d9f-d64b-4d98-9fa6-2bced2695143");



            Assert.Pass();
        }
        public void RejectClaim(ClaimRejectedCommand command)
        {
            string sql        = "UPDATE [Distribution].[Claims] SET [ClaimStatus] = @ClaimStatus, [ClaimReviewedBy] = @ClaimReviewedBy WHERE [ClaimNo] = @ClaimNo ";
            var    parameters = new
            {
                ClaimNo         = command.ClaimNo,
                ClaimStatus     = Claims.Domain.ClaimState.Rejected.ToString(),
                ClaimReviewedBy = command.ReviewedBy
            };

            if (unitOfWork.HasTransactions)
            {
                unitOfWork.DbConnection.Execute(sql, parameters, unitOfWork.DbTransaction);
            }
            else
            {
                unitOfWork.DbConnection.Execute(sql, parameters);
            }
        }