/**
*
*/
package br.com.centralit.citcorpore.ajaxForms;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.CalendarioDTO;
import br.com.centralit.citcorpore.bean.ExcecaoCalendarioDTO;
import br.com.centralit.citcorpore.bean.JornadaTrabalhoDTO;
import br.com.centralit.citcorpore.negocio.CalendarioService;
import br.com.centralit.citcorpore.negocio.ExcecaoCalendarioService;
import br.com.centralit.citcorpore.negocio.JornadaTrabalhoService;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.WebUtil;
/**
* @author breno.guimaraes
*
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class Calendario extends AjaxFormAction {
private JornadaTrabalhoService jornadaTrabalhoService;
private JornadaTrabalhoService getJornadaTrabalhoService() throws Exception {
if (jornadaTrabalhoService == null) {
jornadaTrabalhoService = (JornadaTrabalhoService) ServiceLocator.getInstance().getService(JornadaTrabalhoService.class, null);
}
return jornadaTrabalhoService;
}
private CalendarioService calendarioService;
private CalendarioService getCalendarioService() throws Exception {
if (calendarioService == null) {
calendarioService = (CalendarioService) ServiceLocator.getInstance().getService(CalendarioService.class, null);
}
return calendarioService;
}
private ExcecaoCalendarioService excecaoCalendarioService;
private ExcecaoCalendarioService getExcecaoCalendarioService() throws Exception {
if (excecaoCalendarioService == null) {
excecaoCalendarioService = (ExcecaoCalendarioService) ServiceLocator.getInstance().getService(ExcecaoCalendarioService.class, null);
}
return excecaoCalendarioService;
}
@Override
public Class<CalendarioDTO> getBeanClass() {
return CalendarioDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
preencheCombos(document, request);
String permiteDataInferiorHoje = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.PermiteDataInferiorHoje, "N");
HTMLForm form = document.getForm("form");
CalendarioDTO calendario = (CalendarioDTO) document.getBean();
calendario.setPermiteDataInferiorHoje(permiteDataInferiorHoje);
form.setValues(calendario);
}
private void preencheCombos(DocumentHTML document, HttpServletRequest request) throws LogicException, ServiceException, Exception {
Collection<JornadaTrabalhoDTO> jornadas = getJornadaTrabalhoService().listarJornadasAtivas();
geraCombo(document, "idJornadaSeg", jornadas, request);
geraCombo(document, "idJornadaTer", jornadas, request);
geraCombo(document, "idJornadaQua", jornadas, request);
geraCombo(document, "idJornadaQui", jornadas, request);
geraCombo(document, "idJornadaSex", jornadas, request);
geraCombo(document, "idJornadaSab", jornadas, request);
geraCombo(document, "idJornadaDom", jornadas, request);
geraCombo(document, "idjornadaexcecao", jornadas, request);
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CalendarioDTO calendario = (CalendarioDTO) document.getBean();
calendario = (CalendarioDTO) getCalendarioService().restore(calendario);
HTMLForm form = document.getForm("form");
Collection<ExcecaoCalendarioDTO> excecoes = (Collection<ExcecaoCalendarioDTO>) getExcecaoCalendarioService().findByIdCalendario(calendario.getIdCalendario());
form.clear();
preencheCombos(document, request);
String permiteDataInferiorHoje = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.PermiteDataInferiorHoje, "N");
calendario.setPermiteDataInferiorHoje(permiteDataInferiorHoje);
form.setValues(calendario);
if (excecoes != null) {
String serializado = WebUtil.serializeObjects(excecoes, WebUtil.getLanguage(request));
document.executeScript("restaurarTabelaExcecoes('" + serializado + "')");
} else {
document.executeScript("clearTabExecoes()");
}
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CalendarioDTO calendario = (CalendarioDTO) document.getBean();
List<ExcecaoCalendarioDTO> listaItens = (List) WebUtil.deserializeCollectionFromRequest(ExcecaoCalendarioDTO.class, "listaExecoesSerializada", request);
if (calendario.getConsideraFeriados() == null || calendario.getDescricao() == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.camposObrigatorios"));
return;
}
if (calendario.getIdCalendario() == null) {
if (this.getCalendarioService().verificaSeExisteCalendario(calendario)) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado"));
return;
}
getCalendarioService().create(calendario);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
if (this.getCalendarioService().verificaSeExisteCalendario(calendario)) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado"));
return;
}
getCalendarioService().update(calendario);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
getExcecaoCalendarioService().deleteByIdCalendario(calendario.getIdCalendario());
if (listaItens != null) {
for (ExcecaoCalendarioDTO e : listaItens) {
e.setIdCalendario(calendario.getIdCalendario());
getExcecaoCalendarioService().create(e);
}
}
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("tabExcecoes.limpaLista();");
document.executeScript("setConsideraFeriados();");
}
/**
* @author euler.ramos
* @param idCalendario
* @return
* @throws Exception
*/
public void excluir(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CalendarioDTO calendario = (CalendarioDTO) document.getBean();
if ((calendario.getIdCalendario() != null) && (calendario.getIdCalendario().intValue() > 0)) {
StringBuilder resposta = new StringBuilder();
resposta.append(this.getCalendarioService().verificaSePermiteExcluir(document, request, calendario));
if (resposta.toString().equalsIgnoreCase("excluir")) {
this.getExcecaoCalendarioService().deleteByIdCalendario(calendario.getIdCalendario());
this.getCalendarioService().delete(calendario);
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("tabExcecoes.limpaLista();");
} else {
document.alert(resposta.toString());
}
}
}
private void geraCombo(DocumentHTML document, String idComponente, Collection<JornadaTrabalhoDTO> lista, HttpServletRequest request) throws Exception {
HTMLSelect comboTipoDemanda = (HTMLSelect) document.getSelectById(idComponente);
comboTipoDemanda.removeAllOptions();
comboTipoDemanda.addOption(String.valueOf(0), UtilI18N.internacionaliza(request, "calendario.naoHaJornadaTrabalho"));
if (lista != null) {
for (JornadaTrabalhoDTO j : lista) {
comboTipoDemanda.addOption(j.getIdJornada().toString(), StringEscapeUtils.escapeJavaScript(j.getDescricao()));
}
}
}
}