package gcom.gui.micromedicao.leitura;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.FiltroCliente;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
import gcom.cadastro.sistemaparametro.SistemaParametro;
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.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;
/**
* Descri��o da classe
*
* @author Thiago Ten�rio e Thiago Nascimento
* @date 30/10/2006
*/
public class ExibirAtualizarLeituristaAction extends GcomAction {
/**
* [UC0589] Manter Leiturista
*
* Este caso de uso permite alterar os dados do leiturista
*
* @author Thiago Ten�rio e Thiago Nascimento
* @date 31/10/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("atualizarLeiturista");
HttpSession sessao = httpServletRequest.getSession(false);
AtualizarLeituristaActionForm form = (AtualizarLeituristaActionForm) actionForm;
Integer id = null;
Leiturista leiturista = null;
Fachada fachada = Fachada.getInstancia();
//Usu�rio
if (form.getLoginUsuario() != null &&
!form.getLoginUsuario().equals("")) {
getUsuario(form, fachada,
form.getLoginUsuario(), sessao);
}
if (httpServletRequest.getParameter("idRegistroAtualizacao") != null
&& !httpServletRequest.getParameter("idRegistroAtualizacao").toString().trim().equals("")) {
id = new Integer(httpServletRequest.getParameter("idRegistroAtualizacao").toString());
if(id!=null){
leiturista = this.buscarLeiturista(id,fachada);
this.exibirDadosLeiturista(form,leiturista,sessao);
}
}
if (leiturista == null) {
leiturista = (Leiturista) sessao.getAttribute("leiturista");
exibirDadosLeiturista(form, leiturista,sessao);
}
// Bloquear o campo Empresa quando a empresa do usuario nao seja a empresa do sistema
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
if (usuario.getEmpresa() == null) {
throw new ActionServletException("atencao.pesquisa_inexistente", null, "Empresa do usu�rio logado.");
}
if (!usuario.getEmpresa().getDescricao().equals(sistemaParametro.getNomeAbreviadoEmpresa())) {
sessao.setAttribute("bloquearEmpresa", true);
form.setEmpresaID(usuario.getEmpresa().getId().toString());
}
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,
Empresa.class.getName());
sessao.setAttribute("colecaoEmpresa", colecaoEmpresa);
// Desfazer
if (httpServletRequest.getParameter("desfazer") != null
&& httpServletRequest.getParameter("desfazer")
.equalsIgnoreCase("S")) {
if (sessao.getAttribute("leiturista") != null) {
leiturista = (Leiturista)sessao.getAttribute("leiturista");
}else{
leiturista = this.buscarLeiturista(new Integer(form.getId()),fachada);
}
if(leiturista!=null){
this.exibirDadosLeiturista(form,leiturista,sessao);
sessao.setAttribute("leiturista", leiturista);
}
}else{
if ((form.getIdCliente() != null && !form.getIdCliente().trim().equals(""))) {
this.buscarCliente(form,fachada,httpServletRequest);
}
if(form.getIdFuncionario() != null && !form.getIdFuncionario().trim().equals("")){
this.buscarFuncionario(form,fachada,httpServletRequest);
}
if (sessao.getAttribute("leiturista") == null) {
if(leiturista==null){
leiturista = this.buscarLeiturista(new Integer(form.getId()),fachada);
}
sessao.setAttribute("leiturista", leiturista);
}
}
return retorno;
}
/**
*
* Metodo auxiliar para preencher o form com os valores do leiturista
*
* @param form
* @param id
* @param fachada
*/
private void exibirDadosLeiturista(AtualizarLeituristaActionForm form, Leiturista leiturista,HttpSession sessao){
form.setDdd(leiturista.getCodigoDDD());
if(leiturista.getCliente()!=null){
form.setDescricaoCliente(leiturista.getCliente().getNome());
form.setIdCliente(leiturista.getCliente().getId().toString());
}else{
form.setDescricaoCliente("");
form.setIdCliente("");
}
if(leiturista.getFuncionario()!=null){
form.setDescricaoFuncionario(leiturista.getFuncionario().getNome());
form.setIdFuncionario(leiturista.getFuncionario().getId().toString());
}else{
form.setDescricaoFuncionario("");
form.setIdFuncionario("");
}
form.setEmpresaID(leiturista.getEmpresa().getId().toString());
form.setId(leiturista.getId().toString());
form.setNumeroImei(leiturista.getNumeroImei());
form.setTelefone(leiturista.getNumeroFone());
form.setIndicadorUso(leiturista.getIndicadorUso().toString());
if ( leiturista.getUsuario() != null ){
// Filtra Usuario
if(form.getLoginUsuario() != null && !form.getLoginUsuario().equals("") &&
leiturista.getUsuario() != null && !leiturista.getUsuario().getLogin().equals(form.getLoginUsuario())){
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ComparacaoTexto(FiltroUsuario.LOGIN, form.getLoginUsuario() ) );
// Recupera Usu�rio
Collection<Usuario> colecaoUsuario = Fachada.getInstancia().pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuario = colecaoUsuario.iterator().next();
form.setLoginUsuario( usuario.getLogin() );
form.setNomeUsuario( usuario.getNomeUsuario() );
sessao.setAttribute("usuarioEncontrado","SIM");
}else{
form.setLoginUsuario( "" );
form.setNomeUsuario( "USUARIO INEXISTENTE" );
sessao.removeAttribute("usuarioEncontrado");
}
}else{
Usuario usuario = leiturista.getUsuario();
form.setLoginUsuario( usuario.getLogin() );
form.setNomeUsuario( usuario.getNomeUsuario() );
sessao.setAttribute("usuarioEncontrado","SIM");
}
}
}
/**
*
* M�todo Auxiliar para buscar os dados do cliente
*
* @param form
* @param fachada
* @param httpServletRequest
*/
private void buscarCliente(AtualizarLeituristaActionForm form , Fachada fachada, HttpServletRequest httpServletRequest){
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro(new ParametroSimples(
FiltroCliente.ID, form.getIdCliente()));
Collection colecaoCliente = fachada.pesquisar(filtroCliente,
Cliente.class.getName());
if (colecaoCliente != null && !colecaoCliente.isEmpty()) {
Cliente cliente = (Cliente) colecaoCliente.iterator().next();
form.setIdCliente(cliente.getId().toString());
form.setDescricaoCliente(cliente.getNome());
} else {
httpServletRequest.setAttribute("clienteEncontrado",
"exception");
form.setIdCliente("");
form.setDescricaoCliente("CLIENTE INEXISTENTE");
}
}
/**
*
* M�todo auxilixar para buscar os dados do funcion�rio
*
* @param form
* @param fachada
* @param httpServletRequest
*/
private void buscarFuncionario(AtualizarLeituristaActionForm form , Fachada fachada, HttpServletRequest httpServletRequest){
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(
FiltroFuncionario.ID, form.getIdFuncionario()));
Collection colecaoFuncionario = fachada.pesquisar(
filtroFuncionario, Funcionario.class.getName());
if (colecaoFuncionario != null && !colecaoFuncionario.isEmpty()) {
Funcionario funcionario = (Funcionario) colecaoFuncionario
.iterator().next();
form.setIdFuncionario(funcionario.getId().toString());
form.setDescricaoFuncionario(funcionario.getNome());
} else {
httpServletRequest.setAttribute("funcionarioEncontrado",
"exception");
form.setIdFuncionario("");
form.setDescricaoFuncionario("FUNCIONARIO INEXISTENTE");
}
}
/**
*
* M�todo auxiliar para buscar um Leiturista
*
* @param id
* @param fachada
* @return
*/
private Leiturista buscarLeiturista(Integer id, Fachada fachada){
Leiturista leiturista = null;
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.USUARIO);
filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.ID,id));
Collection colecao = fachada.pesquisar(filtroLeiturista,Leiturista.class.getName());
if(colecao!=null && !colecao.isEmpty()){
leiturista = (Leiturista)colecao.iterator().next();
}
return leiturista;
}
/**
* Recupera o Usu�rio
*
* @author Bruno Barros
* @date 11/12/2006
*
* @param atualizarLeituristaActionForm
* @param fachada
* @param idUsuario
* @return Descri��o da Unidade Filtrada
*/
private void getUsuario(AtualizarLeituristaActionForm atualizarLeituristaActionForm,
Fachada fachada, String idUsuario, HttpSession sessao) {
// Filtra Usuario
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ComparacaoTexto(FiltroUsuario.LOGIN, idUsuario));
// Recupera Usu�rio
Collection<Usuario> colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuario = colecaoUsuario.iterator().next();
sessao.setAttribute("usuarioEncontrado","true");
atualizarLeituristaActionForm.setNomeUsuario(usuario.getNomeUsuario());
} else {
sessao.removeAttribute("usuarioEncontrado");
atualizarLeituristaActionForm.setLoginUsuario("");
atualizarLeituristaActionForm.setNomeUsuario("Usu�rio Inexistente");
}
}
}