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();
}
}
}
}