package gcom.gui.micromedicao;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.Leiturista;
import gcom.micromedicao.RoteiroEmpresa;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
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;
/**
* Realiza a atualiza��o do roteiro empresa de acordo com os par�metros informados
*
* @author Francisco do Nascimento
* @created 19/09/07
*/
public class AtualizarRoteiroEmpresaAction extends GcomAction {
/**
* Este caso de uso permite a inclus�o de um novo roteiro empresa
*
* [UC0583] Atualizar Roteiro Empresa
*
*
* @author Francisco Nascimento
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
InserirRoteiroEmpresaActionForm form = (InserirRoteiroEmpresaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
String idRoteiroEmpresa = (String)sessao.getAttribute("idRegistroAtualizacao");
// obrigat�rios
String idEmpresa = form.getEmpresa();
String idLocalidade = form.getIdLocalidade();
String idFaturamentoGrupo = form.getFaturamentoGrupo();
String idLeiturista = form.getIdLeiturista();
String[] idQuadrasAdicionar = form.getIdQuadraAdicionar();
// n obrigat�rios
validacaoRoteiroEmpresa (idEmpresa, idLocalidade, idFaturamentoGrupo, idLeiturista,
idQuadrasAdicionar,fachada,httpServletRequest);
RoteiroEmpresa roteiro = new RoteiroEmpresa();
roteiro.setId(Integer.parseInt(idRoteiroEmpresa));
if(idEmpresa != null && !idEmpresa.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){
Empresa empresa = new Empresa();
empresa.setId(new Integer(idEmpresa));
roteiro.setEmpresa(empresa);
}
Leiturista leiturista = null;
if (idLeiturista != null && !idLeiturista.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){
// Validar se a empresa escolhida for diferente da empresa a qual pertence o funcion�rio ou o cliente
FiltroLeiturista filtro = new FiltroLeiturista();
// Adiciona o id do leiturista
filtro.adicionarParametro(new ParametroSimples(
FiltroLeiturista.ID, idLeiturista));
filtro.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna cole��o de leituristas
Collection colecaoLeituristas = fachada.pesquisar(filtro, Leiturista.class.getName());
leiturista = (Leiturista) Util.retonarObjetoDeColecao(colecaoLeituristas);
if (leiturista.getEmpresa().getId().intValue() != Integer.parseInt(idEmpresa)){
throw new ActionServletException("atencao.empresa_diferente");
}
roteiro.setLeiturista(leiturista);
}
//Indicador de Uso
roteiro.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
//Ultima altera��o
roteiro.setUltimaAlteracao(new Date());
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
fachada.atualizarRoteiroEmpresa(roteiro, idQuadrasAdicionar, usuarioLogado);
sessao.removeAttribute("reloadPageURL");
sessao.removeAttribute("reloadPage");
sessao.removeAttribute("colecaoEmpresa");
sessao.removeAttribute("colecaoFaturamentoGrupo");
sessao.removeAttribute("colecaoSetorComercial");
sessao.removeAttribute("colecaoSetoresSelecionados");
sessao.removeAttribute("colecaoQuadras");
montarPaginaSucesso(httpServletRequest, "Roteiro Empresa (" +
roteiro.getId() + ") atualizado com sucesso.",
"Atualizar outro Roteiro Empresa",
"exibirFiltrarRoteiroEmpresaAction.do?desfazer=S");
return retorno;
}
// validacaoRoteiroEmpresa (empresa, idLocalidade, idFaturamentoGrupo, idFuncionario, idCliente,
// quadras,fachada,httpServletRequest);
private void validacaoRoteiroEmpresa (String empresa, String idLocalidade
,String idFaturamentoGrupo, String idLeiturista
,String[] quadrasAdicionar
,Fachada fachada
,HttpServletRequest httpServletRequest
){
//Empresa � obrigat�rio.
if ((empresa == null) || (empresa.equals(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO))) {
httpServletRequest.setAttribute("nomeCampo","empresa");
throw new ActionServletException("atencao.empresa_nao_informada");
}else if (Util.validarValorNaoNumerico(empresa)){
//Empresa n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","empresa");
throw new ActionServletException("atencao.nao.numerico",
null,"Empresa");
}
//Localidade � obrigat�rio.
if ((idLocalidade == null) || (idLocalidade.equals(""))) {
httpServletRequest.setAttribute("nomeCampo","idLocalidade");
throw new ActionServletException("atencao.localidade_nao_informada");
}else if (Util.validarValorNaoNumerico(idLocalidade)){
//Localidade n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","idLocalidade");
throw new ActionServletException("atencao.nao.numerico",
null,"Localidade");
} else {
verificaExistenciaIdLocalidade(idLocalidade, fachada, httpServletRequest);
}
// O grupo de faturamento � obrigat�rio.
if ((idFaturamentoGrupo == null)
|| (idFaturamentoGrupo.equals(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO))) {
httpServletRequest.setAttribute("nomeCampo","faturamentoGrupo");
throw new ActionServletException(
"atencao.faturamento_grupo_nao_informado");
}
// O leiturista � obrigat�rio: funcion�rio ou cliente
if (idLeiturista == null || idLeiturista.equals(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO)){
httpServletRequest.setAttribute("nomeCampo","leiturista");
throw new ActionServletException("atencao.leiturista_tipo_nao_informado");
}
//[FS0010] Verificar inexist�ncia de alguma quadra
if (quadrasAdicionar == null || quadrasAdicionar.length == 0){
throw new ActionServletException(
"atencao.quadras.informar");
}
}
private void verificaExistenciaIdLocalidade(String idDigitadoEnterLocalidade,
Fachada fachada,HttpServletRequest httpServletRequest) {
//Verifica se o c�digo da localidade foi digitado
if ((idDigitadoEnterLocalidade != null &&
!idDigitadoEnterLocalidade.toString().trim().equalsIgnoreCase(""))) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
if (idDigitadoEnterLocalidade != null
&& !idDigitadoEnterLocalidade.toString().trim().equalsIgnoreCase("")) {
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, new Integer(idDigitadoEnterLocalidade)));
}
Collection<Localidade> localidades = fachada.pesquisar(
filtroLocalidade, Localidade.class.getName());
if (localidades == null || localidades.isEmpty()) {
//a localidade n�o foi encontrada
//Setor Comercial n�o existe para esta localidade
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
throw new ActionServletException(
"atencao.setor_comercial_nao_existe");
}
}
}
}