public void StopBankCard()
        {
            BankCard bankCard = BankCards.SingleOrDefault(card => !card.Disabled);

            if (bankCard != null)
            {
                bankCard.Disable();
            }
        }
        private static BankCardViewModel BuildViewModel(BankCardModule bankCardModule, AccountModule accountModule, BankCard bankCard)
        {
            var bankAccount = accountModule.Get(bankCard.AccountId);

            return new BankCardViewModel
            {
                Id = bankCard.Id,
                AccountNumber = bankAccount.AccountNumber,
                Status = bankCard.Disabled ? "Disabled" : "Active",
                Disabled = bankCard.Disabled
            };
        }
        public void IssueBankCard(int accountId)
        {
            if (bankCardRepository.Any(card => card.AccountId == accountId && !card.Disabled))
            {
                throw new ValidationException("An account may only have one active bank card at a time.");
            }

            var newBankCard = new BankCard
            {
                AccountId = accountId,
                Disabled = false,
            };

            Validator.ValidateObject(newBankCard, new ValidationContext(newBankCard));
            bankCardRepository.Add(newBankCard);
        }
        public BankCard IssueBankCard(int accountId)
        {
            try
            {
                var accountRepository = unitOfWork.GetRepository<Account>();
                var account = accountRepository.Get(accountId);

                if (account.Closed)
                {
                    throw new ValidationException("The account is closed");
                }

                var bankCardRepository = unitOfWork.GetRepository<BankCard>();

                if (bankCardRepository.Any(card => card.AccountId == accountId && !card.Disabled))
                {
                    throw new ValidationException("An account may only have one active bank card at a time.");
                }

                var newBankCard = new BankCard
                {
                    AccountId = accountId,
                    Disabled = false,
                };

                Validator.ValidateObject(newBankCard, new ValidationContext(newBankCard));

                bankCardRepository.Add(newBankCard);
                unitOfWork.Commit();
                return newBankCard;
            }
            catch
            {
                unitOfWork.Rollback();
                throw;
            }
        }