/// <summary>
        /// Create client for particular bank
        /// </summary>
        /// <param name="clientDto"></param>
        /// <returns></returns>
        public async Task <ClientResponseDto> CreateClient(ClientRequestDto clientDto)
        {
            try
            {
                var userEntity    = _mapper.Map <User>(clientDto);
                var clientEntity  = _mapper.Map <Client>(clientDto);
                var usernameExist = _bankContext.Users.FirstOrDefault(x => x.UserName == userEntity.UserName);
                if (usernameExist != null)
                {
                    throw new Exception("Username is already taken");
                }
                userEntity.CreatedDate = DateTime.Now;
                _bankContext.Add(userEntity);
                _bankContext.SaveChanges();

                clientEntity.UserId      = userEntity.Id;
                clientEntity.CreatedDate = DateTime.Now;
                _bankContext.Add(clientEntity);
                _bankContext.SaveChanges();

                return(new ClientResponseDto
                {
                    UserName = userEntity.UserName,
                    ClientId = clientEntity.Id,
                    UserId = userEntity.Id
                });
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        /// <summary>
        /// Add new client's account
        /// </summary>
        /// <param name="accountCreationRequestDto"></param>
        /// <param name="accountNumber"></param>
        /// <returns></returns>
        public async Task <AccountResponseDto> AddClientAccount(AccountCreationRequestDto accountCreationRequestDto, int accountNumber)
        {
            var accountEntity = _mapper.Map <Account>(accountCreationRequestDto);

            accountEntity.AccountNumber = accountNumber;
            accountEntity.CreatedDate   = DateTime.Now;
            _bankContext.Add(accountEntity);
            _bankContext.SaveChanges();

            var depositAccountSetting = _mapper.Map <DepositAccountSetting>(accountCreationRequestDto);

            depositAccountSetting.AccountId   = accountEntity.Id;
            depositAccountSetting.CreatedDate = DateTime.Now;
            _bankContext.Add(depositAccountSetting);
            _bankContext.SaveChanges();

            return(new AccountResponseDto
            {
                AccountNumber = accountEntity.AccountNumber,
                Balance = accountEntity.Balance,
            });
        }