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; }
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); }