package br.com.centralit.citcorpore.metainfo.complementos;
import java.util.HashMap;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.metainfo.bean.DinamicViewsDTO;
import br.com.centralit.citcorpore.metainfo.bean.VisaoDTO;
import br.com.centralit.citcorpore.metainfo.negocio.DinamicViewsService;
import br.com.centralit.citcorpore.metainfo.negocio.VisaoService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.service.ServiceLocator;
public class ComplementoServicoContrato_Insert {
public String execute(DinamicViewsDTO dinamicViewDto, HashMap mapFields, TransactionControler transactionControler) throws ServiceException, Exception{
Object obj = mapFields.get("IDSERVICO");
String[] idServicos = null;
if (obj != null){
if (String[].class.isInstance(obj)){
idServicos = (String[])obj;
}else if (String.class.isInstance(obj)){
idServicos = new String[1];
idServicos[0] = (String)obj;
}
}
if (idServicos == null){ //Provavelmente nenhum servi�o selecionado.
return "OK";
}
String idContratoStr = (String) mapFields.get("IDCONTRATO");
Integer idContrato = null;
try{
idContrato = Integer.parseInt(idContratoStr);
}catch (Exception e) {
}
if (idContrato == null){
return "ERROR";
}
VisaoService visaoService = (VisaoService) ServiceLocator.getInstance().getService(VisaoService.class, null);
ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
VisaoDTO visaoDto = visaoService.findByIdentificador("Servicos_Contrato");
if (visaoDto != null){
for (int i = 0; i < idServicos.length; i++){
dinamicViewDto.setDinamicViewsIdVisao(visaoDto.getIdVisao());
DinamicViewsService dinamicViewsService = (DinamicViewsService) ServiceLocator.getInstance().getService(DinamicViewsService.class, null);
dinamicViewDto.setAbortFuncaoPrincipal(false);
mapFields.put("IDSERVICO", idServicos[i]);
mapFields.put("IDSERVICOCONTRATO", null);
String idServicoStr = idServicos[i];
Integer idServico = null;
try{
idServico = Integer.parseInt(idServicoStr);
}catch (Exception e) {
}
ServicoContratoDTO servicoContratoDTO = servicoContratoService.findByIdContratoAndIdServico(idContrato, idServico);
if (servicoContratoDTO == null){ //So faz se o servico ainda nao estiver criado para o contrato.
try{
dinamicViewsService.save(null, dinamicViewDto, mapFields, null);
}catch (Exception e) {
e.printStackTrace();
return "ERROR";
}
}
transactionControler.commit();
}
}else{
return "ERROR";
}
return "OK";
}
}