public string Executar(string mensagem, string numeroMensagem, Usuario usuario) { var xml = this.CarregarMensagem <Pollux.MSG0292>(mensagem); List <Intelbras.Message.Helper.Entities.SegmentoComercialItem> lstSeguimentosComerciais = new List <Pollux.Entities.SegmentoComercialItem>(); List <SegmentoComercial> lstSeguimentosComerciaisItens = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ListarTodos(); List <SegmentoComercial> lstSeguimentosComerciaisVinculados = new List <SegmentoComercial>(); if (xml.Conta != null) { lstSeguimentosComerciaisVinculados = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ListarSegmentoPorConta(xml.Conta); } #region Lista if (lstSeguimentosComerciaisItens != null && lstSeguimentosComerciaisItens.Count > 0) { foreach (SegmentoComercial crmItem in lstSeguimentosComerciaisItens) { Pollux.Entities.SegmentoComercialItem objPollux = new Pollux.Entities.SegmentoComercialItem(); objPollux.CodigoSegmentoComercial = crmItem.CodigoSegmento.ToString(); if (crmItem.CodigoSegmentoPai != null) { SegmentoComercial segmentoComercial = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ObterPor(crmItem.CodigoSegmentoPai.Id); objPollux.CodigoSegmentoComercialPai = segmentoComercial.CodigoSegmento.ToString(); } objPollux.NomeSegmentoComercial = crmItem.Nome; objPollux.Ordem = crmItem.Ordem; var vinculo = lstSeguimentosComerciaisVinculados.Select(campo => campo.Id.ToString().ToUpper()).FirstOrDefault(c => c == crmItem.Id.ToString().ToUpper()); //Verifica se já tem vinculo segmento à conta. objPollux.Vinculado = false; if (vinculo != null) { objPollux.Vinculado = true; } lstSeguimentosComerciais.Add(objPollux); } } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Não foram encontrados registros que satisfaçam os critérios de pesquisa."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0292R1>(numeroMensagem, retorno)); } #endregion resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso"; retorno.Add("SegmentosComerciais", lstSeguimentosComerciais); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0292R1>(numeroMensagem, retorno)); }
public string Executar(string mensagem, string numeroMensagem, Usuario usuario) { usuarioIntegracao = usuario; var xml = this.CarregarMensagem <Pollux.MSG0306>(mensagem); var lstOrdenada = xml.SegmentosComerciais.OrderBy(s => s.CodigoSegmentoComercialPai).ThenBy(s => s.TipoSegmentoComercial).ToList(); try { foreach (var item in lstOrdenada) { SegmentoComercial segmentoComercial = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ObterPorCodigo(item.CodigoSegmentoComercial); if (segmentoComercial != null) { if (item.Situacao == (int)Enum.StateCode.Inativo && segmentoComercial.Status == (int)Enum.StateCode.Ativo) { try { new SegmentoComercialService(this.Organizacao, this.IsOffline).Desativar((Guid)segmentoComercial.ID); } catch (Exception ex) { listaErros.Add("Erro ao desativar o Segmento Comercial: " + item.CodigoSegmentoComercial + " Nome: " + item.NomeSegmentoComercial); continue; } } else { if (item.Situacao == (int)Enum.StateCode.Ativo && segmentoComercial.Status == (int)Enum.StateCode.Inativo) { try { new SegmentoComercialService(this.Organizacao, this.IsOffline).Ativar((Guid)segmentoComercial.ID); segmentoComercial = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ObterPorCodigo(item.CodigoSegmentoComercial); } catch (Exception ex) { listaErros.Add("Erro ao ativar o Segmento Comercial: " + item.CodigoSegmentoComercial + " Nome: " + item.NomeSegmentoComercial); continue; } } //Atualiza registro try { segmentoComercial.CodigoSegmento = Convert.ToInt32(item.CodigoSegmentoComercial); if (!string.IsNullOrEmpty(item.CodigoSegmentoComercialPai)) { try { SegmentoComercial obj = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ObterPorCodigo(item.CodigoSegmentoComercialPai); segmentoComercial.CodigoSegmentoPai = new SDKore.DomainModel.Lookup(obj.Id, "itbc_segmentocomercial"); } catch (Exception ex) { listaErros.Add("Erro ao obter o Segmento Comercial Pai: " + item.CodigoSegmentoComercial + " Nome: " + item.NomeSegmentoComercial); continue; } } segmentoComercial.Nome = item.NomeSegmentoComercial; segmentoComercial.Ordem = item.Ordem; segmentoComercial.TipoSegmento = item.TipoSegmentoComercial; new RepositoryService(this.Organizacao, this.IsOffline).SegmentoComercial.Update(segmentoComercial); } catch (Exception ex) { listaErros.Add("Erro ao atualizar o Segmento Comercial Pai: " + item.CodigoSegmentoComercial + " Nome: " + item.NomeSegmentoComercial); continue; } } } else { try { SegmentoComercial obj = new SegmentoComercial(); if (!string.IsNullOrEmpty(item.CodigoSegmentoComercialPai)) { try { SegmentoComercial objSegmentoComercialPai = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ObterPorCodigo(item.CodigoSegmentoComercialPai); obj.CodigoSegmentoPai = new SDKore.DomainModel.Lookup(objSegmentoComercialPai.Id, "itbc_segmentocomercial"); } catch (Exception ex) { listaErros.Add("Erro ao obter o Segmento Comercial Pai: " + item.CodigoSegmentoComercial + " Nome: " + item.NomeSegmentoComercial); continue; } } obj.Nome = item.NomeSegmentoComercial; obj.Ordem = item.Ordem; obj.TipoSegmento = item.TipoSegmentoComercial; obj.CodigoSegmento = Convert.ToInt32(item.CodigoSegmentoComercial); new RepositoryService(this.Organizacao, this.IsOffline).SegmentoComercial.Create(obj); } catch (Exception ex) { listaErros.Add("Erro ao criar o Segmento Comercial Pai: " + item.CodigoSegmentoComercial + " Nome: " + item.NomeSegmentoComercial); continue; } } } List <SegmentoComercial> lstSeguimentosComerciaisItens = new Servicos.SegmentoComercialService(this.Organizacao, this.IsOffline).ListarTodos(); if (lstSeguimentosComerciaisItens != null && lstSeguimentosComerciaisItens.Count > 0) { foreach (SegmentoComercial crmItem in lstSeguimentosComerciaisItens) { if (lstOrdenada.Exists(o => o.CodigoSegmentoComercial == crmItem.CodigoSegmento.ToString()) == false) { try { new SegmentoComercialService(this.Organizacao, this.IsOffline).Desativar((Guid)crmItem.ID); } catch (Exception ex) { listaErros.Add("Erro ao desativar o Segmento Comercial: " + crmItem.CodigoSegmento + " Nome: " + crmItem.Nome); continue; } } } } if (listaErros.Count() == 0) { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso."; } else { resultadoPersistencia.Sucesso = false; StringBuilder sb = new StringBuilder(); sb.Append("Erros apresentados nesta requisição: "); foreach (var mensagemErro in listaErros) { sb.AppendLine(mensagemErro + ";"); } resultadoPersistencia.Mensagem = sb.ToString(); } retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0306R1>(numeroMensagem, retorno)); } catch (Exception e) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0306R1>(numeroMensagem, retorno)); } }