package gcom.gui.arrecadacao.banco;
import gcom.arrecadacao.banco.Agencia;
import gcom.arrecadacao.banco.Banco;
import gcom.arrecadacao.banco.FiltroAgencia;
import gcom.arrecadacao.banco.FiltroBanco;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class InserirAgenciaBancariaAction extends GcomAction {
/**
* Este caso de uso permite inserir uma Ag�ncia Banc�ria
*
* [UC0515] Inserir Ag�ncia Banc�ria
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
* @author Thiago Ten�rio
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
// Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
InserirAgenciaBancariaActionForm inserirAgenciaBancariaActionForm = (InserirAgenciaBancariaActionForm) actionForm;
// ------------ REGISTRAR TRANSA��O ----------------
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_AGENCIA_BANCARIA_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// ------------ REGISTRAR TRANSA��O ----------------
String codigo = inserirAgenciaBancariaActionForm.getCodigo();
String nome = inserirAgenciaBancariaActionForm.getNome();
String bancoID = inserirAgenciaBancariaActionForm.getBancoID();
Collection colecaoEnderecos = (Collection) sessao
.getAttribute("colecaoEnderecos");
String telefone = inserirAgenciaBancariaActionForm.getTelefone();
String ramal = inserirAgenciaBancariaActionForm.getRamal();
String fax = inserirAgenciaBancariaActionForm.getFax();
String email = inserirAgenciaBancariaActionForm.getEmail();
Agencia agenciaInserir = new Agencia();
Collection colecaoPesquisa = null;
sessao.removeAttribute("tipoPesquisaRetorno");
if (colecaoEnderecos != null && !colecaoEnderecos.isEmpty()) {
Agencia agenciaEndereco = (Agencia) Util
.retonarObjetoDeColecao(colecaoEnderecos);
agenciaInserir = agenciaEndereco;
}
// else {
// throw new ActionServletException(
// "atencao.campo_selecionado.obrigatorio", null, "Endere�o");
// }
if (Util.validarNumeroMaiorQueZERO(inserirAgenciaBancariaActionForm
.getBancoID())) {
// Constr�i o filtro para pesquisa do servi�o tipo refer�ncia
FiltroBanco filtroBanco = new FiltroBanco();
filtroBanco.adicionarParametro(new ParametroSimples(
FiltroBanco.ID, inserirAgenciaBancariaActionForm
.getBancoID()));
Collection colecaoBancos = (Collection) fachada.pesquisar(
filtroBanco, Banco.class.getName());
// setando
agenciaInserir.setBanco((Banco) colecaoBancos.iterator().next());
}
agenciaInserir.setNomeAgencia(nome);
// O c�digo da Ag�ncia Bancaria � obrigat�rio.
if (codigo == null || codigo.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null, "C�digo da Ag�ncia Banc�ria");
}
// O nome da Ag�ncia Bancaria � obrigat�rio.
if (nome == null || nome.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null, "Nome da Ag�ncia Banc�ria");
}
agenciaInserir.setCodigoAgencia(codigo);
agenciaInserir.setNomeAgencia(nome);
// O telefone � obrigat�rio caso o ramal tenha sido informado.
if (ramal != null && !ramal.equalsIgnoreCase("")) {
agenciaInserir.setNumeroRamal(ramal);
if (telefone == null || telefone.equalsIgnoreCase("")) {
throw new ActionServletException(
"atencao.telefone_agencia_bancaria_nao_informado");
} else if (telefone.length() < 7) {
throw new ActionServletException(
"atencao.telefone_ou_fax_agencia_bancaria_menor_sete_digitos",
null, "Telefone");
}
}
// Telefone.
if (telefone != null && !telefone.equalsIgnoreCase("")) {
if (telefone.length() < 7) {
throw new ActionServletException(
"atencao.telefone_ou_fax_agencia_bancaria_menor_sete_digitos",
null, "Telefone");
} else {
agenciaInserir.setNumeroTelefone(telefone);
}
}
// Fax.
if (fax != null && !fax.equalsIgnoreCase("")) {
if (fax.length() < 7) {
throw new ActionServletException(
"atencao.telefone_ou_fax_agencia_bancaria_menor_sete_digitos",
null, "Fax");
} else {
agenciaInserir.setNumeroFax(fax);
}
}
// E-mail.
if (email != null && !email.equalsIgnoreCase("")) {
agenciaInserir.setEmail(email);
}
// Banco.
Banco banco = new Banco();
if (bancoID != null
&& !bancoID.equalsIgnoreCase(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
FiltroBanco filtroBanco = new FiltroBanco();
filtroBanco.adicionarParametro(new ParametroSimples(FiltroBanco.ID,
bancoID));
filtroBanco.adicionarParametro(new ParametroSimples(
FiltroBanco.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna localidade - Elo
colecaoPesquisa = fachada.pesquisar(filtroBanco, Banco.class
.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
// O c�digo do Elo n�o existe na tabela Localidade
throw new ActionServletException(
"atencao.pesquisa_elo_nao_inexistente");
} else {
banco = (Banco) Util.retonarObjetoDeColecao(colecaoPesquisa);
if (banco.getId().intValue() != banco.getId().intValue()) {
// A localidade escolhida n�o � um Elo
throw new ActionServletException(
"atencao.localidade_nao_e_elo");
} else {
agenciaInserir.setBanco(banco);
}
}
}
// Ultima altera��o
agenciaInserir.setUltimaAlteracao(new Date());
FiltroAgencia filtroAgencia = new FiltroAgencia();
filtroAgencia.adicionarParametro(new ParametroSimples(
FiltroAgencia.CODIGO_AGENCIA, agenciaInserir.getCodigoAgencia()));
filtroAgencia.adicionarParametro(new ParametroSimples(
FiltroAgencia.BANCO_ID, bancoID));
// Verificar exist�ncia da Ag�ncia Banc�ria
colecaoPesquisa = fachada.pesquisar(filtroAgencia, Agencia.class
.getName());
if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) {
// Gerencia Regional j� existe
throw new ActionServletException(
"atencao.pesquisa_agencia_ja_cadastrada", null, codigo);
} else {
Integer idAgencia = null;
idAgencia = fachada.inserirAgenciaBancaria(agenciaInserir);
montarPaginaSucesso(httpServletRequest,
"Ag�ncia Bancaria de c�digo "
+ agenciaInserir.getCodigoAgencia()
+ " inserida com sucesso.",
"Inserir outra Ag�ncia Bancaria",
"exibirInserirAgenciaBancariaAction.do?menu=sim",
"exibirAtualizarAgenciaBancariaAction.do?inserir=sim&idRegistroAtualizacao="
+ idAgencia, "Atualizar Agencia Bancaria Inserida");
}
sessao.removeAttribute("colecaoEnderecos");
// devolve o mapeamento de retorno
return retorno;
}
}