package br.com.centralit.citcorpore.ajaxForms;
import java.util.Calendar;
import java.util.Collection;
import javax.servlet.ServletOutputStream;
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.citcorpore.bean.ExportacaoContratosDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.ContratoService;
import br.com.centralit.citcorpore.negocio.ExportacaoContratosService;
import br.com.centralit.citcorpore.negocio.GrupoService;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class ExportacaoContratos extends AjaxFormAction {
public Class getBeanClass() {
return ExportacaoContratosDTO.class;
}
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.getSelectById("idContrato").removeAllOptions();
ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, WebUtil.getUsuarioSistema(request));
Collection colContratos = contratoService.listAtivos();
document.getSelectById("idContrato").addOption("",UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
document.getSelectById("idContrato").addOptions(colContratos, "idContrato", "numero", null);
GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, WebUtil.getUsuarioSistema(request));
Collection<GrupoDTO> colGrupos = grupoService.findGruposAtivos();
document.executeScript("$('#grupos').html('');");
document.executeScript("$('#grupos').append('<input type=\"checkbox\" name=\"selectTodosGrupos\" id=\"selectTodosGrupos\" value=\"all\"> " + UtilI18N.internacionaliza(request, "citcorpore.comum.selecionarTodos") + "<br/><br/>');");
document.executeScript("$('#grupos').append('<ul></ul>');");
for (GrupoDTO grupoDto : colGrupos) {
document.executeScript("$('#grupos ul').append('<li><input type=\"checkbox\" name=\"idGrupos\" id=\"idGrupos" + grupoDto.getIdGrupo() + "\" value=\"" + grupoDto.getIdGrupo() + "\"> " + grupoDto.getNome() + "</li>');");
}
ExportacaoContratosDTO exportacaoContratosDto = (ExportacaoContratosDTO) document.getBean();
if (exportacaoContratosDto != null && exportacaoContratosDto.getExport() != null && exportacaoContratosDto.getExport().equalsIgnoreCase("y")) {
downloadArquivo(document, request, response, exportacaoContratosDto);
}
}
public void downloadArquivo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, ExportacaoContratosDTO exportacaoContratosDto) throws Exception {
ExportacaoContratosService exportacaoContratosService = (ExportacaoContratosService) ServiceLocator.getInstance().getService(ExportacaoContratosService.class, WebUtil.getUsuarioSistema(request));
byte[] buffer;
Calendar c = Calendar.getInstance();
if (exportacaoContratosDto.getExportarCatalogoServico() == null) {
exportacaoContratosDto.setExportarCatalogoServico("y");
}
String xmlString = StringEscapeUtils.unescapeHtml(exportacaoContratosService.recuperaXmlTabelas(exportacaoContratosDto.getIdContrato(), exportacaoContratosDto.getIdGrupos(), exportacaoContratosDto.getExportarUnidades(), exportacaoContratosDto.getExportarAcordoNivelServico(), exportacaoContratosDto.getExportarCatalogoServico()));
if (!xmlString.equals("")) {
buffer = xmlString.getBytes("ISO-8859-1");
//buffer = xmlString.getBytes("UTF-8");
} else {
buffer = "<xml></xml>".getBytes();
}
response.setContentLength(buffer.length);
response.setContentType("text/xml");
//response.setHeader("Content-type","application/xhtml+xml");
response.setHeader("Content-Disposition", "attachment; filename=InfoContrato_" + UtilDatas.getDataAtual() + "_" + c.get(Calendar.HOUR_OF_DAY) + "h" + c.get(Calendar.MINUTE) + ".xml");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
}
public void atualizaGrupos(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception {
ExportacaoContratosDTO exportacaoContratosDto = (ExportacaoContratosDTO) document.getBean();
GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, WebUtil.getUsuarioSistema(request));
document.executeScript("$('#grupos').html('');");
document.executeScript("$('#grupos').append('<input type=\"checkbox\" name=\"selectTodosGrupos\" id=\"selectTodosGrupos\" value=\"all\"> " + UtilI18N.internacionaliza(request, "citcorpore.comum.selecionarTodos") + "<br/><br/>');");
if (exportacaoContratosDto != null && exportacaoContratosDto.getIdContrato() != null) {
Collection<GrupoDTO> colGrupos = grupoService.listGrupoAtivosByIdContrato(exportacaoContratosDto.getIdContrato());
if (colGrupos != null) {
document.executeScript("$('#grupos').append('<ul></ul>');");
for (GrupoDTO grupoDto : colGrupos) {
document.executeScript("$('#grupos ul').append('<li><input type=\"checkbox\" name=\"idGrupos\" id=\"idGrupos" + grupoDto.getIdGrupo() + "\" value=\"" + grupoDto.getIdGrupo() + "\"> " + grupoDto.getNome() + "</li>');");
}
} else {
document.executeScript("$('#grupos').html('" + UtilI18N.internacionaliza(request, "exportacaoContratos.nenhumGrupo") + "');");
}
} else {
Collection<GrupoDTO> colGrupos = grupoService.findGruposAtivos();
document.executeScript("$('#grupos').append('<ul></ul>');");
for (GrupoDTO grupoDto : colGrupos) {
document.executeScript("$('#grupos ul').append('<li><input type=\"checkbox\" name=\"idGrupos\" id=\"idGrupos" + grupoDto.getIdGrupo() + "\" value=\"" + grupoDto.getIdGrupo() + "\"> " + grupoDto.getNome() + "</li>');");
}
}
}
/* public void exportarDownload(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception {
document.executeScript("submitForm('formGetExport');");
document.executeScript("JANELA_AGUARDE_MENU.hide();");
}*/
}