/**
* CentralIT - CITSmart
*/
package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
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.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.CategoriaServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.CategoriaServicoService;
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")
public class CategoriaServico extends AjaxFormAction {
UsuarioDTO usuario;
/**
* Inicializa os dados ao carregar a tela.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
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;
}
/*this.gerarComboCategoriaServicoSuperior(document);*/
}
/**
* Inclui um registro.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CategoriaServicoDTO categoriaServicoDTO = (CategoriaServicoDTO) document.getBean();
CategoriaServicoService categoriaServicoService = (CategoriaServicoService) ServiceLocator.getInstance().getService(CategoriaServicoService.class, null);
categoriaServicoDTO.setIdEmpresa(WebUtil.getIdEmpresa(request));
if (categoriaServicoDTO.getIdCategoriaServico() == null) {
categoriaServicoDTO.setDataInicio(UtilDatas.getDataAtual());
categoriaServicoDTO.setIdEmpresa(WebUtil.getIdEmpresa(request));
if (!categoriaServicoService.verificarSeCategoriaExiste(categoriaServicoDTO)) {
if(categoriaServicoDTO.getIdCategoriaServicoPai() != null){
Integer idCategoriaServico = 0;
idCategoriaServico = categoriaServicoDTO.getIdCategoriaServicoPai();
if(categoriaServicoDTO.getIdCategoriaServico() != null){
if(categoriaServicoDTO.getIdCategoriaServico() == idCategoriaServico.intValue()){
document.alert(UtilI18N.internacionaliza(request, "categoriaServico.registroPaiIgual"));
return;
}
}
}
String nomeConcatenado = categoriaServicoDTO.getNomeCategoriaServicoConcatenado() + categoriaServicoDTO.getNomeCategoriaServico();
categoriaServicoDTO.setNomeCategoriaServicoConcatenado(nomeConcatenado);
categoriaServicoService.create(categoriaServicoDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado"));
}
} else {
if(categoriaServicoDTO.getIdCategoriaServicoPai()!= null){
Integer idCategoriaServico = 0;
idCategoriaServico = categoriaServicoDTO.getIdCategoriaServicoPai();
if(categoriaServicoDTO.getIdCategoriaServico() == idCategoriaServico.intValue()){
document.alert(UtilI18N.internacionaliza(request, "categoriaServico.registroPaiIgual"));
return;
}
List<CategoriaServicoDTO> listCategoriaHierarquia = new ArrayList<CategoriaServicoDTO>();
CategoriaServicoDTO beanCategoriaServico = new CategoriaServicoDTO();
beanCategoriaServico.setIdCategoriaServico(categoriaServicoDTO.getIdCategoriaServicoPai());
beanCategoriaServico = (CategoriaServicoDTO) categoriaServicoService.restore(beanCategoriaServico);
categoriaServicoService.listCategoriaHierarquia(beanCategoriaServico, listCategoriaHierarquia);
categoriaServicoDTO.setNomeCategoriaServicoConcatenado(this.nomeConcatenado(listCategoriaHierarquia)+categoriaServicoDTO.getNomeCategoriaServico());
}else{
categoriaServicoDTO.setNomeCategoriaServicoConcatenado(categoriaServicoDTO.getNomeCategoriaServico());
}
categoriaServicoDTO.setIdEmpresa(WebUtil.getIdEmpresa(request));
categoriaServicoService.update(categoriaServicoDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("limpar_LOOKUP_CATEGORIASERVICO()");
document.setBean(new CategoriaServicoDTO());
}
/**
* Seta a data atual na data final ao excluir um registro.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void atualizaData(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CategoriaServicoDTO categoriaServico = (CategoriaServicoDTO) document.getBean();
CategoriaServicoService categoriaServicoService = (CategoriaServicoService) ServiceLocator.getInstance().getService(CategoriaServicoService.class, null);
if (categoriaServico != null && categoriaServico.getIdCategoriaServico() != null) {
if (categoriaServicoService.verificarSeCategoriaPossuiServicoOuSubCategoria(categoriaServico)) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroNaoPodeSerExcluido"));
} else {
categoriaServico.setIdEmpresa(WebUtil.getIdEmpresa(request));
categoriaServico.setDataFim(UtilDatas.getDataAtual());
categoriaServicoService.update(categoriaServico);
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
}
}
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("limpar_LOOKUP_CATEGORIASERVICO()");
}
/**
* Verificar se existe Hierarquia.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void verificaHierarquia(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CategoriaServicoDTO categoriaServicoDTO = (CategoriaServicoDTO) document.getBean();
List<CategoriaServicoDTO> listCategoriaHierarquia = new ArrayList<CategoriaServicoDTO>();
CategoriaServicoService categoriaServicoService = (CategoriaServicoService) ServiceLocator.getInstance().getService(CategoriaServicoService.class, null);
CategoriaServicoDTO beanCategoriaServico = new CategoriaServicoDTO();
beanCategoriaServico.setIdCategoriaServico(categoriaServicoDTO.getIdCategoriaServicoPai());
beanCategoriaServico = (CategoriaServicoDTO) categoriaServicoService.restore(beanCategoriaServico);
categoriaServicoService.listCategoriaHierarquia(beanCategoriaServico, listCategoriaHierarquia);
document.getElementById("nomeCatServicoConcatenado").setValue(this.nomeConcatenado(listCategoriaHierarquia));
}
private String nomeConcatenado(List<CategoriaServicoDTO> listCategoriaHierarquia){
String nomeConcatenado = "";
for (int i = (listCategoriaHierarquia.size()-1); i >= 0 ; i--) {
CategoriaServicoDTO categoriaServicoDTO = listCategoriaHierarquia.get(i);
nomeConcatenado += categoriaServicoDTO.getNomeCategoriaServico()+" - ";
}
return nomeConcatenado;
}
/**
* Restaura os dados ao clicar em um registro.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CategoriaServicoDTO categoriaServicoDTO = (CategoriaServicoDTO) document.getBean();
CategoriaServicoService categoriaServicoService = (CategoriaServicoService) ServiceLocator.getInstance().getService(CategoriaServicoService.class, null);
categoriaServicoDTO = (CategoriaServicoDTO) categoriaServicoService.restore(categoriaServicoDTO);
CategoriaServicoDTO categoriaServicoSuperior = new CategoriaServicoDTO();
if(categoriaServicoDTO.getIdCategoriaServicoPai() != null){
categoriaServicoSuperior.setIdCategoriaServico(categoriaServicoDTO.getIdCategoriaServicoPai());
categoriaServicoSuperior = (CategoriaServicoDTO) categoriaServicoService.restore(categoriaServicoSuperior);
if(categoriaServicoSuperior != null){
categoriaServicoDTO.setNomeCategoriaServicoPai(categoriaServicoSuperior.getNomeCategoriaServico());
}
}
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(categoriaServicoDTO);
//gerarComboCategoriaServicoSuperior(document);
}
/**
* Gera Combo de Categoria de Servi�o Superior.
*
* @param document
* @throws ServiceException
* @throws Exception
*/
@SuppressWarnings("unchecked")
public void gerarComboCategoriaServicoSuperior(DocumentHTML document,HttpServletRequest request) throws ServiceException, Exception {
CategoriaServicoDTO categoriaServicoDTO = (CategoriaServicoDTO) document.getBean();
if (categoriaServicoDTO == null){
categoriaServicoDTO = new CategoriaServicoDTO();
}
CategoriaServicoService categoriaServicoService = (CategoriaServicoService) ServiceLocator.getInstance().getService(CategoriaServicoService.class, null);
HTMLSelect comboCategoriaServicoSuperior = (HTMLSelect) document.getSelectById("idCategoriaServicoPai");
comboCategoriaServicoSuperior.removeAllOptions();
Collection<CategoriaServicoDTO> categoriasServicoSuperior = categoriaServicoService.listHierarquia();
if(categoriaServicoDTO.getIdCategoriaServico() != null && categoriaServicoDTO.getIdCategoriaServico() != 0){
for(CategoriaServicoDTO c : categoriasServicoSuperior){
if(c.getIdCategoriaServico() == categoriaServicoDTO.getIdCategoriaServico().intValue()){
categoriasServicoSuperior.remove(c);
break;
}
}
}
if (categoriasServicoSuperior != null && !categoriasServicoSuperior.isEmpty()) {
comboCategoriaServicoSuperior.addOption("",UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboCategoriaServicoSuperior.addOptions(categoriasServicoSuperior, "idCategoriaServico", "nomeCategoriaServicoNivel", null);
} else {
comboCategoriaServicoSuperior.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
}
}
public Class getBeanClass() {
return CategoriaServicoDTO.class;
}
}