package br.com.centralit.citcorpore.ajaxForms;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
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.ProdutoDTO;
import br.com.centralit.citcorpore.bean.UploadDTO;
import br.com.centralit.citcorpore.negocio.CategoriaProdutoService;
import br.com.centralit.citcorpore.negocio.ProdutoService;
import br.com.centralit.citcorpore.util.CriptoUtils;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.Util;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.centralit.citged.bean.ControleGEDDTO;
import br.com.centralit.citged.integracao.ControleGEDDao;
import br.com.centralit.citged.negocio.ControleGEDService;
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;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings("rawtypes")
public class Produto extends AjaxFormAction {
public void load(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
request.getSession(true).setAttribute("colUploadsGED", null);
}
@Override
public Class getBeanClass() {
return ProdutoDTO.class;
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
ProdutoDTO produtos = (ProdutoDTO) document.getBean();
ProdutoService produtosService = (ProdutoService) ServiceLocator.getInstance().getService(ProdutoService.class, null);
//if (produtos.getPrecoMercado() == null || produtos.getPrecoMercado().doubleValue() == 0)
// document.alert(UtilI18N.internacionaliza(request, "produto.precoMercado")+" "+UtilI18N.internacionaliza(request,("citcorpore.comum.naoInformado")));
if (produtos.getIdProduto() == null || produtos.getIdProduto() == 0) {
// Verificar se um DTO com o mesmo codigoProduto j� existe
if (produtos.getCodigoProduto() != null && produtos.getCodigoProduto().trim().length() > 0) {
List lista = (List) produtosService.validaNovoProduto(produtos);
if (lista != null && !lista.isEmpty() ) {
document.alert(UtilI18N.internacionaliza(request, "produto.produto.jaCadastrado") );
return;
}
}
produtosService.create(produtos);
this.gravarGed(document, request, produtos.getIdProduto());
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
produtosService.update(produtos);
this.gravarGed(document, request, produtos.getIdProduto());
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
HTMLForm form = document.getForm("form");
clear(document, request, response);
}
public void delete(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ProdutoDTO produtos = (ProdutoDTO) document.getBean();
ProdutoService produtosService = (ProdutoService) ServiceLocator
.getInstance().getService(ProdutoService.class,
WebUtil.getUsuarioSistema(request));
if (produtos.getIdProduto().intValue() > 0) {
produtosService.delete(produtos);
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
}
HTMLForm form = document.getForm("form");
form.clear();
request.getSession(true).setAttribute("colUploadsGED", null);
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
request.getSession(true).setAttribute("colUploadsGED", null);
document.executeScript("uploadAnexos.refresh()");
ProdutoDTO produtos = (ProdutoDTO) document.getBean();
ProdutoService produtosService = (ProdutoService) ServiceLocator
.getInstance().getService(ProdutoService.class, null);
produtos = (ProdutoDTO) produtosService.restore(produtos);
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(produtos);
document.executeScript("uploadAnexos.refresh()");
restaurarAnexos(request, produtos.getIdProduto());
}
protected void restaurarAnexos(HttpServletRequest request, Integer idCategoria) throws ServiceException, Exception {
ControleGEDService controleGedService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null);
Collection colAnexos = controleGedService.listByIdTabelaAndID(ControleGEDDTO.TABELA_PRODUTO, idCategoria);
Collection colAnexosUploadDTO = controleGedService.convertListControleGEDToUploadDTO(colAnexos);
request.getSession(true).setAttribute("colUploadsGED", colAnexosUploadDTO);
}
public void gravarGed(DocumentHTML document, HttpServletRequest request, Integer id) throws ServiceException, Exception{
CategoriaProdutoService categoriaService = (CategoriaProdutoService) ServiceLocator.getInstance().getService(CategoriaProdutoService.class, null);
ControleGEDService controleGEDService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null);
ControleGEDDao controleGEDDao = new ControleGEDDao();
String prontuarioGedInternoBancoDados = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInternoBD, "N");
if (!UtilStrings.isNotVazio(prontuarioGedInternoBancoDados)) {
prontuarioGedInternoBancoDados = "N";
}
String PRONTUARIO_GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedDiretorio, "/usr/local/gedCitsmart/");
String PRONTUARIO_GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno, "S");
Collection<UploadDTO> fotos = (Collection<UploadDTO>) request.getSession(true).getAttribute("colUploadsGED");
String pasta = controleGEDService.getProximaPastaArmazenar();
if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) {
pasta = controleGEDService.getProximaPastaArmazenar();
File fileDir = new File(PRONTUARIO_GED_DIRETORIO);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/1");
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/1/" + pasta);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
}
ControleGEDService controleGedService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null);
Collection colAnexos = controleGedService.listByIdTabelaAndID(ControleGEDDTO.TABELA_PRODUTO, id);
Collection colAnexosUploadDTO = controleGedService.convertListControleGEDToUploadDTO(colAnexos);
if(colAnexosUploadDTO != null) {
for (Iterator iterator = colAnexosUploadDTO.iterator(); iterator.hasNext();) {
UploadDTO object = (UploadDTO) iterator.next();
controleGedService.delete(object);
}
}
if (fotos != null && !fotos.isEmpty()) {
ControleGEDDTO controleGEDDTO = new ControleGEDDTO();
for (UploadDTO uploadDto : fotos) {
//if(uploadDto.getIdControleGED() == null || uploadDto.getIdControleGED() == 0) {
controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_PRODUTO);
controleGEDDTO.setId(id);
controleGEDDTO.setDataHora(UtilDatas.getDataAtual());
controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao());
controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile()));
controleGEDDTO.setPasta(pasta);
controleGEDDTO.setNomeArquivo(uploadDto.getNameFile());
controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO);
if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) {
try {
if (controleGEDDTO != null) {
File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/1/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "."
+ Util.getFileExtension(uploadDto.getNameFile()));
CriptoUtils.encryptFile(uploadDto.getPath(), PRONTUARIO_GED_DIRETORIO + "/1/" + pasta + "/" + controleGEDDTO.getIdControleGED()
+ ".ged", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA"));
arquivo.delete();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("N�o foi poss�vel encriptar o arquivo");
}
}
//}
}
}
}
public void clear(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{
request.getSession(true).setAttribute("colUploadsGED", null);
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("uploadAnexos.refresh()");
}
}