Untitled

 avatar
unknown
typescript
2 years ago
1.6 kB
5
Indexable
class Customer {
  id: string;
  name: string;
  address: string;
  phoneNumber: string;
  accounts: BankAccount[];
}

class BankAccount {
  accountNumber: string;
  balance: number;
  customerId: string;
  creditCards: CreditCard[];
  
  deposit(amount: number): void {
    this.balance += amount;
  }

  withdraw(amount: number): void {
    if (amount <= this.balance) {
      this.balance -= amount;
    } else {
      throw new Error("Insufficient funds");
    }
  }

  transfer(amount: number, targetAccount: BankAccount): void {
    if (amount <= this.balance) {
      this.balance -= amount;
      targetAccount.deposit(amount);
    } else {
      throw new Error("Insufficient funds");
    }
  }
}

class CreditCard {
  cardNumber: string;
  expirationDate: Date;
  balance: number;
  accountId: string;
}

class Bank {
  name: string;
  customers: Customer[];

  createAccount(customer: Customer): BankAccount {
    const newAccount = new BankAccount();
    //... Initialize newAccount with necessary details
    customer.accounts.push(newAccount);
    this.createCreditCard(newAccount);
    return newAccount;
  }

  createCreditCard(account: BankAccount): CreditCard {
    const newCard = new CreditCard();
    //... Initialize newCard with necessary details
    account.creditCards.push(newCard);
    return newCard;
  }

  reorderCreditCard(account: BankAccount, oldCard: CreditCard): CreditCard {
    // Remove old card
    const cardIndex = account.creditCards.indexOf(oldCard);
    if (cardIndex > -1) {
      account.creditCards.splice(cardIndex, 1);
    }
    // Create new card
    return this.createCreditCard(account);
  }
}
Editor is loading...