package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import br.com.centralit.citcorpore.bean.JornadaTrabalhoDTO;
import br.com.centralit.citcorpore.integracao.CalendarioDao;
import br.com.centralit.citcorpore.integracao.JornadaTrabalhoDao;
import br.com.centralit.citcorpore.util.Util;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings("rawtypes")
public class JornadaTrabalhoServiceEjb extends CrudServiceImpl implements JornadaTrabalhoService {
private JornadaTrabalhoDao dao;
@Override
protected JornadaTrabalhoDao getDao() {
if (dao == null) {
dao = new JornadaTrabalhoDao();
}
return dao;
}
@Override
protected void validaCreate(final Object arg0) throws Exception {
this.calculaCargaHoraria((JornadaTrabalhoDTO) arg0);
}
@Override
protected void validaUpdate(final Object arg0) throws Exception {
this.calculaCargaHoraria((JornadaTrabalhoDTO) arg0);
}
protected void calculaCargaHoraria(final JornadaTrabalhoDTO jornadaTrabalhoDto) throws Exception {
double cargaHoraria = 0.0;
if (jornadaTrabalhoDto.getInicio1() != null && jornadaTrabalhoDto.getInicio1().trim().length() > 0) {
if (jornadaTrabalhoDto.getTermino1() == null) {
throw new Exception(this.i18nMessage("jornadaTrabalho.horaTerminoIntervaloUm"));
}
final String jornadaInicio = this.tratarDoisPontos(jornadaTrabalhoDto.getInicio1());
final String jornadaTermino = this.tratarDoisPontos(jornadaTrabalhoDto.getTermino1());
cargaHoraria += Util.calculaDuracao(jornadaInicio, jornadaTermino);
}
if (jornadaTrabalhoDto.getInicio2() != null && jornadaTrabalhoDto.getInicio2().trim().length() > 0) {
if (jornadaTrabalhoDto.getTermino2() == null) {
throw new Exception(this.i18nMessage("jornadaTrabalho.horaTerminoIntervaloDois"));
}
final String jornadaInicio = this.tratarDoisPontos(jornadaTrabalhoDto.getInicio2());
final String jornadaTermino = this.tratarDoisPontos(jornadaTrabalhoDto.getTermino2());
cargaHoraria += Util.calculaDuracao(jornadaInicio, jornadaTermino);
}
if (jornadaTrabalhoDto.getInicio3() != null && jornadaTrabalhoDto.getInicio3().trim().length() > 0) {
if (jornadaTrabalhoDto.getTermino3() == null) {
throw new Exception(this.i18nMessage("jornadaTrabalho.horaTerminoIntervaloTres"));
}
final String jornadaInicio = this.tratarDoisPontos(jornadaTrabalhoDto.getInicio3());
final String jornadaTermino = this.tratarDoisPontos(jornadaTrabalhoDto.getTermino3());
cargaHoraria += Util.calculaDuracao(jornadaInicio, jornadaTermino);
}
if (jornadaTrabalhoDto.getInicio4() != null && jornadaTrabalhoDto.getInicio4().trim().length() > 0) {
if (jornadaTrabalhoDto.getTermino4() == null) {
throw new Exception(this.i18nMessage("jornadaTrabalho.horaTerminoIntervaloQuatro"));
}
final String jornadaInicio = this.tratarDoisPontos(jornadaTrabalhoDto.getInicio4());
final String jornadaTermino = this.tratarDoisPontos(jornadaTrabalhoDto.getTermino4());
cargaHoraria += Util.calculaDuracao(jornadaInicio, jornadaTermino);
}
if (jornadaTrabalhoDto.getInicio5() != null && jornadaTrabalhoDto.getInicio5().trim().length() > 0) {
if (jornadaTrabalhoDto.getTermino5() == null) {
throw new Exception(this.i18nMessage("jornadaTrabalho.horaTerminoIntervaloCinco"));
}
final String jornadaInicio = this.tratarDoisPontos(jornadaTrabalhoDto.getInicio5());
final String jornadaTermino = this.tratarDoisPontos(jornadaTrabalhoDto.getTermino5());
cargaHoraria += Util.calculaDuracao(jornadaInicio, jornadaTermino);
}
jornadaTrabalhoDto.setCargaHoraria(Util.getHoraFmtStr(cargaHoraria));
}
public String tratarDoisPontos(String hora) throws Exception {
String[] arrayHora;
arrayHora = hora.split(":");
hora = arrayHora[0] + arrayHora[1];
return hora;
}
@Override
public String deletarJornada(final IDto model) throws ServiceException, Exception {
String resp = "";
final JornadaTrabalhoDTO jornadaTrabalhoDTO = (JornadaTrabalhoDTO) model;
final CalendarioDao calendarioDao = new CalendarioDao();
final JornadaTrabalhoDao jornadaTrabalhoDao = new JornadaTrabalhoDao();
try {
if (calendarioDao.verificaJornada(jornadaTrabalhoDTO.getIdJornada())) {
resp = this.i18nMessage("citcorpore.comum.registroNaoPodeSerExcluido");
} else {
jornadaTrabalhoDTO.setDataFim(UtilDatas.getDataAtual());
jornadaTrabalhoDao.updateNotNull(jornadaTrabalhoDTO);
resp = this.i18nMessage("MSG07");
}
} catch (final Exception e) {
e.printStackTrace();
}
return resp;
}
@Override
public Collection listarJornadasAtivas() throws Exception {
return this.getDao().listarJornadasAtivas();
}
@Override
public boolean verificaJornadaExistente(final JornadaTrabalhoDTO jornadaTrabalho) throws Exception {
return this.getDao().verificaJornadaExistente(jornadaTrabalho);
}
}