package gcom.gui.arrecadacao.banco;
import gcom.arrecadacao.banco.Agencia;
import gcom.arrecadacao.banco.ContaBancaria;
import gcom.arrecadacao.banco.FiltroAgencia;
import gcom.arrecadacao.banco.FiltroBanco;
import gcom.arrecadacao.banco.FiltroContaBancaria;
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 InserirContaBancariaAction extends GcomAction {
/**
* Este caso de uso permite inserir uma Ag�ncia Banc�ria
*
* [UC0518] Inserir Conta 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);
InserirContaBancariaActionForm inserirContaBancariaActionForm = (InserirContaBancariaActionForm) actionForm;
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_AGENCIA_BANCARIA_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// ------------ REGISTRAR TRANSA��O ----------------
String banco = inserirContaBancariaActionForm.getBanco();
String agenciaBancaria = inserirContaBancariaActionForm
.getAgenciaBancaria();
String contaBanco = inserirContaBancariaActionForm.getContaBanco();
String contaContabil = inserirContaBancariaActionForm
.getContaContabil();
ContaBancaria contaBancariaInserir = new ContaBancaria();
Collection colecaoPesquisa = null;
sessao.removeAttribute("tipoPesquisaRetorno");
if (Util.validarNumeroMaiorQueZERO(inserirContaBancariaActionForm
.getBanco())) {
// Constr�i o filtro para pesquisa do Banco
FiltroBanco filtroBanco = new FiltroBanco();
filtroBanco.adicionarParametro(new ParametroSimples(
FiltroContaBancaria.AGENCIA_BANCO_ID,
inserirContaBancariaActionForm.getBanco()));
}
if (Util.validarNumeroMaiorQueZERO(inserirContaBancariaActionForm
.getAgenciaBancaria())) {
// Constr�i o filtro para pesquisa da Agencia
FiltroAgencia filtroAgencia = new FiltroAgencia();
filtroAgencia.adicionarParametro(new ParametroSimples(
FiltroAgencia.ID, inserirContaBancariaActionForm
.getAgenciaBancaria()));
filtroAgencia.adicionarCaminhoParaCarregamentoEntidade("banco");
// Realiza a pesquisa servi�o Ag�ncia
Agencia agencia = (Agencia) fachada.pesquisar(filtroAgencia,
Agencia.class.getName()).iterator().next();
contaBancariaInserir.setAgencia(agencia);
}
// O numero da Conta � obrigat�rio.
if (contaBanco == null || contaBanco.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"Conta Banc�ria");
}
contaBancariaInserir.setNumeroConta(contaBanco);
if (contaContabil != null && !contaContabil.trim().equals("")) {
contaBancariaInserir.setNumeroContaContabil(new Integer(contaContabil));
}
// O numero da Conta Contabil � obrigat�rio.
// if (contaContabil == null || contaContabil.equalsIgnoreCase("")) {
// throw new ActionServletException("atencao.required", null,
// "Nome da Ag�ncia Banc�ria");
// }
// Banco.
if (banco != null
&& !banco.equalsIgnoreCase(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
FiltroBanco filtroBanco = new FiltroBanco();
filtroBanco.adicionarParametro(new ParametroSimples(FiltroBanco.ID,
banco));
filtroBanco.adicionarParametro(new ParametroSimples(
FiltroBanco.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Agencia.
if (agenciaBancaria != null
&& !agenciaBancaria.equalsIgnoreCase(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
FiltroAgencia filtroAgencia = new FiltroAgencia();
filtroAgencia.adicionarParametro(new ParametroSimples(
FiltroAgencia.ID, agenciaBancaria));
// Ultima altera��o
contaBancariaInserir.setUltimaAlteracao(new Date());
FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria();
filtroContaBancaria.adicionarParametro(new ParametroSimples(
FiltroContaBancaria.ID, contaBancariaInserir.getId()));
if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) {
// Conta Banc�ria j� existe
throw new ActionServletException(
"atencao.pesquisa_agencia_ja_cadastrada", null,
contaBanco);
} else {
Integer idContaBancaria = null;
idContaBancaria = fachada
.inserirContaBancaria(contaBancariaInserir);
montarPaginaSucesso(httpServletRequest,
"Conta Bancaria de c�digo "
+ contaBancariaInserir.getId()
+ " inserida com sucesso.",
"Inserir outra Conta Bancaria",
"exibirInserirContaBancariaAction.do?menu=sim",
"exibirAtualizarContaBancariaAction.do?inserir=sim&idRegistroAtualizacao="
+ idContaBancaria,
"Atualizar Agencia Conta Inserida");
}
}
}
return retorno;
}
}