package gcom.gui.cobranca.spcserasa;
import java.util.Collection;
import java.util.Date;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.imovel.Imovel;
import gcom.cobranca.NegativacaoImoveis;
import gcom.cobranca.Negativador;
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.spcserasa.FiltroNegativacaoImoveis;
import gcom.spcserasa.FiltroNegativador;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesDiferenteDe;
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;
/**
* Classe respons�vel por atualizar um Negativador.
*
* @author Thiago Vieira
* date: 24/12/07
*/
public class AtualizarNegativadorAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// localiza o action no objeto actionmapping
ActionForward retorno = actionMapping.findForward("telaSucesso");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// Pega o form do cliente
AtualizarNegativadorActionForm form = (AtualizarNegativadorActionForm) actionForm;
// ------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_ATUALIZAR_NEGATIVADOR,
new UsuarioAcaoUsuarioHelper(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_ATUALIZAR_NEGATIVADOR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// ------------ REGISTRAR TRANSA��O ----------------
short indicadorUso = Short.parseShort(form.getAtivo());
Integer clienteId = new Integer(form.getCodigoCliente());
Integer imovelId = null;
if(!"".equals(form.getCodigoImovel())){
imovelId = new Integer(form.getCodigoImovel());
}
String inscricaoEstadual = form.getInscricaoEstadual();
Integer idNegativador = new Integer(form.getIdNegativador());
short codigoAgente = Short.parseShort(form.getCodigoAgente());
Long time = Long.parseLong(form.getTime());
Cliente cliente = new Cliente();
cliente.setId(clienteId);
//Criando objeto Negativador a ser incluido
Negativador negativador = new Negativador();
negativador.setId(idNegativador);
negativador.setCodigoAgente(codigoAgente);
negativador.setCliente(cliente);
if(imovelId != null){
Imovel imovel = new Imovel();
imovel.setId(imovelId);
negativador.setImovel(imovel);
}
negativador.setNumeroInscricaoEstadual(inscricaoEstadual);
negativador.setIndicadorUso(indicadorUso);
//......................................................................
FiltroNegativador filtroNegativador = new FiltroNegativador();
filtroNegativador.adicionarParametro(new ParametroSimples(FiltroNegativador.NEGATIVADOR_CLIENTE, clienteId));
filtroNegativador.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroNegativador.ID, idNegativador));
Collection collNegativador= fachada.pesquisar(filtroNegativador,Negativador.class.getName());
if(collNegativador != null && !collNegativador.isEmpty()){
throw new ActionServletException("atencao.negativador_associado_cliente");
}
//......................................................................
if(imovelId!=null){
filtroNegativador = new FiltroNegativador();
filtroNegativador.adicionarParametro(new ParametroSimples(FiltroNegativador.NEGATIVADOR_IMOVEL, imovelId));
filtroNegativador.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroNegativador.ID, idNegativador));
Collection collNegativadorImovel= fachada.pesquisar(filtroNegativador,Negativador.class.getName());
if(collNegativadorImovel != null && !collNegativadorImovel.isEmpty()){
throw new ActionServletException("atencao.negativador_associado_imovel");
}
}
//......................................................................
if(indicadorUso == ConstantesSistema.INDICADOR_USO_DESATIVO){
FiltroNegativacaoImoveis filtroNegativacaoImoveis = new FiltroNegativacaoImoveis();
filtroNegativacaoImoveis.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroNegativacaoImoveis.NEGATIVADOR_ID, idNegativador));
filtroNegativacaoImoveis.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroNegativacaoImoveis.INDICADOR_EXCLUIDO, "2"));
Collection collNegativacaoImoveis= fachada.pesquisar(filtroNegativacaoImoveis,NegativacaoImoveis.class.getName());
if(collNegativacaoImoveis != null && !collNegativacaoImoveis.isEmpty()){
throw new ActionServletException("atencao.imoveis_no_negativador");
}
}
//.......................................................................
//Check para atualiza��o realizada por outro usu�rio
filtroNegativador = new FiltroNegativador();
filtroNegativador.adicionarParametro(new ParametroSimples(FiltroNegativador.ID, idNegativador));
Collection negativadores = Fachada.getInstancia().pesquisar(filtroNegativador, Negativador.class.getName());
Negativador negativadorAtual = (Negativador)negativadores.iterator().next();
if (negativadorAtual.getUltimaAlteracao().getTime() != time){
throw new ActionServletException("atencao.registro_remocao_nao_existente");
}
negativador.setUltimaAlteracao(new Date());
// Atualiza o Negativador
// ------------ REGISTRAR TRANSA��O ----------------
negativador.setOperacaoEfetuada(operacaoEfetuada);
negativador.adicionarUsuario(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(negativador);
// ------------ REGISTRAR TRANSA��O ----------------
Fachada.getInstancia().atualizar(negativador);
montarPaginaSucesso(httpServletRequest, "Negativador "
+ form.getCodigoAgente() + " atualizado com sucesso.",
"Realizar outra manuten��o de Negativador",
"exibirFiltrarNegativadorAction.do?menu=sim",
"","");
return retorno;
}
}