public long Create(OpenAccount account) { using (var con = WriteConnection()) { return(con.ExecuteScalar <long>(@"INSERT INTO [dbo].[OpenAccount]([CreateTime],[PlatformId],[FiiiType],[OpenId],[SecretKey],[AccountId]) VALUES (@CreateTime,@PlatformId,@FiiiType,@OpenId,@SecretKey,@AccountId); SELECT SCOPE_IDENTITY()", account)); } }
public ActionResult Open(OpenAccount model) { try { AccountServiceResponse rsp = model.Save(); if (string.IsNullOrEmpty(rsp.CodeText)) { rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code); } return(Json(rsp)); } catch (ConflictException ex) { _logger.Error(LogTypes.AccountOpen, ex); AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict); rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code); return(Json(rsp)); } catch (Exception ex) { _logger.Error(LogTypes.AccountOpen, ex); AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError); rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code); return(Json(rsp)); } }
public void OpenAccount(OpenAccount command) { AccountNumber number = new AccountNumber("NL12ABCD0001234567"); AccountOpened accountOpened = new AccountOpened(number, command.Owner); RaiseEvent(accountOpened); }
public void EnactCommand(OpenAccount command) { var created = new AccountOpened { CustomerId = command.CustomerId }; RecordEvent(created); }
public async Task <IActionResult> Post(Guid AccountId, OpenAccount openAccount) { var account = new AccountAggregate(AccountId); await _accountRepository.Load(account); account.Issue(openAccount); }
public void DepositNegativeAmountException() { OpenAccount dhurbaAccount = new OpenAccount("Dhurba", new Transaction(500.7m, "initial deposit")); //Assert.Throws check if the included Exception is thrown by the following Action. Assert.Throws <ArgumentOutOfRangeException>( () => dhurbaAccount.Deposit(new Transaction(-500.6m, "negative deposit")) ); }
public async Task <IActionResult> Post(Guid id, OpenAccount openAccount) { var request = new AddAccountRequest { CustomerId = id, InitialCredit = openAccount.InitialCredit }; var response = await _mediator.Send(request); return(response.ToActionResult(_ => _.Account)); }
public void WithdrawMoreThanTotalBalanceException() { OpenAccount dhurbaAccount = new OpenAccount("Dhurba", new Transaction(500.7m, "initial deposit")); //Assert.Throws checks if the included exception is thrown by the call back function(action) Assert.Throws <InvalidOperationException>( () => dhurbaAccount.Withdrawl(new Transaction(600, "withdrawing more than i have")) ); }
private void execute(OpenAccount operation) { var newAccount = new LocalAccount( operation.customer, operation.bank.generateAccountNumber(), operation.Money ?? new Money() ); operation.bank.addAccount(newAccount); newAccount.OtherOperations.Add(operation); }
/// <summary> /// Handle open account request. /// </summary> /// <param name="command">The open account command.</param> /// <param name="accountNumberGenerator">The account number generator service.</param> public void Handle(OpenAccount command, IGenerateAccountNumbers accountNumberGenerator) { if (Status == AccountStatus.New) { Raise(new AccountOpened(command.AccountType, accountNumberGenerator.GetAccountNumber(command.AccountType), Decimal.Zero, AccountStatus.Opened)); } else { Raise(new AccountAlreadyOpened(command.AccountType, Number, Balance, Status)); } }
static void Main(string[] args) { InitializeENodeFramework(); var commandService = ObjectContainer.Resolve <ICommandService>(); var memoryCache = ObjectContainer.Resolve <IMemoryCache>(); var bankAccountId1 = Guid.NewGuid(); var bankAccountId2 = Guid.NewGuid(); //开两个银行账户 var openAccountCommand1 = new OpenAccount { AccountId = bankAccountId1, AccountNumber = "00001", Owner = "雪华" }; var openAccountCommand2 = new OpenAccount { AccountId = bankAccountId2, AccountNumber = "00002", Owner = "凯锋" }; commandService.Execute(openAccountCommand1); commandService.Execute(openAccountCommand2); //每个账户都存入1000元 var depositCommand1 = new Deposit { AccountId = bankAccountId1, Amount = 1000 }; var depositCommand2 = new Deposit { AccountId = bankAccountId2, Amount = 1000 }; commandService.Execute(depositCommand1); commandService.Execute(depositCommand2); //账户1向账户2转账300元 commandService.Send(new StartTransfer { TransferInfo = new TransferInfo(bankAccountId1, bankAccountId2, 300) }); Thread.Sleep(1000); //账户2向账户1转账500元 commandService.Send(new StartTransfer { TransferInfo = new TransferInfo(bankAccountId2, bankAccountId1, 500) }); Thread.Sleep(1000); //从内存获取账户信息,检查余额是否正确 var bankAccount1 = memoryCache.Get <BankAccount>(bankAccountId1.ToString()); var bankAccount2 = memoryCache.Get <BankAccount>(bankAccountId2.ToString()); Console.WriteLine(string.Format("账户{0}余额:{1}", bankAccount1.AccountNumber, bankAccount1.Balance)); Console.WriteLine(string.Format("账户{0}余额:{1}", bankAccount2.AccountNumber, bankAccount2.Balance)); Console.WriteLine("Press Enter to exit..."); Console.ReadLine(); }
public async Task <IActionResult> Open( [FromHeader(Name = Headers.RequestId)] Guid requestId, OpenAccountDto request, CancellationToken token) { RequestContext.RequestId = requestId; RequestContext.CausationId = requestId; RequestContext.CorrelationId = requestId; var command = new OpenAccount(request.ClientId, request.InterestRate, request.Balance); var id = await _mediator.Send(command, token); return(CreatedAtRoute(nameof(Get), new { id }, id)); }
protected void Page_Load(object sender, EventArgs e) { bankAccount = new BankAccount(); openAccount = new OpenAccount(); transaction = new Transaction(); // Tabla Transacciones Cuenta Corriente. dtTransaccionesCC.Columns.AddRange( new DataColumn[4] { new DataColumn("codigoTransaccionCC", typeof(string)), new DataColumn("tipoTransaccionCC", typeof(string)), new DataColumn("montoTransaccionCC", typeof(string)), new DataColumn("fechaTransaccionCC", typeof(string)) } ); dgvTransaccionesCC.DataSource = dtTransaccionesCC; dgvTransaccionesCC.DataBind(); // Tabla Transacciones Cuenta de Ahorro. dtTransaccionesCA.Columns.AddRange( new DataColumn[4] { new DataColumn("codigoTransaccionCA", typeof(string)), new DataColumn("tipoTransaccionCA", typeof(string)), new DataColumn("montoTransaccionCA", typeof(string)), new DataColumn("fechaTransaccionCA", typeof(string)) } ); dgvTransaccionesCA.DataSource = dtTransaccionesCA; dgvTransaccionesCA.DataBind(); // Tabla Transacciones Cuenta de Depósitos. dtTransaccionesDP.Columns.AddRange( new DataColumn[6] { new DataColumn("codigoDeposito", typeof(string)), new DataColumn("montoDeposito", typeof(string)), new DataColumn("interesDeposito", typeof(string)), new DataColumn("mesesDeposito", typeof(string)), new DataColumn("fechaInicioDeposito", typeof(string)), new DataColumn("fechaFinDeposito", typeof(string)) } ); dgvTransaccionesDP.DataSource = dtTransaccionesDP; dgvTransaccionesDP.DataBind(); if (!IsPostBack) { ShowAccountNumbers(); } }
protected void Page_Load(object sender, EventArgs e) { bankAccount = new BankAccount(); openAccount = new OpenAccount(); transaction = new Transaction(); // Tabla Transacciones Cuenta Corriente. dtTransaccionesCC.Columns.AddRange( new DataColumn[4] { new DataColumn("codigoTransaccionCC", typeof(string)), new DataColumn("tipoTransaccionCC", typeof(string)), new DataColumn("montoTransaccionCC", typeof(string)), new DataColumn("fechaTransaccionCC", typeof(string)) } ); dgvTransaccionesCC.DataSource = dtTransaccionesCC; dgvTransaccionesCC.DataBind(); // Tabla Transacciones Cuenta Ahorro. dtTransaccionesCA.Columns.AddRange( new DataColumn[4] { new DataColumn("codigoTransaccionCA", typeof(string)), new DataColumn("tipoTransaccionCA", typeof(string)), new DataColumn("montoTransaccionCA", typeof(string)), new DataColumn("fechaTransaccionCA", typeof(string)) } ); dgvTransaccionesCA.DataSource = dtTransaccionesCA; dgvTransaccionesCA.DataBind(); // Tabla Transacciones Cuenta Depósito. dtTransaccionesDP.Columns.AddRange( new DataColumn[6] { new DataColumn("codigoDeposito", typeof(string)), new DataColumn("montoDeposito", typeof(string)), new DataColumn("interesDeposito", typeof(string)), new DataColumn("mesesDeposito", typeof(string)), new DataColumn("fechaInicioDeposito", typeof(string)), new DataColumn("fechaFinDeposito", typeof(string)) } ); dgvTransaccionesDP.DataSource = dtTransaccionesDP; dgvTransaccionesDP.DataBind(); lblAvisoTransaccionCC.Text = ""; lblAvisoTransaccionCA.Text = ""; lblAvisoTransaccionDP.Text = ""; lblAvisoAperturaCA.Text = ""; lblAvisoIngresarCuenta.Text = ""; }
public void Test_Account() { AccountReceiver receiver = new AccountReceiver("Tuan Trung"); ICommandAccount openAccount = new OpenAccount(receiver); ICommandAccount closeAccount = new CloseAccount(receiver); BankApp bankApp = new BankApp ( openAccount: openAccount, closeAccount: closeAccount ); bankApp.OpenAccount(); bankApp.CloseAccount(); }
public ActionResult OpenAccountIndex(OpenAccount openAccount) { try { //Get user id int?userId = Session.GetUserId(); OpenAccountService openAccountService = new OpenAccountService(); openAccountService.Start(userId); } catch (Exception e) { return(new HttpStatusCodeAndErrorResult(500, e.Message)); } return(View()); }
public void EqualNotEmptyContainsTest() { OpenAccount dhurbaAccount = new OpenAccount("Dhurba", new Transaction(500.7m, "initial deposit salary")); dhurbaAccount.Deposit(new Transaction(1500.5m, "salary")); //Equal checks for expected outcome vs actual outcome Assert.Equal(2001.2m, dhurbaAccount.GetTotalBalance()); //NotEmpty checks if the collection is Empty or Not. Assert.Empty checks if it is empty. Assert.NotEmpty(dhurbaAccount.TransactionList); foreach (Transaction transaction in dhurbaAccount.TransactionList) { //Contains check for expected sunstring vs actual string Assert.Contains("salary", transaction.Note); } }
public OpenAccount Create(int platform, FiiiType fiiiType, Guid accountId) { OpenAccount account = new OpenAccount { CreateTime = DateTime.UtcNow, PlatformId = platform, FiiiType = fiiiType, OpenId = Guid.NewGuid(), SecretKey = RandomAlphaNumericGenerator.Generate(32), AccountId = accountId }; long id = new OpenAccountDAC().Create(account); account.Id = id; return(account); }
public async Task Post_WithInvalidUser_ReturnsError() { //Arrange var openAccount = new OpenAccount { InitialCredit = -0 }; // Act var response = await _client.PostAsync($"/api/account/{Guid.Empty}", RequestHelper.CreateJson(openAccount)); var content = await response.Content.ReadAsStringAsync(); var bag = JsonSerializer.Deserialize <ValidatioBagResult>(content, _options); // Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(ValidationErrorCode.CustomerNotFound, bag.Errors.First().ValidationErrorCode); Assert.Equal(1, bag.Errors.Count()); }
public async Task Post_WithValidArgumentsWithBalance_ReturnsAccount() { //Arrange var openAccount = new OpenAccount { InitialCredit = 5000 }; // Act var response = await _client.PostAsync($"/api/account/{Utilities.CustomerId}", RequestHelper.CreateJson(openAccount)); var content = await response.Content.ReadAsStringAsync(); var account = JsonSerializer.Deserialize <Account>(content, _options); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(Utilities.CustomerId, account.CustomerId); Assert.Equal(5000, account.Balance); }
public async Task Post_WithBalanceLessThenZero_ReturnsError() { //Arrange var openAccount = new OpenAccount { InitialCredit = -1000 }; // Act var response = await _client.PostAsync($"/api/account/{Utilities.CustomerId}", RequestHelper.CreateJson(openAccount)); var content = await response.Content.ReadAsStringAsync(); var bag = JsonSerializer.Deserialize <ValidatioBagResult>(content, _options); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal(ValidationErrorCode.InvalidUnderZeroInitialCredit, bag.Errors.First().ValidationErrorCode); Assert.Equal(1, bag.Errors.Count()); }
public async Task OpenAccount(OpenAccount openAccount) { await _accouting.AskObservable(openAccount); }
public BankAccount(OpenAccount openAccount) : base(openAccount) { }