package br.com.centralit.citcorpore.ajaxForms;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.citcorpore.bean.LimiteAprovacaoAutoridadeDTO;
import br.com.centralit.citcorpore.bean.LimiteAprovacaoDTO;
import br.com.centralit.citcorpore.bean.LimiteAprovacaoProcessoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bean.ValorLimiteAprovacaoDTO;
import br.com.centralit.citcorpore.negocio.LimiteAprovacaoAutoridadeService;
import br.com.centralit.citcorpore.negocio.LimiteAprovacaoProcessoService;
import br.com.centralit.citcorpore.negocio.LimiteAprovacaoService;
import br.com.centralit.citcorpore.negocio.NivelAutoridadeService;
import br.com.centralit.citcorpore.negocio.ProcessoNegocioService;
import br.com.centralit.citcorpore.negocio.ValorLimiteAprovacaoService;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilI18N;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class LimiteAprovacao extends AjaxFormAction {
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
document.executeScript("GRID_VALORES.deleteAllRows();");
NivelAutoridadeService nivelAutoridadeService = (NivelAutoridadeService) ServiceLocator.getInstance().getService(NivelAutoridadeService.class, WebUtil.getUsuarioSistema(request));
request.setAttribute("colAutoridades", nivelAutoridadeService.list());
ProcessoNegocioService processoNegocioService = (ProcessoNegocioService) ServiceLocator.getInstance().getService(ProcessoNegocioService.class, WebUtil.getUsuarioSistema(request));
request.setAttribute("colProcessos", processoNegocioService.list());
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
LimiteAprovacaoDTO limiteAprovacaoDto = (LimiteAprovacaoDTO) document.getBean();
LimiteAprovacaoService limiteAprovacaoService = (LimiteAprovacaoService) ServiceLocator.getInstance().getService(LimiteAprovacaoService.class, null);
if (limiteAprovacaoDto == null || limiteAprovacaoDto.getIdLimiteAprovacao() == null)
return;
limiteAprovacaoDto = (LimiteAprovacaoDTO) limiteAprovacaoService.restore(limiteAprovacaoDto);
if (limiteAprovacaoDto != null) {
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(limiteAprovacaoDto);
ValorLimiteAprovacaoService valorLimiteAprovacaoService = (ValorLimiteAprovacaoService) ServiceLocator.getInstance().getService(ValorLimiteAprovacaoService.class, null);
Collection<ValorLimiteAprovacaoDTO> colValores = valorLimiteAprovacaoService.findByIdLimiteAprovacao(limiteAprovacaoDto.getIdLimiteAprovacao());
document.executeScript("GRID_VALORES.deleteAllRows();");
if (colValores != null) {
int i = 0;
for (ValorLimiteAprovacaoDTO valorDto : colValores) {
i++;
document.executeScript("GRID_VALORES.addRow()");
valorDto.setSequencia(i);
document.executeScript("seqValor = NumberUtil.zerosAEsquerda(" + i + ",5)");
document.executeScript("exibeValor('" + br.com.citframework.util.WebUtil.serializeObject(valorDto, WebUtil.getLanguage(request)) + "')");
}
}
LimiteAprovacaoProcessoService limiteAprovacaoProcessoService = (LimiteAprovacaoProcessoService) ServiceLocator.getInstance().getService(LimiteAprovacaoProcessoService.class, null);
LimiteAprovacaoAutoridadeService limiteAprovacaoAutoridadeService = (LimiteAprovacaoAutoridadeService) ServiceLocator.getInstance().getService(LimiteAprovacaoAutoridadeService.class, null);
Collection<LimiteAprovacaoProcessoDTO> colProcessos = limiteAprovacaoProcessoService.findByIdLimiteAprovacao(limiteAprovacaoDto.getIdLimiteAprovacao());
Collection<LimiteAprovacaoAutoridadeDTO> colAutoridades = limiteAprovacaoAutoridadeService.findByIdLimiteAprovacao(limiteAprovacaoDto.getIdLimiteAprovacao());
document.executeScript("clearAllCheckBoxIdProcessoNegocio()");
document.executeScript("clearAllCheckBoxIdNivelAutoridade()");
if (colProcessos != null && colProcessos.size() > 0) {
Integer[] idProcessoNegocio = new Integer[colProcessos.size()];
int i = 0;
for (LimiteAprovacaoProcessoDTO limiteDto: colProcessos) {
idProcessoNegocio[i] = new Integer(limiteDto.getIdProcessoNegocio());
i++;
}
limiteAprovacaoDto.setIdProcessoNegocio(idProcessoNegocio);
}
if (colAutoridades != null && colAutoridades.size() > 0) {
Integer[] idNivelAutoridade = new Integer[colAutoridades.size()];
int i = 0;
for (LimiteAprovacaoAutoridadeDTO limiteDto: colAutoridades) {
idNivelAutoridade[i] = new Integer(limiteDto.getIdNivelAutoridade());
i++;
}
limiteAprovacaoDto.setIdNivelAutoridade(idNivelAutoridade);
}
if (limiteAprovacaoDto.getIdProcessoNegocio() != null){
for (int i = 0; i < limiteAprovacaoDto.getIdProcessoNegocio().length; i++) {
document.executeScript("selectCheckBoxIdProcessoNegocio('" + limiteAprovacaoDto.getIdProcessoNegocio()[i] + "')");
}
}
if (limiteAprovacaoDto.getIdNivelAutoridade() != null){
for (int i = 0; i < limiteAprovacaoDto.getIdNivelAutoridade().length; i++) {
document.executeScript("selectCheckBoxIdNivelAutoridade('" + limiteAprovacaoDto.getIdNivelAutoridade()[i] + "')");
}
}
}
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
LimiteAprovacaoDTO limiteAprovacaoDto = (LimiteAprovacaoDTO) document.getBean();
LimiteAprovacaoService limiteAprovacaoService = (LimiteAprovacaoService) ServiceLocator.getInstance().getService(LimiteAprovacaoService.class, null);
limiteAprovacaoDto.setColValores(br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(ValorLimiteAprovacaoDTO.class, "colValores_Serialize", request));
if (limiteAprovacaoDto.getIdLimiteAprovacao() == null) {
limiteAprovacaoService.create(limiteAprovacaoDto);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
limiteAprovacaoService.update(limiteAprovacaoDto);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.setBean(new LimiteAprovacaoDTO());
load(document, request, response);
}
@Override
public Class getBeanClass() {
return LimiteAprovacaoDTO.class;
}
}