package aulas.aula11.banco;

public class Banco {
  private int		indice = 0;
  private Conta[]	contas;

  public void cadastro(Conta c) {
    contas[indice] = c;
    indice = indice + 1;
  }  

  private Conta procura(long num) { 
    int		i = 0; // Variáveis locais ao método.
    boolean	achou = false;
    
    while ((! achou) & (i < indice)) {
      if (contas[i].num_conta() == num) achou = true;
      else i = i + 1;
    }
    if (achou == true) return contas[i];
    else return null;     // return tem que ser a ultima instrucao!
  }

  public void print_saldos(long num) {
    Conta	c;

    c = procura(num); 
    if (c == null) System.out.println("A conta " + num + " nao existe!");
    else c.print_saldo();
  }

  public void debito(long num, double val) {
    Conta	c;

    c = this.procura(num); 
    if (c == null) System.out.println("A conta " + num + " nao existe!");
    else c.debito(val);    
  }

  public void transfere(long num_de, long num_para, double val) {
    Conta	c_de, c_para;

    c_de = this.procura(num_de);
    c_para = this.procura(num_para); 
    if ((c_de == null) | (c_para == null)) System.out.println("Um das contas não existe!");
    else {c_de.debito(val);
          c_para.credito(val);
         }
  }

  public Banco () {
    contas = new Conta[50];
    indice = 0;
  }

  public double saldo_total() {
    int 	i;
    double	st;
 
    st = 0;
    for (i = 0; i < indice; i = i + 1) { 
      st = st + contas[i].saldo_conta();
    }
    return st;
  }

  public int num_clientes() {
    return indice;
  }
}
