package gcom.gui.micromedicao.leitura;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.funcionario.Funcionario;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.micromedicao.leitura.AtualizarLeituristaActionForm;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.Leiturista;
import gcom.seguranca.acesso.usuario.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ParametroSimples;
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 AtualizarLeituristaAction 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);
AtualizarLeituristaActionForm form = (AtualizarLeituristaActionForm) actionForm;
Leiturista leiturista = (Leiturista) sessao.getAttribute("leiturista");
// Validar se IMEI possui 15 caracteres
if (form.getNumeroImei() != null && form.getNumeroImei().toString().length() != 15) {
throw new ActionServletException("atencao.imei.invalido");
}
// Validar se IMEI j� est� cadastrado
if (form.getNumeroImei() != null && !form.getNumeroImei().equals(leiturista.getNumeroImei())) {
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.USUARIO);
filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.IMEI, form.getNumeroImei()));
Collection pesquisa = fachada.pesquisar(filtroLeiturista, Leiturista.class.getName());
if (pesquisa != null && pesquisa.size() > 0) {
Leiturista l = (Leiturista) Util.retonarObjetoDeColecao(pesquisa);
String nomeLeiturista = l.getId().toString();
if(l.getCliente() != null){
nomeLeiturista = l.getCliente().getNome();
}else if(l.getFuncionario() != null){
nomeLeiturista = l.getFuncionario().getNome();
}else if(l.getUsuario() != null){
nomeLeiturista = l.getUsuario().getNomeUsuario();
}
throw new ActionServletException("atencao.imei.ja.cadastrado", null, nomeLeiturista);
}
}
if(form.getIdCliente()!=null && !form.getIdCliente().trim().equals("")){
// Cliente
Cliente cliente = new Cliente();
cliente.setId(new Integer(form.getIdCliente()));
leiturista.setCliente(cliente);
leiturista.setFuncionario(null);
}else if(form.getIdFuncionario()!=null && !form.getIdFuncionario().trim().equals("")){
// Funcionario
Funcionario funcionario = new Funcionario();
funcionario.setId(new Integer(form
.getIdFuncionario()));
leiturista.setFuncionario(funcionario);
leiturista.setCliente(null);
}else{
//Erro Informar um cliente ou funcionario
throw new ActionServletException("atencao.cliente_ou_funcionario");
}
leiturista.setCodigoDDD(form.getDdd());
leiturista.setNumeroFone(form.getTelefone());
leiturista.setNumeroImei(form.getNumeroImei());
//Indicador de uso
leiturista.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
// Empresa
Empresa empresa = null;
if (form
.getEmpresaID() != null && !form
.getEmpresaID().equals("") && !form
.getEmpresaID().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
empresa = new Empresa();
empresa.setId(new Integer(form
.getEmpresaID()));
}else{
throw new ActionServletException("atencao.empresa_leituristica_nao_informado");
}
//Setando
leiturista.setEmpresa(empresa);
// Usuario
if ( form.getLoginUsuario() != null && !form.getLoginUsuario().equals( "" ) ){
// Filtra Usuario
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ComparacaoTexto(FiltroUsuario.LOGIN, form.getLoginUsuario() ) );
// Recupera Usu�rio
Collection<Usuario> colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuario = colecaoUsuario.iterator().next();
leiturista.setUsuario( usuario );
}
}else{
leiturista.setUsuario( null );
}
leiturista.setIndicadorUso(new Short(form.getIndicadorUso()));
fachada.atualizarLeiturista(leiturista);
montarPaginaSucesso(httpServletRequest, "Leiturista de c�digo "
+ leiturista.getId().toString() + " atualizada com sucesso.",
"Realizar outra Manuten��o de Leiturista ",
"exibirFiltrarLeituristaAction.do?menu=sim");
return retorno;
}
}