Exemple #1
0
        public void Open_Account_Should_Link_A_New_Account_To_The_User_And_Have_The_Initial_Movement()
        {
            OpenAccountResult result = _User.OpenAccount(initialDeposit: 100.50m);

            Assert.AreEqual(_User.Id, result.Account.UserId);
            Assert.IsNotNull(result.Movement);
        }
Exemple #2
0
        public OpenAccountResult OpenAccount(decimal initialDeposit)
        {
            Account  newAccount      = Account.Create(Id);
            Movement initialMovement = newAccount.RegisterMovement(initialDeposit, "Initial Deposit");

            return(OpenAccountResult.Create(newAccount, initialMovement));
        }
Exemple #3
0
        public async Task <Guid> RunAsync(Guid userId, decimal initialDeposit)
        {
            User user = _dbRepository.Get <User>(userId);
            OpenAccountResult result = user.OpenAccount(initialDeposit);

            _dbRepository.Insert(result.Account);
            _dbRepository.Persist();

            await _eventRepository.AddEventAsync(nameof(Account),
                                                 result.Account.Id,
                                                 result.Movement.Amount >= 0?EventType.Deposit : EventType.Withdraw,
                                                 result.Movement);

            return(result.Account.Id);
        }