package gcom.gui.faturamento.conta;
import gcom.atendimentopublico.registroatendimento.EspecificacaoTipoValidacao;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.Conta;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
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 RetirarRevisaoContaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirManterConta");
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
Fachada fachada = Fachada.getInstancia();
//Carregando o identificador das contas selecionadas
String identificadoresConta = httpServletRequest.getParameter("conta");
String[] arrayIdentificadores = identificadoresConta.split(",");
int flag = 0;
Integer contaNaBase = null;
Collection idsConta = new ArrayList();
String idImovel = httpServletRequest.getParameter("idImovel");
for (int i = 0; i < arrayIdentificadores.length; i++) {
// Carregando a conta que est� na base
String dadosConta = arrayIdentificadores[i];
String[] idUltimaAlteracao = dadosConta.split("-");
Integer idConta = new Integer (idUltimaAlteracao[0]);
idsConta.add(idConta);
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
Calendar data = new GregorianCalendar();
data.setTimeInMillis(new Long(idUltimaAlteracao[1].trim())
.longValue());
String time = formatter.format(data.getTime());
// alterado para fazer a pesquisa por Hql e nao com filtro como estava sendo feita antes - Fernanda Paiva - 23/08/2006
contaNaBase = contaNaBase = fachada.pesquisarExistenciaContaParaConcorrencia(idUltimaAlteracao[0],time);
// Verificar atualiza��o realizada antes por outro usu�rio
if (contaNaBase == null || contaNaBase.equals("")) {
httpServletRequest.setAttribute("reloadPage", "OK");
flag = 1;
sessao.setAttribute("erroConcorrencia","erroConcorrencia");
}
}
//[FS0017] Verificar ocorr�ncia de conta(s) em revis�o por a��o do usu�rio
//Vivianne Sousa 14/05/2007
Collection contasRevisaoAcaoUsuario = fachada.obterContasEmRevisaoPorAcaoUsuario(idsConta);
if (contasRevisaoAcaoUsuario != null && !contasRevisaoAcaoUsuario.isEmpty()){
//[FS0001] - Verificar Exist�ncia de RA
fachada.verificarExistenciaRegistroAtendimento(new Integer(idImovel), "atencao.conta_existencia_registro_atendimento",EspecificacaoTipoValidacao.ALTERACAO_CONTA);
}
if (sessao.getAttribute("colecaoContaImovel") != null && (identificadoresConta != null &&
!identificadoresConta.equalsIgnoreCase("")) && flag == 0){
Collection<Conta> colecaoContaImovel = (Collection) sessao.getAttribute("colecaoContaImovel");
//Retirando de revis�o uma ou mais contas
fachada.retirarRevisaoConta(colecaoContaImovel, identificadoresConta, usuarioLogado, null);
}
return retorno;
}
}