示例#1
0
        public async Task <IActionResult> CreateAccount(CreateBankAccountModel model)
        {
            var customerId  = User.Identity.Name;
            var bankAccount = await _bankRepo.CreateAccount(model, customerId);

            var bankModel = _mapper.Map <BankAccountModel>(bankAccount);

            await _repo.Add(bankAccount);

            return(Ok(bankAccount));
        }
        public async Task <IActionResult> CreateLoan([FromBody] CreateLoanModel model)
        {
            var loan = await _repo.GetByIdWithInclude <Loan>(model.LoanId, o => o.LoanType);

            var customer = await _repo.GetWithWhere <Customer>(o => o.CNP == model.CustomerCNP);

            var create_model = new CreateBankAccountModel
            {
                AccountType    = 4,
                InitialDeposit = 10000,
            };
            var bankAccount = await _bankRepo.CreateAccount(create_model, customer.UserId.ToString());

            bankAccount.InterestRate = loan.InterestRate;
            bankAccount.Period       = loan.Period;
            var bank = await _repo.Add <BankAccount>(bankAccount);

            return(Ok(bank));
        }
示例#3
0
文件: UsersApi.cs 项目: Tehl/bank-api
        public virtual async Task <IActionResult> ApiV1UsersCreate(
            [FromBody] CreateUserViewModel user_data
            )
        {
            if (user_data == null ||
                string.IsNullOrEmpty(user_data.Username) ||
                string.IsNullOrEmpty(user_data.BankId) ||
                string.IsNullOrEmpty(user_data.AccountNumber)
                )
            {
                return(ApiResponseUtility.ApiError(
                           HttpStatusCode.BadRequest,
                           "All user_data fields must be supplied"
                           ));
            }

            if (!Validation.AccountNumberIsValid(user_data.AccountNumber))
            {
                return(ApiResponseUtility.ApiError(
                           HttpStatusCode.BadRequest,
                           $"Account number '{user_data.AccountNumber}' is invalid"
                           ));
            }

            if (!_connectionManager.GetRegisteredBankIds().Contains(user_data.BankId))
            {
                return(ApiResponseUtility.ApiError(
                           HttpStatusCode.BadRequest,
                           $"Banking service '{user_data.BankId}' is not available"
                           ));
            }

            var existingUser = _userRepository.GetUserByUsername(user_data.Username);

            if (existingUser != null)
            {
                return(ApiResponseUtility.ApiError(
                           HttpStatusCode.Conflict,
                           $"User '{user_data.Username}' already exists"
                           ));
            }

            var existingAccount = _accountRepository.GetAccountByBankIdAndAccountNumber(
                user_data.BankId,
                user_data.AccountNumber
                );

            if (existingAccount != null)
            {
                return(ApiResponseUtility.ApiError(
                           HttpStatusCode.Conflict,
                           $"Bank account '{user_data.AccountNumber}' is already registered"
                           ));
            }

            // when we are registering a new account, we go directly to the bank connection to verify the account,
            // as it will not yet exist in our system
            var bankConnection = _connectionManager.CreateConnection(user_data.BankId);
            var accountResult  = await bankConnection.GetAccountDetails(user_data.AccountNumber);

            if (!accountResult.Success)
            {
                var error = new ErrorViewModel
                {
                    Status    = accountResult.StatusCode,
                    Message   = accountResult.Error.ErrorMessage,
                    ErrorCode = accountResult.Error.ErrorCode
                };

                if (accountResult.StatusCode == (int)HttpStatusCode.NotFound)
                {
                    error.Message =
                        $"Account number '{user_data.AccountNumber}' does not exist at bank {user_data.BankId}";
                }

                return(new ObjectResult(error)
                {
                    StatusCode = accountResult.StatusCode
                });
            }

            var appUser = _userRepository.CreateUser(user_data.Username);

            _accountRepository.CreateAccount(appUser.Id, user_data.BankId, user_data.AccountNumber);

            var model = ViewModelUtility.CreateUserViewModel(appUser);

            return(Ok(model));
        }
 public void CreateAccount(decimal balance, int limit, string login)
 {
     _bankAccountRepository.CreateAccount(balance, limit, login);
 }