public ActionResult Add(TransactionViewModel model)
        {
            var command = new PostTransactionCommand(model.BankAccountId, model.Amount, model.Description,
                                                         model.TransactionDate);
            bus.Send(command);
            return RedirectToAction("Index", new { id = model.BankAccountId });
            //using (var dataContext = new CQRSDataContext())
            //{
            //    var balance = dataContext.Transactions.Where(x => x.BankAccountId == model.BankAccountId).OrderBy(x => x.TransactionDate).Sum(x => x.Amount);
            //    var newBalance = balance + model.Amount;

            //    var emailSender = new EmailSender();
            //    if (newBalance < 100)
            //    {
            //        var bankAccount = dataContext.BankAccounts.Single(x => x.BankAccountId == model.BankAccountId);
            //        bankAccount.Locked = true;
            //        dataContext.SubmitChanges();
            //        emailSender.SendAccountLockedEmail(bankAccount);
            //        return redirect;
            //    }

            //    dataContext.Transactions.InsertOnSubmit(transaction);
            //    if (newBalance < 0)
            //    {
            //        var bankAccount = dataContext.BankAccounts.Single(x => x.BankAccountId == model.BankAccountId);
            //        emailSender.SendNegativeBalanceEmail(bankAccount);
            //    }

            //    dataContext.SubmitChanges();
            //}

            //return redirect;
        }
示例#2
0
        public void Handle(PostTransactionCommand command)
        {
            var bankAccountEntity = repository.LoadById(command.BankAccountId);
            var bankAccount = MapEntityToDomainObject(bankAccountEntity);

            var transaction = new Domain.Transaction(command.Amount, command.Description, command.TransactionDate);
            bankAccount.PostNewTransaction(transaction);
        }