package gcom.gui.cobranca;
import gcom.batch.FiltroProcesso;
import gcom.batch.Processo;
import gcom.cobranca.CobrancaAcao;
import gcom.cobranca.CobrancaAtividade;
import gcom.cobranca.FiltroCobrancaAcao;
import gcom.cobranca.FiltroCobrancaAtividade;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.util.ConstantesSistema;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class InserirAtividadeCobrancaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
InserirAtividadeCobrancaActionForm inserirAtividadeCobrancaActionForm = (InserirAtividadeCobrancaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO);
//Recuperando os dados do formul�rio
String descricaoAtividadeCobranca = inserirAtividadeCobrancaActionForm.getDescricaoAtividadeCobranca();
String atividadePredecessora = inserirAtividadeCobrancaActionForm.getIdAtividadePredecessora();
String ordemCronograma = inserirAtividadeCobrancaActionForm.getOrdemCronograma();
String processoAssociado = inserirAtividadeCobrancaActionForm.getIdProcessoAssociado();
String opcaoCompoeCronograma = inserirAtividadeCobrancaActionForm.getOpcaoCompoeCronograda();
String opcaoAtividadeObrigatoria = inserirAtividadeCobrancaActionForm.getOpcaoAtividadeObrigatoria();
String opcaoComandada = inserirAtividadeCobrancaActionForm.getOpcaoPodeSerComandada();
String opcaoExecutada = inserirAtividadeCobrancaActionForm.getOpcaoPodeSerExecutada();
String quantidadeDiasExecucao = inserirAtividadeCobrancaActionForm.getQuantidadeDiasExecucao();
String cobrancaAcao = inserirAtividadeCobrancaActionForm.getCobrancaAcao();
FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade();
/*
* [UC0107] Registrar Transa��o
*
*/
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_INSERIR_ATIVIDADE_COBRANCA,
new UsuarioAcaoUsuarioHelper(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_INSERIR_ATIVIDADE_COBRANCA);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// [UC0107] -Fim- Registrar Transa��o
//FS0002 - Numero de ordem j� utilizado
filtroCobrancaAtividade.adicionarParametro(
new ParametroSimples(FiltroCobrancaAtividade.ORDEM_REALIZACAO, ordemCronograma));
Collection colecaoCobrancaAtividade = fachada.pesquisar(
filtroCobrancaAtividade, CobrancaAtividade.class.getName());
if (colecaoCobrancaAtividade != null && !colecaoCobrancaAtividade.isEmpty()){
throw new ActionServletException("atencao.numero_ordem_informado");
}
//FS0002 - Fim do Bloco
filtroCobrancaAtividade.limparListaParametros();
CobrancaAtividade cobrancaAtividadePredecessora = new CobrancaAtividade();
// FS0003 - Numero de ordem menor que o da predecessora
if (atividadePredecessora != null && !atividadePredecessora.equalsIgnoreCase("")){
filtroCobrancaAtividade.adicionarParametro(
new ParametroSimples(FiltroCobrancaAtividade.ID, atividadePredecessora));
cobrancaAtividadePredecessora = (CobrancaAtividade) fachada.pesquisar(
filtroCobrancaAtividade, CobrancaAtividade.class.getName()).iterator().next();
int ordemRealizacao = new Integer(ordemCronograma);
int ordemPredecessora = cobrancaAtividadePredecessora.getOrdemRealizacao();
if (ordemRealizacao < ordemPredecessora){
throw new ActionServletException("atencao.predecessota_menor_atual");
}
}
//FS0003 - Fim do Bloco
//FS0005 - Atividade Obrigat�ria deve compor Cronograma
if (opcaoCompoeCronograma.equals(ConstantesSistema.NAO.toString())){
if (opcaoAtividadeObrigatoria.equals(ConstantesSistema.SIM.toString())){
throw new ActionServletException("atencao.atividade_obrigatoria_compoe_cronograma");
}
}
//FS0005 - Fim do Bloco
//Montando o Objeto a ser Inserido
CobrancaAtividade cobrancaAtividade = new CobrancaAtividade();
if (descricaoAtividadeCobranca != null && !descricaoAtividadeCobranca.equalsIgnoreCase("")){
cobrancaAtividade.setDescricaoCobrancaAtividade(descricaoAtividadeCobranca);
}
if (atividadePredecessora != null && !atividadePredecessora.equalsIgnoreCase("")){
cobrancaAtividade.setCobrancaAtividadePredecessora(cobrancaAtividadePredecessora);
}
if (ordemCronograma != null && !ordemCronograma.equalsIgnoreCase("")){
cobrancaAtividade.setOrdemRealizacao(new Short(ordemCronograma));
}
if (processoAssociado != null && !processoAssociado.equalsIgnoreCase("")){
FiltroProcesso filtroProcesso = new FiltroProcesso();
filtroProcesso.adicionarParametro(new ParametroSimples(FiltroProcesso.ID, processoAssociado));
Collection processoNaBase = fachada.pesquisar(filtroProcesso, Processo.class.getName());
if (processoNaBase != null && !processoNaBase.isEmpty()) {
Processo processo = new Processo();
processo.setId(new Integer(processoAssociado));
cobrancaAtividade.setProcesso(processo);
} else {
}
}
if (opcaoCompoeCronograma != null && !opcaoCompoeCronograma.equalsIgnoreCase("")){
cobrancaAtividade.setIndicadorCronograma(new Short(opcaoCompoeCronograma));
}
if (opcaoAtividadeObrigatoria != null && !opcaoAtividadeObrigatoria.equalsIgnoreCase("")){
cobrancaAtividade.setIndicadorObrigatoriedade(new Short(opcaoAtividadeObrigatoria));
}
if (opcaoComandada != null && !opcaoComandada.equalsIgnoreCase("")){
cobrancaAtividade.setIndicadorComando(new Short(opcaoComandada));
}
if (opcaoExecutada != null && !opcaoExecutada.equalsIgnoreCase("")){
cobrancaAtividade.setIndicadorExecucao(new Short(opcaoExecutada));
}
if (quantidadeDiasExecucao != null && !quantidadeDiasExecucao.equalsIgnoreCase("")){
cobrancaAtividade.setNumeroDiasExecucao(new Integer(quantidadeDiasExecucao));
}
if (cobrancaAcao != null && !cobrancaAcao.equalsIgnoreCase("")){
FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao();
filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, cobrancaAcao));
Collection colecaoCobrancaAcao = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName());
if (colecaoCobrancaAcao != null && !colecaoCobrancaAcao.isEmpty()) {
CobrancaAcao acaoCobranca = new CobrancaAcao();
acaoCobranca.setId(new Integer(cobrancaAcao));
cobrancaAtividade.setCobrancaAcao(acaoCobranca);
}
}
cobrancaAtividade.setIndicadorUso(new Short("1"));
cobrancaAtividade.setUltimaAlteracao(new Date());
// Regitrando operacao
cobrancaAtividade.setOperacaoEfetuada(operacaoEfetuada);
cobrancaAtividade.adicionarUsuario(usuarioLogado,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(cobrancaAtividade);
//FS0007 - Inserindo na base
Integer id = (Integer) fachada.inserir(cobrancaAtividade);
montarPaginaSucesso(httpServletRequest, "Atividade de Cobranca "+ id + " inserida com sucesso.",
"Inserir outra Atividade de Cobranca",
"exibirInserirAtividadeCobrancaAction.do?menu=sim",
"exibirAtualizarAtividadeCobrancaAction.do?idRegistroAtualizar=" + id,
"Atualizar Atividade de Cobranca Inserida");
return retorno;
}
}