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)); }
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)); }