public async Task Handler(TransferCommand command) { if (command.Amount > 0) { var accountSender = _context.Accounts.SingleOrDefault(x => x.AccountId == command.AccountId_Sender); var accountReciever = _context.Accounts.SingleOrDefault(x => x.AccountId == command.AccountId_Reciever); if (accountSender.Balance >= command.Amount) { accountSender.Balance -= command.Amount; accountReciever.Balance += command.Amount; var transactionCommand = new CreateTransferTransactionCommand() { Amount = command.Amount, Reciever = accountReciever, Sender = accountSender }; var query = new CreateTransferTransactionHandler().Handler(transactionCommand); await _context.SaveChangesAsync(); } else { throw new InsufficientFundsException(); } } else { throw new NegativeAmountException(); } }
public async Task Handler(CreateTransferTransactionCommand command) { var transactionSender = new Transaction() { AccountId = command.Sender.AccountId, Date = DateTime.Now, Type = "Debit", Operation = $"Transfer to {command.Reciever.AccountId}", Amount = command.Amount, Balance = command.Sender.Balance - command.Amount, Bank = "CT" }; var transactionReciever = new Transaction() { AccountId = command.Reciever.AccountId, Date = DateTime.Now, Type = "Credit", Operation = $"Transfer from {command.Reciever.AccountId}", Amount = command.Amount, Balance = command.Reciever.Balance + command.Amount, Bank = "CT" }; await _context.Transactions.AddRangeAsync(transactionReciever, transactionSender); await _context.SaveChangesAsync(); }