package bean;

import beans.ClienteFacadeLocal;
import beans.TarjetaDebitoFacadeLocal;
import entities.Cliente;
import entities.TarjetaDebito;
import java.io.Serializable;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;

@Named(value = "tarjetaDebitoBean")
@SessionScoped
public class TarjetaDebitoBean implements Serializable {

  @EJB
  private TarjetaDebitoFacadeLocal tarjetaDebitoFacade;
  @EJB
  private ClienteFacadeLocal clienteFacade;

  private Cliente cliente;
  private TarjetaDebito tarjetaDebito;

  @PostConstruct
  public void init() {
    this.cliente = new Cliente();
    this.tarjetaDebito = new TarjetaDebito();
  }

  public String contratar() {
    tarjetaDebito.setCliente(cliente);
    tarjetaDebito.setInsertedAt(new Date());

    cliente.getTarjetaDebitoList().add(tarjetaDebito);
    clienteFacade.edit(cliente);

    this.resetInput();
    return "admin_cliente_view";
  }
  
  public String gotoDepositar() {
    FacesContext context = FacesContext.getCurrentInstance();
    DepositoBean db = context.getApplication().evaluateExpressionGet(context, "#{depositoBean}", DepositoBean.class);
    db.setTarjetaDebito(tarjetaDebito);
    return "cliente_tarjeta_debito_depositar";
  }
  
  public String gotoGirar() {
    FacesContext context = FacesContext.getCurrentInstance();
    GiroBean gb = context.getApplication().evaluateExpressionGet(context, "#{giroBean}", GiroBean.class);
    gb.setTarjetaDebito(tarjetaDebito);
    return "cliente_tarjeta_debito_girar";
  }
  
  public String gotoTransferir() {
    FacesContext context = FacesContext.getCurrentInstance();
    TransferenciaBean tb = context.getApplication().evaluateExpressionGet(context, "#{transferenciaBean}", TransferenciaBean.class);
    tb.setTarjetaDebito(tarjetaDebito);
    return "cliente_tarjeta_debito_transferir";
  }
  
  public String gotoComprar() {
    FacesContext context = FacesContext.getCurrentInstance();
    CompraBean cb = context.getApplication().evaluateExpressionGet(context, "#{compraBean}", CompraBean.class);
    cb.setTarjetaDebito(tarjetaDebito);
    return "cliente_tarjeta_debito_comprar";
  }
  

  private void resetInput() {
    this.cliente = new Cliente();
    this.tarjetaDebito = new TarjetaDebito();
  }

  public Cliente getCliente() {
    return cliente;
  }

  public void setCliente(Cliente cliente) {
    this.cliente = cliente;
  }

  public TarjetaDebito getTarjetaDebito() {
    return tarjetaDebito;
  }

  public void setTarjetaDebito(TarjetaDebito tarjetaDebito) {
    this.tarjetaDebito = tarjetaDebito;
  }

}
