Esempio n. 1
0
        public async Task DeposeCheque(decimal checkAmount, DeposedCheque @event)
        {
            if (checkAmount <= 0)
            {
                throw new ArgumentException("added amount should exceed 0");
            }
            if (_blocked && (_amount + checkAmount <= 0))
            {
                throw new ArgumentException("not enough to unblock the account");
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Saturday || DateTime.Today.DayOfWeek == DayOfWeek.Sunday)
            {
                throw new InvalidTimeZoneException("system out of work");
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Friday)
            {
                //await Task.Delay(DateTime.Today.AddDays(3).AddHours(9) - DateTime.Now); //for real time testing
                await Task.Delay(3000);

                Unblock(new Unblocked(_accountId));
                Raise(@event);
            }
            else
            {
                //await Task.Delay(DateTime.Today.AddDays(1).AddHours(9) - DateTime.Now); //for real time testing
                await Task.Delay(5000);

                Unblock(new Unblocked(_accountId));
                Raise(@event);
            }
        }
Esempio n. 2
0
        public void Can_create_DeposedCheque_Event()
        {
            var id     = Guid.NewGuid();
            var funds  = 25.000m;
            var @event = new DeposedCheque(id, funds);

            Assert.NotNull(@event);
            Assert.Equal(id, @event.AccountId);
            Assert.Equal(funds, @event.Funds);
        }
Esempio n. 3
0
 private void Apply(DeposedCheque @event)
 {
     _amount += @event.Funds;
 }