package br.com.ufrj.msi2.netuno.bean;
import java.util.ResourceBundle;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import br.com.ufrj.msi2.netuno.attributes.Attributes;
import br.com.ufrj.msi2.netuno.contratacao.servicos.ContratacaoService;
import br.com.ufrj.msi2.netuno.modelo.entidades.CPF;
import br.com.ufrj.msi2.netuno.modelo.entidades.Contratante;
import br.com.ufrj.msi2.netuno.modelo.exceptions.ValidacaoException;
@ManagedBean(name="contratanteController")
@ViewScoped
public class ContratanteControllerBean extends MBean {
@EJB
ContratacaoService contratacaoService;
@ManagedProperty(value="#{contratanteModel}")
private ContratanteModelBean contratanteModelBean;
private ResourceBundle contratacaoBundle;
@PostConstruct
public void construct() {
Contratante contratante = this.contratacaoService.criarContratante();
contratante.setCpf(new CPF());
contratanteModelBean.setContratante(contratante);
FacesContext context = FacesContext.getCurrentInstance();
ResourceBundle bundle = context.getApplication().getResourceBundle(context, "contratacaoMsg");
this.contratacaoBundle = bundle;
}
/**
* Valida contratante e o cria, se validado. Redireciona para tela de contrata��o, com o contratante rec�m criado.
* @return String de navega��o
*/
public String criar() {
boolean contratanteValido = true;
Contratante contratante = contratanteModelBean.getContratante();
if(!contratante.getSenha().equals(contratanteModelBean.getConfirmacaoSenha())) {
contratanteValido = false;
super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.contratacaoBundle.getString("atendente.msg_senhasDiferentes"), null);
}
if(contratacaoService.existeUsuarioComLogin(contratante.getLogin())) {
contratanteValido = false;
super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.contratacaoBundle.getString("atendente.msg_loginUsado"), null);
}
if(contratacaoService.existeUsuarioComCPF(contratante.getCpf())) {
contratanteValido = false;
super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.contratacaoBundle.getString("atendente.msg_CPFUsado"), null);
}
if(contratanteValido) {
try {
contratacaoService.salvarContratante(contratanteModelBean.getContratante());
} catch (ValidacaoException e) {
super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.contratacaoBundle.getString(e.getMessage()), null);
return null;
}
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
session.setAttribute(Attributes.SessionAttributes.CONTRATANTE.toString(), contratanteModelBean.getContratante());
if(session.getAttribute(Attributes.SessionAttributes.USUARIOSECADASTRANDO.toString()) == null) {
session.setAttribute(Attributes.SessionAttributes.VIAATENDENTE.toString(), "atendente");
} else {
session.removeAttribute(Attributes.SessionAttributes.USUARIOSECADASTRANDO.toString());
session.setAttribute(Attributes.SessionAttributes.LOGIN.toString(), contratanteModelBean.getContratante());
}
super.sendMessage(null, FacesMessage.SEVERITY_INFO, this.contratacaoBundle.getString("atendente.msg_contratanteCriado"), null);
return "contratacao";
}
return null;
}
/**
* Redireciona para tela inicial de atendente.
* @return String de navega��o.
*/
public String cancelar() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
if(session.getAttribute(Attributes.SessionAttributes.USUARIOSECADASTRANDO.toString()) == null) {
return "atendente";
} else {
session.removeAttribute(Attributes.SessionAttributes.USUARIOSECADASTRANDO.toString());
return "login";
}
}
public ContratacaoService getContratacaoService() {
return contratacaoService;
}
public ContratanteModelBean getContratanteModelBean() {
return contratanteModelBean;
}
public ResourceBundle getContratacaoBundle() {
return contratacaoBundle;
}
public void setContratacaoService(ContratacaoService contratacaoService) {
this.contratacaoService = contratacaoService;
}
public void setContratanteModelBean(ContratanteModelBean contratanteModelBean) {
this.contratanteModelBean = contratanteModelBean;
}
public void setContratacaoBundle(ResourceBundle contratacaoBundle) {
this.contratacaoBundle = contratacaoBundle;
}
}