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.Contratante;
import br.com.ufrj.msi2.netuno.modelo.entidades.Contrato;
import br.com.ufrj.msi2.netuno.modelo.enums.FormaPagamentoEnum;
import br.com.ufrj.msi2.netuno.modelo.exceptions.ValidacaoException;
@ManagedBean(name="fecharContratoController")
@ViewScoped
public class FecharContratoControllerBean extends MBean {
@EJB
ContratacaoService contratacaoService;
@ManagedProperty(value="#{fecharContratoModel}")
private FecharContratoModelBean fecharContratoModelBean;
private boolean deveRedirecionarParaTelaDeAtendente;
private ResourceBundle contratacaoBundle;
@PostConstruct
public void construct() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
Contratante contratante = (Contratante) session.getAttribute(Attributes.SessionAttributes.CONTRATANTE.toString());
fecharContratoModelBean.setContratante(contratante);
if(session.getAttribute(Attributes.SessionAttributes.VIAATENDENTE.toString()) == null) {
this.deveRedirecionarParaTelaDeAtendente = false;
} else {
if(session.getAttribute(Attributes.SessionAttributes.VIAATENDENTE.toString()).toString() == "atendente") {
this.deveRedirecionarParaTelaDeAtendente = true;
}
}
Contrato contrato = (Contrato) session.getAttribute(Attributes.SessionAttributes.CONTRATO.toString());
fecharContratoModelBean.setContrato(contrato);
fecharContratoModelBean.setFormasPagamento(FormaPagamentoEnum.values());
FacesContext context = FacesContext.getCurrentInstance();
ResourceBundle bundle = context.getApplication().getResourceBundle(context, "contratacaoMsg");
this.contratacaoBundle = bundle;
}
/**
* Salva contrato e redireciona para a tela inicial do usu�rio logado (Contratante ou Atendente).
* @return String de navega��o.
*/
public String fecharContrato() {
try {
contratacaoService.salvarContrato(fecharContratoModelBean.getContratante(), fecharContratoModelBean.getContrato());
} catch (ValidacaoException e) {
super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.contratacaoBundle.getString(e.getMessage()), null);
return null;
}
super.sendMessage(null, FacesMessage.SEVERITY_INFO, this.contratacaoBundle.getString("contratacao.msg_contratoCriadoComSucesso"), null);
limpaSession();
return navegacao();
}
/**
* Retorna para tela de contrata��o
* @return String de navega��o.
*/
public String voltar() {
return "contratacao";
}
/**
* Redireciona para a tela inicial do usu�rio logado (Contratante ou Atendente).
* @return String de navega��o.
*/
public String cancelar() {
limpaSession();
return navegacao();
}
public void limpaSession() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
session.removeAttribute(Attributes.SessionAttributes.CONTRATANTE.toString());
session.removeAttribute(Attributes.SessionAttributes.CONTRATO.toString());
session.removeAttribute(Attributes.SessionAttributes.VIAATENDENTE.toString());
}
public String navegacao() {
if(this.deveRedirecionarParaTelaDeAtendente) {
return "telaAtendente";
} else {
return "verContratos";
}
}
public ContratacaoService getContratacaoService() {
return contratacaoService;
}
public FecharContratoModelBean getFecharContratoModelBean() {
return fecharContratoModelBean;
}
public boolean isDeveRedirecionarParaTelaDeAtendente() {
return deveRedirecionarParaTelaDeAtendente;
}
public ResourceBundle getContratacaoBundle() {
return contratacaoBundle;
}
public void setContratacaoService(ContratacaoService contratacaoService) {
this.contratacaoService = contratacaoService;
}
public void setFecharContratoModelBean(
FecharContratoModelBean fecharContratoModelBean) {
this.fecharContratoModelBean = fecharContratoModelBean;
}
public void setDeveRedirecionarParaTelaDeAtendente(
boolean deveRedirecionarParaTelaDeAtendente) {
this.deveRedirecionarParaTelaDeAtendente = deveRedirecionarParaTelaDeAtendente;
}
public void setContratacaoBundle(ResourceBundle contratacaoBundle) {
this.contratacaoBundle = contratacaoBundle;
}
}