package gcom.gui.cadastro;
import gcom.cadastro.ContaBraileHelper;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.FiltroCliente;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
*
* [UC1128] Solicitar Conta Braile
*
* @author Hugo Leonardo
* @Date 02/03/2011
*
*/
public class InserirCadastroContaBraileAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
Fachada fachada = Fachada.getInstancia();
InserirCadastroContaBraileActionForm form =
(InserirCadastroContaBraileActionForm) actionForm;
ContaBraileHelper contaBraileHelper = new ContaBraileHelper();
//Acessando direto pelo link, sem ser pelo link do email
if ( httpServletRequest.getParameter("confirmar") == null ||
!httpServletRequest.getParameter("confirmar").equals("sim") ){
//Valida o CPF/CNPJ do Cliente
if ( form.getCpfCnpjCliente() != null && !form.getCpfCnpjCliente().equals("")){
if ( form.isIndicadorCpf() ){
if ( form.getCpfCnpjCliente().length() < 11 ){
throw new ActionServletException("atencao.cliente_cpf_cnpj_invalido");
}
//� um CPF
boolean valido = gcom.util.Util.validacaoCPF(form.getCpfCnpjCliente());
form.setIndicadorCpf(true);
if ( !valido ){
throw new ActionServletException("atencao.cliente_cpf_cnpj_invalido");
}else{
//Verifica se o cpf ja esta associado a outro cliente
String cpf = form.getCpfCnpjCliente();
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro( new ParametroSimples( FiltroCliente.CPF, cpf));
Collection clientes = fachada.pesquisar(filtroCliente, Cliente.class.getName());
if ( clientes != null && !clientes.isEmpty() ){
Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(clientes);
if ( clientes.size() >= 1 && !( cliente.getId().equals(form.getIdCliente())) ){
throw new ActionServletException("atencao.ja.existe.cliente.com.cpfCnpj");
}
}
}
}else if ( form.isIndicadorCnpj() ){
if ( form.getCpfCnpjCliente().length() < 14){
throw new ActionServletException("atencao.cliente_cpf_cnpj_invalido");
}
boolean valido = gcom.util.Util.validacaoCNPJ(form.getCpfCnpjCliente());
form.setIndicadorCnpj(true);
if ( !valido ){
throw new ActionServletException("atencao.cliente_cpf_cnpj_invalido");
}else{
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro( new ParametroSimples( FiltroCliente.CNPJ, form.getCpfCnpjCliente()));
Collection clientes = fachada.pesquisar(filtroCliente, Cliente.class.getName());
if ( clientes != null && !clientes.isEmpty() ){
Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(clientes);
if ( clientes.size() >= 1 && !( cliente.getId().equals(form.getIdCliente()) ) ){
throw new ActionServletException("atencao.ja.existe.cliente.com.cpfCnpj");
}
}
}
}else{
throw new ActionServletException("atencao.cliente_cpf_cnpj_invalido");
}
}else {
//throw new ActionServletException("atencao.cpf_cpnf_obrigatorio");
}
if ( httpServletRequest.getParameter("possuiDocumento") != null &&
(!httpServletRequest.getParameter("possuiDocumento").equals("true")
|| httpServletRequest.getParameter("possuiDocumento").equals("false"))){
if( form.getConfirmarCpfCnpjCliente() == null ||
!form.getConfirmarCpfCnpjCliente().equals("confirmado") ){
throw new ActionServletException("atencao.necessario.confirmar.cpfCnpj.cliente");
}
}
// Valida o CPF do Solicitante
if ( form.getCpfSolicitante() != null && !form.getCpfSolicitante().equals("")){
if ( form.getCpfSolicitante().length() < 11 ){
throw new ActionServletException("atencao.solicitante_cpf_invalido");
}
//� um CPF
boolean valido = gcom.util.Util.validacaoCPF(form.getCpfSolicitante());
if ( !valido ){
throw new ActionServletException("atencao.solicitante_cpf_invalido");
}
}else {
throw new ActionServletException("atencao.cpf_solicitante_obrigatorio");
}
// Montar Helper
contaBraileHelper.setMatricula(form.getMatricula());
contaBraileHelper.setCpfCnpjCliente(form.getCpfCnpjCliente());
contaBraileHelper.setCpfSolicitante(form.getCpfSolicitante());
contaBraileHelper.setDataExpedicao(form.getDataExpedicao());
contaBraileHelper.setEmail(form.getEmail());
contaBraileHelper.setNomeCliente(form.getNomeCliente());
contaBraileHelper.setNomeSolicitante(form.getNomeSolicitante());
contaBraileHelper.setOrgaoExpeditor(form.getOrgaoExpeditor());
contaBraileHelper.setRg(form.getRg());
contaBraileHelper.setTelefoneContato(form.getTelefoneContato());
contaBraileHelper.setUnidadeFederacao(form.getUnidadeFederacao());
contaBraileHelper.setIndicadorCpf(form.isIndicadorCpf());
contaBraileHelper.setIndicadorCnpj(form.isIndicadorCnpj());
String protocolo = this.getFachada().obterProtocoloAtendimento();
contaBraileHelper.setProtocoloAtendimento(protocolo);
this.getFachada().inserirSolicitacaoContaBraile(contaBraileHelper);
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
String mensagemsucesso = sistemaParametro.getMensagemContaBraile()
+ ". Registro Atendimento: " + protocolo + ".";
httpServletRequest.setAttribute("desabilitaMenu",true);
montarPaginaSucesso(httpServletRequest, mensagemsucesso,
"Solicitar outra Conta em BRAILE.",
"exibirInserirCadastroContaBraileAction.do?voltar=sim");
}
return retorno;
}
}