Beispiel #1
0
        public ApiResult <Account> Create(Guid customerId,
                                          CreateAccountOptions options)
        {
            if (options == null)
            {
                return(ApiResult <Account> .CreateFailed(
                           Constants.ApiResultCode.BadRequest, $"Null {nameof(options)}"));
            }

            if (string.IsNullOrWhiteSpace(options.CurrencyCode) ||
                !options.CurrencyCode.Equals(
                    Constants.CurrencyCode.Euro, StringComparison.OrdinalIgnoreCase))
            {
                return(ApiResult <Account> .CreateFailed(
                           Constants.ApiResultCode.BadRequest,
                           $"Invalid or unsupported currency {options.CurrencyCode}"));
            }

            var customerResult = _customers.GetById(customerId);

            if (!customerResult.IsSuccessful())
            {
                return(customerResult.ToResult <Account>());
            }

            var customer = customerResult.Data;

            var account = new Account()
            {
                AccountId    = CreateAccountId(customer.CountryCode),
                Balance      = 0M,
                CurrencyCode = options.CurrencyCode,
                Customer     = customer,
                State        = Constants.AccountState.Active,
                Description  = options.Description
            };

            _dbContext.Add(account);

            try {
                _dbContext.SaveChanges();
            }
            catch (Exception) {
                return(ApiResult <Account> .CreateFailed(
                           Constants.ApiResultCode.InternalServerError, "Could not save account"));
            }

            return(ApiResult <Account> .CreateSuccessful(account));
        }
Beispiel #2
0
        public ApiResult <Card> Create(string accountId, CreateCardOptions options)
        {
            if (options == null)
            {
                return(ApiResult <Card> .CreateFailed(
                           Constants.ApiResultCode.BadRequest, $"Null {nameof(options)}"));
            }

            var accountResult = _accountService.GetById(accountId);

            if (!accountResult.IsSuccessful())
            {
                return(accountResult.ToResult <Card>());
            }

            var account = accountResult.Data;

            var card = new Card()
            {
                CardNumber = options.CardNumber,
                CardType   = options.CardType,
                Active     = true
            };

            card.Accounts.Add(account);

            _dbContext.Add(card);
            try {
                _dbContext.SaveChanges();
            }
            catch (Exception) {
                return(ApiResult <Card> .CreateFailed(
                           Constants.ApiResultCode.InternalServerError, "Could not save account"));
            }
            return(ApiResult <Card> .CreateSuccessful(card));
        }