Subversion Repositories Integrator Subversion

Rev

Rev 572 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;

import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;

import br.com.ec.controller.util.IpUtil;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Ponto;
import br.com.ec.domain.model.TransferenciaProduto;
import br.com.ec.domain.service.email.impl.GerenciadorEmailImpl;
import br.com.ec.domain.service.ponto.PontoService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;

@Named
@Scope("view")
public class PontoBean extends AbstractBean<Ponto> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private String senhaUsuario;
       
        private PontoService pontoService;
       
//      @Autowired
//    private HttpServletRequest request;
       
        @Inject
        public PontoBean(PontoService pontoService) {
                this.pontoService = pontoService;
        }
       
        @Override
        public void preCarregamento() {
                limparEntidade();
        }
       
        @Override
        public void limparEntidade() {
                entidade = new Ponto();
                setSenhaUsuario("");
        }

        @Override
        public GenericService<Ponto> getService() {
                return pontoService;
        }
       
        @Override
        public Ponto getEntidade() {
                return entidade;
        }

        @Override
        public Ponto getId() {
                return getEntidade();
        }
       
        public String getSenhaUsuario() {
                return senhaUsuario;
        }
        public void setSenhaUsuario(String senhaUsuario) {
                this.senhaUsuario = senhaUsuario;
        }
       
        /***************************************************************/
       
        public void iniciarPonto(final Long lojaSequencial) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setEntidade(pontoService.consultarPonto(DataUtils.getDataAtual(), senhaUsuario, lojaSequencial));
                        }
                });
        }
       
        public void baterPontoInicio() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraPontoInicio(DataUtils.getDataAtual());
                                getEntidade().setIpPontoInicio(recuperarIpUsuario());
//                              verificarSeIpIgualLoja(recuperarIpUsuario());
                                baterPonto();
                        }
                });
        }
       
        public void excluirPontoInicio() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraPontoInicio(null);
                                baterPonto();
                        }
                });
        }
       
        public void baterPontoFim() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraPontoFim(DataUtils.getDataAtual());
                                getEntidade().setIpPontoFim(recuperarIpUsuario());
//                              verificarSeIpIgualLoja(recuperarIpUsuario());
                                baterPonto();
                        }
                });
        }
       
        public void excluirPontoFim() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraPontoFim(null);
                                baterPonto();
                        }
                });
        }
       
        public void baterIntervaloInicio() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraIntervaloInicio(DataUtils.getDataAtual());
                                getEntidade().setIpPontoIntervaloInicio(recuperarIpUsuario());
//                              verificarSeIpIgualLoja(recuperarIpUsuario());
                                baterPonto();
                        }
                });
        }
       
        public void excluirIntervaloInicio() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraIntervaloInicio(null);
                                baterPonto();
                        }
                });
        }
       
        public void baterIntervaloFim() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraIntervaloFim(DataUtils.getDataAtual());
                                getEntidade().setIpPontoIntervaloFim(recuperarIpUsuario());
//                              verificarSeIpIgualLoja(recuperarIpUsuario());
                                baterPonto();
                        }
                });
        }
       
        public void excluirIntervaloFim() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setDataHoraIntervaloFim(null);
                                baterPonto();
                        }
                });
        }
       
        private String recuperarIpUsuario() {
                HttpServletRequest request = (HttpServletRequest) getContext().getExternalContext().getRequest();
                return IpUtil.getClientIp(request);
        }
       
        private void baterPonto() {
                pontoService.alterar(getEntidade());
                limparEntidade();
                LancadorMensagem.lancarSucesso("PONTO REALIZADO COM SUCESSO!");
        }

        private void verificarSeIpIgualLoja(String ipUsuario) {
                if (VerificadorUtil.naoEstaNuloOuVazio(getEntidade().getLoja().getIpInternet())) {
                        if (!ipUsuario.contains(getEntidade().getLoja().getIpInternet())) {
                                StringBuilder conteudo = new StringBuilder();
                                conteudo.append(getEntidade().getNomeDaPessoa() + "\n");
                                conteudo.append("LOJA: " + getEntidade().getLoja().getDescricao() + "\n");
                                conteudo.append("DATA: " + DataUtils.converterDataComHorarioParaString(DataUtils.getDataAtual()) + "\n");
                                conteudo.append("\n\n");
                                conteudo.toString();
                               
                                new GerenciadorEmailImpl()
                                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_GESTAO)
                                        .comAssunto("ESPAƇO CASE - PONTO SUSPEITO DE " + getEntidade().getNomeDaPessoa())
                                        .comConteudo(conteudo.toString())
                                        .enviar();
                        }
                }
        }
       
}