コード例 #1
0
 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));
     }
 }
コード例 #2
0
ファイル: AccountController.cs プロジェクト: a864610877/src
        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));
            }
        }
コード例 #3
0
        public void OpenAccount(OpenAccount command)
        {
            AccountNumber number        = new AccountNumber("NL12ABCD0001234567");
            AccountOpened accountOpened = new AccountOpened(number, command.Owner);

            RaiseEvent(accountOpened);
        }
コード例 #4
0
        public void EnactCommand(OpenAccount command)
        {
            var created = new AccountOpened {
                CustomerId = command.CustomerId
            };

            RecordEvent(created);
        }
コード例 #5
0
ファイル: AccountController.cs プロジェクト: xKloc/Memoir
        public async Task <IActionResult> Post(Guid AccountId, OpenAccount openAccount)
        {
            var account = new AccountAggregate(AccountId);

            await _accountRepository.Load(account);

            account.Issue(openAccount);
        }
コード例 #6
0
        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"))
                );
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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"))
                );
        }
コード例 #9
0
        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);
        }
コード例 #10
0
 /// <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));
     }
 }
コード例 #11
0
        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();
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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();
            }
        }
コード例 #14
0
        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 = "";
        }
コード例 #15
0
        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();
        }
コード例 #16
0
        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());
        }
コード例 #17
0
        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);
            }
        }
コード例 #18
0
        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);
        }
コード例 #19
0
        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());
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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());
        }
コード例 #22
0
ファイル: AkkaService.cs プロジェクト: Lejdholt/Transaction
 public async Task OpenAccount(OpenAccount openAccount)
 {
     await _accouting.AskObservable(openAccount);
 }
コード例 #23
0
 public BankAccount(OpenAccount openAccount) : base(openAccount)
 {
 }