package gcom.gui.faturamento;
import gcom.arrecadacao.ContratoDemanda;
import gcom.arrecadacao.ContratoMotivoCancelamento;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.faturamento.FiltroContratoDemanda;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesDiferenteDe;
import java.util.Collection;
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 AtualizarContratoDemandaAction extends GcomAction {
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();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
AtualizarContratoDemandaActionForm atualizarContratoDemandaActionForm = (AtualizarContratoDemandaActionForm) actionForm;
Usuario usuarioLogado = (Usuario) sessao
.getAttribute(Usuario.USUARIO_LOGADO);
ContratoDemanda contratoDemanda = (ContratoDemanda) sessao
.getAttribute("contratoDemandaAtualizar");
String dataInicioContrato = atualizarContratoDemandaActionForm.getDataInicioContrato();
String dataFimContrato = atualizarContratoDemandaActionForm.getDataFimContrato();
String dataEncerramento = atualizarContratoDemandaActionForm.getDataEncerramento();
String idMotivoCancelamento = atualizarContratoDemandaActionForm.getIdMotivoCancelamento();
Imovel imovel = null;
String idImovel = atualizarContratoDemandaActionForm.getIdImovel();
if (idImovel != null && !idImovel.trim().equals("")) {
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, idImovel));
Collection colecaoImoveis = fachada.pesquisar(filtroImovel, Imovel.class.getName());
if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) {
imovel = (Imovel) Util.retonarObjetoDeColecao(colecaoImoveis);
} else {
throw new ActionServletException("atencao.pesquisa_inexistente", null, "Im�vel");
}
}
contratoDemanda.setNumeroContrato(atualizarContratoDemandaActionForm.getNumeroContrato());
contratoDemanda.setImovel(imovel);
if (dataInicioContrato != null && !dataInicioContrato.trim().equals("")) {
contratoDemanda.setDataContratoInicio(Util.converteStringParaDate(atualizarContratoDemandaActionForm.getDataInicioContrato()));
} else {
contratoDemanda.setDataContratoInicio(null);
}
if (dataFimContrato != null && !dataFimContrato.trim().equals("")) {
contratoDemanda.setDataContratoFim(Util.converteStringParaDate(atualizarContratoDemandaActionForm.getDataFimContrato()));
} else {
contratoDemanda.setDataContratoFim(null);
}
if (dataEncerramento != null && !dataEncerramento.trim().equals("")) {
contratoDemanda.setDataContratoEncerrado(Util.converteStringParaDate(atualizarContratoDemandaActionForm.getDataEncerramento()));
} else {
contratoDemanda.setDataContratoEncerrado(null);
}
if (idMotivoCancelamento != null && !idMotivoCancelamento.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
ContratoMotivoCancelamento contratoMotivoCancelamento = new ContratoMotivoCancelamento();
contratoMotivoCancelamento.setId(new Integer(idMotivoCancelamento));
contratoDemanda.setContratoMotivoCancelamento(contratoMotivoCancelamento);
} else {
contratoDemanda.setContratoMotivoCancelamento(null);
}
if (contratoDemanda.getDataContratoEncerrado() == null && contratoDemanda.getContratoMotivoCancelamento() == null) {
FiltroContratoDemanda filtroContratoDemanda = new FiltroContratoDemanda();
filtroContratoDemanda.adicionarParametro(
new ParametroSimples(FiltroContratoDemanda.IMOVEL, idImovel));
filtroContratoDemanda.adicionarParametro(
new ParametroNulo(FiltroContratoDemanda.DATACONTRATOENCERRAMENTO));
filtroContratoDemanda.adicionarParametro(
new ParametroSimplesDiferenteDe(FiltroContratoDemanda.ID, contratoDemanda.getId()));
Collection colecaoContratoDemanda = fachada.pesquisar(
filtroContratoDemanda, ContratoDemanda.class.getName());
if (colecaoContratoDemanda != null & !colecaoContratoDemanda.isEmpty()) {
throw new ActionServletException("atencao.contrato.demanda.encerrado", null, idImovel);
}
}
// Inserir na base de dados ContratoDemanda
fachada.atualizarContratoDemanda(contratoDemanda,usuarioLogado);
// Montar a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Contrato de Demanda de c�digo "
+ contratoDemanda.getId().toString()
+ " atualizado com sucesso.",
"Realizar outra Manuten��o de Contrato de Demanda",
"exibirFiltrarContratoDemandaAction.do?menu=sim");
return retorno;
}
}