package gcom.gui.cadastro.tarifasocial;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.tarifasocial.TarifaSocialDadoEconomia;
import gcom.cadastro.tarifasocial.TarifaSocialExclusaoMotivo;
import gcom.cadastro.tarifasocial.bean.TarifaSocialHelper;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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 rodrigo
*/
public class ExibirManterTarifaSocialDadosMultiplasEconomiasAction extends
GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("manterTarifaSocialMultiplasEconomias");
// Instancia da Fachada
Fachada fachada = Fachada.getInstancia();
// Pega uma instancia da sessao
HttpSession sessao = httpServletRequest.getSession(false);
// Pega uma instancia do actionform
ManterTarifaSocialActionForm manterTarifaSocialActionForm = (ManterTarifaSocialActionForm) actionForm;
String idImovel = manterTarifaSocialActionForm.getIdImovel();
ArrayList colecaoTarifaSocialHelper = null;
if (sessao.getAttribute("atualizar") != null) {
colecaoTarifaSocialHelper = (ArrayList) sessao
.getAttribute("colecaoTarifaSocialHelper");
sessao.removeAttribute("atualizar");
} else {
colecaoTarifaSocialHelper = (ArrayList) fachada
.pesquisarDadosClienteEconomiaTarifaSocial(new Integer(
idImovel));
if (colecaoTarifaSocialHelper != null
&& !colecaoTarifaSocialHelper.isEmpty()) {
sessao.setAttribute("colecaoTarifaSocialHelper",
colecaoTarifaSocialHelper);
}else{
throw new ActionServletException("atencao.imovel.economias_nao_cadastradas");
}
String idTarifaSocial = httpServletRequest
.getParameter("idTarifaSocial");
if (idTarifaSocial != null && !idTarifaSocial.equals("")) {
Collection colecaoTarifaSocialExcluida = (Collection) sessao
.getAttribute("colecaoTarifaSocialExcluida");
boolean removeu = false;
if (colecaoTarifaSocialExcluida != null
&& !colecaoTarifaSocialExcluida.isEmpty()) {
Iterator colecaoTarifaSocialExcluidaIterator = colecaoTarifaSocialExcluida
.iterator();
while (colecaoTarifaSocialExcluidaIterator.hasNext()) {
TarifaSocialDadoEconomia tarifaSocialDadoEconomia = (TarifaSocialDadoEconomia) colecaoTarifaSocialExcluidaIterator
.next();
if (tarifaSocialDadoEconomia.getId().toString().equals(
idTarifaSocial)) {
colecaoTarifaSocialExcluida
.remove(tarifaSocialDadoEconomia);
removeu = true;
break;
}
}
}
if (!removeu) {
if (sessao.getAttribute("pesquisaImovel") != null) {
throw new ActionServletException("atencao.nao_permitido.recadastramento.tarifa_social.sem.ra");
}
Collection colecaoTarifasSociaisRecadastradas = null;
if (sessao
.getAttribute("colecaoTarifasSociaisRecadastradas") != null) {
colecaoTarifasSociaisRecadastradas = (Collection) sessao
.getAttribute("colecaoTarifasSociaisRecadastradas");
} else {
colecaoTarifasSociaisRecadastradas = new ArrayList();
}
TarifaSocialDadoEconomia tarifaSocialDadoEconomia = fachada
.pesquisarTarifaSocial(new Integer(idTarifaSocial));
if (tarifaSocialDadoEconomia.getTarifaSocialExclusaoMotivo().getIndicadorPermiteRecadastramentoImovel().equals(TarifaSocialExclusaoMotivo.INDICADOR_PERMITE_RECADASTRAMENTO_NAO)) {
throw new ActionServletException("atencao.motivo_exclusao_imovel_economia_nao_permite_recadastramento");
}
tarifaSocialDadoEconomia.setDataExclusao(null);
tarifaSocialDadoEconomia
.setTarifaSocialExclusaoMotivo(null);
int qtdeRecadastramentos = 1;
if (tarifaSocialDadoEconomia.getQuantidadeRecadastramento() != null) {
qtdeRecadastramentos = tarifaSocialDadoEconomia
.getQuantidadeRecadastramento().intValue() + 1;
}
tarifaSocialDadoEconomia
.setQuantidadeRecadastramento(new Short(""
+ qtdeRecadastramentos));
int i = 0;
Iterator colecaoTarifaSocialHelperIterator = colecaoTarifaSocialHelper
.iterator();
while (colecaoTarifaSocialHelperIterator.hasNext()) {
TarifaSocialHelper tarifaSocialHelper = (TarifaSocialHelper) colecaoTarifaSocialHelperIterator
.next();
if (tarifaSocialHelper.getTarifaSocialDadoEconomia()
.getId().equals(
tarifaSocialDadoEconomia.getId())) {
Integer imovelEconomia = null;
if(tarifaSocialDadoEconomia.getImovelEconomia() != null){
imovelEconomia = tarifaSocialDadoEconomia.getImovelEconomia().getId();
}
Cliente cliente = tarifaSocialHelper.getClienteImovelEconomia().getCliente();
Collection colecaoImovel = fachada.verificarClienteCadastradoManterTarifaSocialMultiplasEconomias(cliente.getId(), imovelEconomia);
if (colecaoImovel != null && !colecaoImovel.isEmpty()) {
Imovel imovel = (Imovel) colecaoImovel.iterator()
.next();
throw new ActionServletException(
"atencao.usuario.ja_cadastrado_tarifasocial.sem.encerramento",
null, imovel.getId().toString());
}
fachada.verificarClienteMotivoExclusaoRecadastramento(cliente.getId());
Collection colecaoClientesUsuarioExistenteTarifaSocial = fachada
.pesquisarClientesUsuarioExistenteTarifaSocial(cliente
.getId());
// Caso o usu�rio esteja na tarifa social em outro im�vel com motivo de revis�o
if (colecaoClientesUsuarioExistenteTarifaSocial != null && !colecaoClientesUsuarioExistenteTarifaSocial.isEmpty()) {
httpServletRequest.setAttribute(
"abrirPopupExclusao", true);
TarifaSocialDadoEconomia tarifaSocialDadoEconomiaImovelAnterior = (TarifaSocialDadoEconomia) Util
.retonarObjetoDeColecao(colecaoClientesUsuarioExistenteTarifaSocial);
sessao
.setAttribute(
"tarifaSocialDadoEconomiaImovelAnterior",
tarifaSocialDadoEconomiaImovelAnterior);
sessao.setAttribute("tarifaSocialRecadastrar", tarifaSocialDadoEconomia);
sessao.setAttribute("clienteTarifaSocialImovelAnterior", cliente);
} else {
tarifaSocialHelper
.setTarifaSocialDadoEconomia(tarifaSocialDadoEconomia);
colecaoTarifaSocialHelper
.set(i, tarifaSocialHelper);
colecaoTarifasSociaisRecadastradas
.add(tarifaSocialDadoEconomia);
sessao.setAttribute("colecaoTarifasSociaisRecadastradas",
colecaoTarifasSociaisRecadastradas);
}
break;
}
i++;
}
}
}
}
return retorno;
}
}